Phased delivery (original plan)
- Step 1 — All screens designed (marketing + booking + dashboard).
- Step 2 — Parallel implementation: web + Expo.
- Step 3 — Backend API (shared contracts, validators).
- Step 4 — Integration, E2E, payment and webhook hardening.
- Step 5 — Deploy and operate through Apr 2027.
Sprint map (2 weeks each)
From ~May 2026 to Jan 2027 ≈ sixteen sprints. Themes can shift; keep at
least two sprints of buffer before the first Shahi Snan
traffic spike.
| # |
Theme |
| 1 | Discovery, IA, wireframes (all flows) |
| 2 | High-fidelity UI; freeze URL patterns + API list |
| 3 | Monorepo, Neon, Drizzle, auth foundation |
| 4 | Catalog read path (web + mobile + API) |
| 5 | Stalls + maps (read-only) |
| 6 | Cart + booking + pilgrim validation |
| 7 | Stripe checkout + payment rows |
| 8 | Webhooks + email confirmation + booking status |
| 9 | Dashboard, profile, reviews |
| 10 | Pind Pradanam + Shahi Snan date rules |
| 11 | Water orders + ops notifications |
| 12 | Push reminders + scheduled jobs |
| 13 | Integration hardening, E2E, load on checkout |
| 14 | Security review, logging, rate limits |
| 15 | Content freeze, SEO, analytics, store submissions |
| 16 | Go-live buffer, smoke tests, on-call runbooks |
Fastest MVP (vertical slice)
- Monorepo + Neon + Drizzle: users, packages, bookings, pilgrims, payments.
- Auth: phone OTP + session; minimal profile.
- One bookable SKU (e.g. Ganga Aarti or single Shahi Snan package) on web + Expo.
- Checkout with Stripe + webhook → confirmed + Resend email.
- User bookings list.
- Read-only nearest stall (seed data).
- Then: ancestors, puja types, water orders, WhatsApp automation, full marketing pages.
Third-party integrations (priority)
| Pri |
Service |
Role |
| P0 | Neon PostgreSQL | Primary database |
| P0 | Stripe | Payments + webhooks |
| P0 | Resend | Transactional email |
| P0 | Cloudflare R2 | Images / assets |
| P1 | Google Maps Platform | Web embed + mobile maps |
| P1 | WhatsApp Business API | Confirmations (provider TBD) |
| P2 | Sentry (or similar) | Error monitoring |
| P2 | Analytics | Plausible / GA4 |
| P2 | Redis (optional) | Rate limits / OTP cooldown |
CI/CD
- GitHub Actions: lint, typecheck, test, Turborepo build on PR.
- Web: deploy to Vercel on main (preview on PR).
- API: Docker + Fly.io deploy; migrate DB on release job.
- Mobile: EAS Build on tags or main; submit to stores via EAS Submit.
-
Single-host (optional) — consolidated Docker Compose on one
EC2/VPS: see
Single-host deployment (plan
and phased rollout; default remains split hosting above).
Risks & mitigations
| Risk |
Mitigation |
| Duplicate / failed Stripe webhooks |
Idempotent handlers; store event or payment external id |
| Peak traffic during Snan |
Cache catalog; connection pooling; queue non-critical work |
| WhatsApp template delays |
Start WABA early; email always works as fallback |
| PII / compliance |
Data minimization; access logs; clear retention policy |
| Auth drift web vs mobile |
Single documented session model; shared API tests |
Open decisions (capture when resolved)
- WhatsApp provider (Meta Cloud vs BSP).
- Guest checkout vs login-required before pay.
- Admin panel in v1 vs DB + scripts.
- Hindi (or multi-language) scope for launch.