Skip to content

۱۹ — Production Launch Checklist

قبل از باز کردن app.takeeat.ir برای عموم — همه موارد زیر را tick کنید.


#موردوضعیتیادداشت
1ثبت شرکت / شخص حقوقیبرای Zarinpal production و قرارداد رستوران
2اینماد (enamad.ir)دامنه باید HTTPS + از ایران در دسترس باشد
3قرارداد با رستوران‌هاحداقل informal قبل از scale — جزئیات در 11-open-decisions #8
4صفحات قانونی در سایتحریم خصوصی، شرایط استفاده (v2 اگر نبود)

اینماد — فلو خلاصه

  1. ثبت‌نام در enamad.ir با دامنه takeeat.ir
  2. اطمینان از HTTPS روی takeeat.ir و app.takeeat.ir (Caddy + Arvan CDN)
  3. قرار دادن فایل/کد تأیید در root سایت (مثل IRNIC verify)
  4. بعد از تأیید، badge اینماد در footer لندینگ

→ جزئیات DNS/SSL: 18-deploy-and-dns.md


۲. Payment (Zarinpal)

#موردenv
1Merchant ID production از ZarinpalZARINPAL_MERCHANT_ID
2Sandbox خاموشZARINPAL_SANDBOX=false
3Callback URL prodZARINPAL_CALLBACK_URL=https://app.takeeat.ir/api/payments/zarinpal/callback
4تست end-to-end: سفارش → pay → awaiting_vendor → vendor confirm → confirmedدستی
5refund دستی برای auto-cancel (#20)ادمین /admin/orders → refund

نکته: auto-cancel وقتی وندور تا pickup_start تأیید نکند → cancelled + refund خودکار نیست — ادمین باید manual refund بزند.


۳. SMS (Panelchi)

#موردenv
1API key فعالPANELCHI_API_KEY
2شماره خطPANELCHI_SOURCE_NUMBER
3پترن OTP (اختیاری ولی توصیه)PANELCHI_OTP_PATTERN=takeeat-otp
4Dev mode خاموشSMS_DEV_MODE=false
5تست OTP واقعی روی ۲–۳ شمارهscripts/test-otp-send.sh
6تست SMS سفارش (vendor + client)flow کامل سفارش

→ قالب‌ها: 10-sms-notifications.md


۴. Infrastructure

#موردمقدار prod
1URL اپhttps://app.takeeat.ir
2NEXT_PUBLIC_APP_URLhttps://app.takeeat.ir
3BLOCK_SEARCH_INDEXINGfalse (برخلاف stage)
4DNS app.takeeat.ir → سرور prodArvan CDN A/CNAME
5SSL origin + CDNscripts/obtain-origin-certs.sh
6JWT_SECRET تصادفی 64+ charopenssl rand -base64 48
6bJWT_REFRESH_SECRET جدا از accessopenssl rand -base64 48
7CRON_SECRET تصادفیheader x-cron-secret (POST)
8Postgres backup روزانهcron pg_dump21-ops-runbook.md
9GitHub Environment production + required reviewerقبل از deploy

→ Deploy: 18-deploy-and-dns.md — workflow deploy-prod.yml


۵. Product readiness

#مورد
1حداقل ۵–۱۰ وندور در ۲–۳ محله نزدیک (#6)
2smoke test کامل — 14-smoke-test-playbook.md
3e2e: npm run test:e2e
4vendor onboarding آماده — 20-vendor-onboarding.md
5co-founder می‌داند refund دستی چطور کار می‌کند

۶. Security (pre-launch)

#موردتأیید
1SMS_DEV_MODE=false
2JWT_SECRET + JWT_REFRESH_SECRET تصادفی (نه placeholder)
3Admin password bcrypt (login once یا scripts/migrate-admin-passwords.ts)
4Security headers فعال (Next.js + Caddy HSTS)
5Gateway callback → awaiting_vendor (نه مستقیم confirmed)
6npm run test:ci green

۷. Go / No-go

SignalGoNo-go
Payment prod تست شده≥ ۳ سفارش واقعی موفقcallback fail
SMS deliveryOTP + vendor SMS ≤ ۳۰sfail مکرر
Vendor liquidity≥ ۵ باکس فعال در یک محلهلیست خالی
Legal minimumاینماد + sandbox→prod gatewayبدون HTTPS

۷. روز لانچ

□ deploy prod (GitHub Actions → approval)
□ smoke: home → box → pay → vendor confirm → pickup
□ مانیتور لاگ ۳۰ دقیقه اول: journalctl -u takeeat
□ یک سفارش real با co-founder
□ اعلام soft launch به وندورهای signed