13 KiB
🚀 Dealix — حزمة الإطلاق النهائية (نفّذ هذه الآن)
هدف الجلسة: من Partially Ready → REVENUE VERIFIED خلال 90 دقيقة. ترتيب التنفيذ: من أعلى لأسفل — لا تتجاوز خطوة.
⏰ الجدول الزمني (90 دقيقة)
| الوقت | الخطوة | المدة |
|---|---|---|
| 0–5 دقائق | Security (Phase 0) | 5 |
| 5–25 دقيقة | Railway deploy (Phase 1) | 20 |
| 25–40 دقيقة | Moyasar setup (Phase 2) | 15 |
| 40–55 دقيقة | 1 SAR test (Phase 3) | 15 |
| 55–70 دقيقة | UptimeRobot + Sentry (Phase 5) | 15 |
| 70–90 دقيقة | First LinkedIn DM (Phase 7) | 20 |
🔴 PHASE 0 — SECURITY (5 دقائق)
A) احذف GitHub Token المكشوف
- افتح: https://github.com/settings/tokens
- ابحث عن
ghp_SEFH2559EQpaqZ6... - اضغط عليه → Delete
- ✅ تم
B) Rotate PostHog API Key
- افتح: https://app.posthog.com/settings/project
- Project API Keys → Rotate (أو Generate New)
- انسخ الـ key الجديد (سنضعه في Railway في Phase 1)
- ✅ تم
🟡 PHASE 1 — RAILWAY DEPLOY (20 دقيقة)
A) Generate Production Secrets (من طرفك، 3 دقائق)
افتح Terminal أي جهاز Python فيه، ولّد 3 secrets:
python3 -c "import secrets; print('APP_SECRET_KEY=' + secrets.token_hex(32))"
python3 -c "import secrets; print('MOYASAR_WEBHOOK_SECRET=' + secrets.token_hex(32))"
python3 -c "import secrets; print('ADMIN_TOKEN=' + secrets.token_hex(16))"
احفظهم في ملف محلي آمن (ليس في chat).
B) Railway Dashboard (15 دقيقة)
-
افتح: https://railway.com/project/54bb60b4-d059-4dd1-af57-bc44c702b9f0
-
Settings → Deploy:
- Start Command: امسحه تماماً (اتركه فارغ)
- Watch Paths: يتركه الافتراضي
- احفظ
-
Settings → Networking:
- Generate Public Domain (إذا لم يولّد)
- انسخ الـ URL الناتج: سيكون بشكل
https://dealix-production-XXXX.up.railway.app
-
Variables → Raw Editor → الصق هذا (عدّل القيم):
# ── Runtime ────────────────────────────────────────────
ENVIRONMENT=production
APP_ENV=production
LOG_LEVEL=INFO
# ── Security (use the 3 values you just generated) ─────
APP_SECRET_KEY=<الـ hex من الخطوة A>
ADMIN_TOKEN=<الـ hex من الخطوة A>
# ── Database (Railway auto-adds this if Postgres service added) ─
DATABASE_URL=${{Postgres.DATABASE_URL}}
# ── Public URL (ضع URL الـ Railway من خطوة 3) ────────
APP_URL=https://dealix-production-XXXX.up.railway.app
PUBLIC_BASE_URL=https://dealix-production-XXXX.up.railway.app
# ── Moyasar (سنحدّثها في Phase 2) ────────────────────
MOYASAR_SECRET_KEY=sk_live_REPLACE_IN_PHASE_2
MOYASAR_WEBHOOK_SECRET=<الـ hex من الخطوة A>
# ── PostHog (الـ key الجديد من Phase 0-B) ─────────────
POSTHOG_API_KEY=phc_<الـ key الجديد>
POSTHOG_HOST=https://us.i.posthog.com
# ── CORS (لـ GitHub Pages + future domain) ────────────
CORS_ORIGINS=https://voxc2.github.io,https://dealix.sa,https://www.dealix.sa,http://localhost:3000
# ── Calendly ──────────────────────────────────────────
CALENDLY_URL=https://calendly.com/sami-assiri11/dealix-demo
# ── Sentry (optional لكن موصى به) ─────────────────────
SENTRY_DSN=
# ── CI/Deploy markers ─────────────────────────────────
GIT_COMMIT=f0a97677c1
BUILD_VERSION=3.1.0
-
احفظ → Review changes → Deploy
-
راقب Deployments tab:
- انتظر Status =
Active(2–4 دقائق) - إذا
Failed: افتح Logs، ابعث screenshot لي
- انتظر Status =
-
رد بـ:
RAILWAY DEPLOYED
URL: https://dealix-production-XXXX.up.railway.app
C) Smoke Test (من طرفي فوراً بعد استلام URL)
سأشغّل:
curl -i https://<url>/healthz
curl -i https://<url>/api/v1/pricing/plans
توقع: 200 + JSON في كلاهما.
🟠 PHASE 2 — MOYASAR (15 دقيقة)
قبل أن تبدأ: Phase 1 يجب أن يكون Active ✅.
-
API Keys (Settings → API Keys):
- انسخ الـ
secret_key(يبدأ بـsk_live_...) - ⚠️ إذا لديك secret قديم مسرّب: اضغط Rotate/Regenerate
- لا تلصق الـ secret هنا — مباشرة إلى Railway
- انسخ الـ
-
Railway → Variables → RAW Editor:
- بدّل
MOYASAR_SECRET_KEY=sk_live_REPLACE_IN_PHASE_2 - بالـ secret الحقيقي
sk_live_xxxxxxxxxxxxx - احفظ → سيُعيد deploy تلقائياً
- بدّل
-
Moyasar Dashboard → Developers → Webhooks → Add Webhook:
- URL:
https://<railway-url>/api/v1/webhooks/moyasar - Secret: نفس قيمة
MOYASAR_WEBHOOK_SECRETفي Railway (الـ hex اللي ولّدته في Phase 1-A) - Events: ✅
payment_paid✅payment_failed✅payment_refunded - Save
- URL:
-
Moyasar Webhooks → اضغط Send Test Event على الـ webhook اللي أنشأته
-
رد بـ:
MOYASAR WEBHOOK SAVED
TEST EVENT SENT
🟢 PHASE 3 — 1 SAR E2E TEST (15 دقيقة)
A) Create Invoice (من Terminal)
# استبدل <RAILWAY_URL> بـ URL الفعلي
RAILWAY_URL="https://dealix-production-XXXX.up.railway.app"
curl -X POST "$RAILWAY_URL/api/v1/checkout" \
-H "Content-Type: application/json" \
-d '{
"plan": "pilot_1sar",
"email": "sami.assiri11@gmail.com"
}'
توقع:
{
"invoice_id": "inv_xxxx",
"status": "initiated",
"amount_sar": 1.0,
"payment_url": "https://invoice.moyasar.com/invoices/inv_xxxx",
"plan": "pilot_1sar"
}
B) Pay 1 SAR
- افتح
payment_urlفي المتصفح - ادفع ببطاقتك الحقيقية (Visa/Mada — 1 ريال فقط)
- أو استخدم بطاقة اختبار Moyasar:
- Card:
4111 1111 1111 1111 - CVV:
123| Expiry:12/30| OTP:1234
- Card:
C) Verify Round-Trip (من Terminal)
# 1. Check Moyasar dashboard → payment status = paid
# 2. Check Railway logs:
# Railway → Deployments → View Logs → look for "moyasar_webhook_processed"
D) رد بـ:
PAID 1 SAR
MOYASAR STATUS: paid
WEBHOOK LOGGED: yes/no
🔵 PHASE 5 — MONITORING (15 دقيقة)
A) UptimeRobot (5 دقائق)
- افتح: https://uptimerobot.com (signup مجاني إذا ما عندك حساب)
- Dashboard → + Add New Monitor
- املأ:
- Monitor Type: HTTP(s)
- Friendly Name:
Dealix Backend Health - URL:
https://<railway-url>/healthz - Monitoring Interval: 5 minutes
- Alert Contacts: Email + SMS (رقم جوالك)
- Create Monitor
- Test: اضغط Send Test Alert على الـ contact
- رد:
UPTIME MONITOR ACTIVE
B) Sentry (10 دقائق)
- افتح: https://sentry.io → Project settings → SDK Setup
- انسخ الـ DSN (يبدأ بـ
https://...@...ingest.sentry.io/...) - Railway → Variables: بدّل
SENTRY_DSN=بـ الـ DSN الحقيقي → Redeploy - افتح Sentry → Settings → Integrations → Slack → Install
- Authorize → اختر channel
#dealix-alerts(أو أنشئه) - Alerts → Create Alert Rule:
- When: Event level ≥ error
- Then: Send Slack notification
- Test:
(يجب أن يرجع 500 error)curl -H "X-Admin-Token: <ADMIN_TOKEN_من_Railway>" \ https://<railway-url>/_test_sentry - انتظر 60 ثانية — يجب أن يصل alert في Slack
- رد:
SENTRY ALERT RECEIVED
📋 PHASE 6 — Manual CRM (3 دقائق)
- افتح Google Sheets جديد
- اسم الـ sheet:
Dealix Pipeline — 2026 - الصق هذه الأعمدة:
Lead | Company | Segment | Source | LinkedIn | Email | Phone | Status | Last Touch | Next Touch | Demo Date | Plan | Expected Value | Payment Status | Notes
- احفظ → شاركه مع نفسك (bookmark)
- رد:
CRM SHEET READY
🟣 PHASE 7 — First LinkedIn DM (20 دقيقة)
A) Open LinkedIn + find Abdullah
- افتح: https://linkedin.com
- ابحث في الـ search bar:
Abdullah Al-Assiri Lucidya - افتح profile الـ CEO
B) Send This Exact Message (Arabic, ≤ 300 chars)
إذا Connect + Note:
السلام عليكم أستاذ عبدالله،
أنا سامي العسيري — مؤسس Dealix.
بنيت أول AI sales rep بالعربي الخليجي الحقيقي.
يرد على leads خلال 45 ثانية، يؤهّل BANT، يحجز demos.
Lucidya رائدة CXM — فريقك يستحق هذا الدعم.
عرض: pilot بـ 1 ريال × 7 أيام.
voxc2.github.io/dealix
تستحق 20 دقيقة demo؟
إذا متصلين أصلاً (Direct DM):
السلام عليكم أستاذ عبدالله،
أنا سامي العسيري من الرياض — مؤسس Dealix.
قرابة الاسم جعلتني أبدأ بك قبل أي أحد.
بنيت Dealix كأول AI sales rep بالعربي الخليجي الحقيقي — مش ترجمة.
يرد على leads خلال 45 ثانية، يؤهّل BANT، يحجز demos 24/7.
Lucidya تقود سوق CXM في المنطقة، وفريق BDR عندكم يستحق هذا المستوى من الأتمتة.
عرض خاص: Pilot بـ 1 ريال × 7 أيام (استرداد كامل لو ما أعجبك).
تستحق 20 دقيقة demo الأسبوع؟
الثلاثاء 10 ص أو الخميس 2 ظ؟
📅 https://calendly.com/sami-assiri11/dealix-demo
🌐 https://voxc2.github.io/dealix/
شاكر وقتك،
سامي
C) Send → Log → Schedule Follow-ups
-
اضغط Send على LinkedIn
-
افتح CRM sheet → أضف صف:
- Lead: عبدالله العسيري
- Company: Lucidya
- Segment: SaaS Enterprise
- Source: LinkedIn — Surname affinity
- Status: DM Sent
- Last Touch: [تاريخ اليوم]
- Next Touch: [تاريخ +2 يوم]
-
أضف Calendar reminders:
- +2 days: Follow-up #1 (bump)
- +5 days: Follow-up #2 (value-add)
- +10 days: Follow-up #3 (breakup)
-
رد:
DM SENT
D) Follow-up Messages (جاهزين — ارسلهم حسب الجدول)
+2 days (if no reply):
أستاذ عبدالله،
رسالتي قبل يومين. أفترض الانشغال.
سؤال واحد: في Lucidya، كم متوسط زمن الرد الأولي على leads جديدة؟
أي إجابة تساعدني.
سامي
+5 days:
أستاذ عبدالله،
إحصائية Gartner 2025: 42% من B2B leads في السعودية تُفقد بسبب تأخر الرد.
في شركة بحجم Lucidya، كل lead ضائع = عشرات الآلاف سنوياً.
Dealix يحل هذا تحديداً — 45 ثانية، 24/7.
رابط الباقات: voxc2.github.io/dealix/pricing.html
سامي
+10 days (final):
أستاذ عبدالله،
آخر رسالة مني.
إذا تغيرت الظروف خلال السنة، رد على أي رسالة سابقة، سأعود في نفس اليوم.
بالتوفيق لـ Lucidya،
سامي
📊 Running Checklist
PHASE 0 — Security
[ ] GitHub token deleted
[ ] PostHog key rotated
PHASE 1 — Railway
[ ] Secrets generated
[ ] Start Command cleared
[ ] Env vars pasted
[ ] Deploy Active
[ ] URL captured: _______________
[ ] /healthz = 200
[ ] /api/v1/pricing/plans = 200
PHASE 2 — Moyasar
[ ] Moyasar secret_key rotated (if needed)
[ ] Railway var updated
[ ] Webhook added with URL + secret
[ ] Test event sent
PHASE 3 — 1 SAR Test
[ ] Checkout invoice created
[ ] Payment link opened
[ ] 1 SAR paid
[ ] Moyasar shows paid
[ ] Webhook logged in Railway
PHASE 5 — Monitoring
[ ] UptimeRobot monitor active
[ ] Test alert received
[ ] Sentry DSN in Railway
[ ] Sentry → Slack configured
[ ] Test error triggered
[ ] Slack alert received
PHASE 6 — CRM
[ ] Google Sheet created
[ ] Columns set
PHASE 7 — First DM
[ ] LinkedIn DM sent to Abdullah Al-Assiri
[ ] Logged in CRM
[ ] Calendar reminders set
🚨 إذا علقت في أي خطوة
أرسل لي:
- اسم الخطوة (Phase X.Y)
- Screenshot من الـ error
- الرسالة بالضبط
أحلّها في دقائق.
✅ Definition of DONE
LAUNCH READY عند:
- Railway domain captured
- /healthz = 200 + /api/v1/pricing/plans = 200
REVENUE READY عند:
- إضافة Moyasar webhook + secret rotated + checkout يعمل
REVENUE VERIFIED عند:
- 1 SAR paid + webhook logged + Moyasar shows paid
ACQUISITION STARTED عند:
- DM مُرسل + CRM مُحدّث + Follow-ups مُجدولة
الوقت الكلي: 90 دقيقة. ابدأ من Phase 0. أنا جاهز للـ smoke tests فور استلام Railway URL.