Skip to content

۱۱ — تصمیم‌های باز

هر تصمیم جدید → یک خط در این فایل آپدیت شود.


جدول تصمیمات

#سوالگزینه‌هاپیشنهاد فنیوضعیت
1کلاینت: PWA یا native?PWA / Native / BothPWA برای MVP⬜ باز
2«پرداخت با پز» یعنی چی?(الف) flag دستی وندور / (ب) integration POS بانک(الف) — پیاده شدهpay_at_pickup flag — بدون API بانک
3هر رستوران چند نوع باکس?یک / چند سایز (S/M/L)یک per co-founderیک باکس per vendor per day
4مدل پکیج رستوران برای MVP?flat monthly / commission / hybridcommission 12% (Beta package) — seed داردBeta: commission 12% — مدل ۳-tier نهایی v2
5تایید pickup?کد عددی / QR / manual listکد ۶ رقمی + manualکد ۶ رقمی پیاده شده
6scope لانچ?یک محله / شهر / کشور۲–۳ محله تهران⬜ باز
7سیاست no-show?باکس می‌سوزد / partial refund / …no refund gateway; inventory lost⬜ باز
8قرارداد/مجوز رستوران?informal / legal entity requiredlegal before scale⬜ باز
9نام برند نهایی?حیفه / حیف نشه / تا داره / از دست نده / TakeEatTakeEat / تیک ایت — takeeat.irTakeEat / تیک ایت — takeeat.ir
10اعداد UI?فارسی ۱۲۳ / لاتین 123لاتین for premium fintech feel⬜ باز
11Monorepo: یک Next app یا سه تا?single app route groups / separate appsroute groups leanerیک Next.js app با route groups
11bBackend: Next.js full-stack یا FastAPI?Next.js API Routes / FastAPINext.js — یک زبان، AI-friendlyNext.js full-stack
12JWT storage?httpOnly cookie / localStorage headerhttpOnly saferhttpOnly cookie — پیاده شده
13Timezone?Asia/Tehran everywhereTehran display, UTC storeUTC در DB، fa-IR برای نمایش
14Hold inventory before pay?yes 10min / noyes — prevent overselldecrement بعد از payment OK
15Rating in MVP?yes / nono — v2no — v2
16Real-time order updates?WebSocket / SSE / pollingpolling برای MVPpolling 5s — پیاده شده
17Cancel policy?هر زمان / فقط قبل از تأیید وندورفقط قبل از تأییدcancel فقط وقتی ≤ awaiting_vendor
18Vendor باید سفارش را تأیید کند?بله (awaiting_vendor) / خیر (auto confirm)بله — کیفیت کنترلawaiting_vendor → vendor confirm → confirmed
19اگه وندور هیچ‌وقت تأیید نکند؟timeout + auto-cancel / دستی ادمین / معلق بماندauto-cancel در pickup_startexpireUnconfirmedOrders() در cron — cancel در pickup_start
20refund gateway برای auto-cancel آپ #19؟auto Zarinpal refund / ادمین دستی / بدون refundادمین دستی برای MVPباز — ادمین باید manual refund بزند

جزئیات سوالات کلیدی باز

#1 PWA vs Native

MVP با PWA شروع می‌شود (Next.js). اگر بعد از اعتبارسنجی تقاضا به native نیاز شد:

  • Android: Kotlin + Compose (API Routes موجود = backend)
  • iOS: Swift + SwiftUI

#4 مدل پکیج (MVP بسته شد)

MVP: Beta package با commission: 12% — در seed.ts موجود است.
v2: مدل ۳-tier (پایه/حرفه‌ای/پریمیوم) با flat+commission — بعد از اعتبارسنجی.

TGTG reference: ~$89/year US + per-tx fee.

#6 liquidity

TGTG started with hundreds of restaurants in ONE city before expanding. Empty list kills retention.

Action: sign 5–10 vendors in same neighborhood before public launch.

#9 نام برند — بسته شد

تصمیم: TakeEat (انگلیسی) / تیک ایت (فارسی) — دامنه takeeat.ir

جزئیات و گزینه‌های قبلی: 04-brand-naming.md

Production payment gateway نیاز دارد:

  • ثبت شرکت
  • اینماد
  • قرارداد با رستوران‌ها

MVP sandbox بدون این‌ها کار می‌کند.


Log تصمیمات

تاریخ#تصمیمتوسط
۱۴۰۵/۰۴/۰۳11bNext.js full-stack (بدون FastAPI)co-founder
۱۴۰۵/۰۴/۰۳11یک Next.js app با route groupsco-founder
۱۴۰۵/۰۴/۰۳12JWT در httpOnly cookieفنی — MVP
۱۴۰۵/۰۴/۰۳13UTC در DB، fa-IR نمایشفنی — MVP
۱۴۰۵/۰۴/۰۳14decrement inventory بعد از payment OKفنی — MVP
۱۴۰۵/۰۴/۰۳15بدون rating در MVPco-founder
۱۴۰۵/۰۴/۰۳2pay_at_pickup flag (بدون POS API)فنی — MVP
۱۴۰۵/۰۴/۰۳3یک باکس per vendor per dayco-founder
۱۴۰۵/۰۴/۰۳5کد ۶ رقمی pickupفنی — MVP
۱۴۰۵/۰۴/۰۳16polling 5s به جای WebSocketفنی — MVP
۱۴۰۵/۰۴/۰۳17cancel فقط ≤ awaiting_vendorفنی — UX
۱۴۰۵/۰۴/۰۳18awaiting_vendor مرحله اجباریco-founder
۱۴۰۵/۰۴/۲۱9TakeEat / تیک ایت — takeeat.irco-founder

Blockers — cannot go to production without

  • [ ] #6 launch geography — قبل از public launch
  • [ ] #8 ثبت شرکت + اینماد — برای payment production (gateway → sandbox کافی برای soft launch)
  • [ ] #20 refund خودکار برای auto-cancelled orders (awaiting_vendor timeout)