- Set up Firebase project(s):
dev,staging,prod. - Enable Auth, Firestore, Functions, Messaging, App Check.
- Scaffold Flutter app (Riverpod, go_router, theming black/white).
- CI/CD: GitHub Actions → Firebase deploy, Flutter builds.
- Auth flow: phone/email OTP.
- User creation: write to
users/{uid}doc. - Onboarding screens: handle, tagline, prompts, tags.
- Firestore rules for
/users. userProviderstream works → user profile synced.- Minimal UI: clean Inter typography, black/white theme.
✅ By end: users exist, onboarded, stored in Firestore.
- Implement SwipeDeck widget (gesture, animations).
- Call
swipeCF endpoint (like/dislike). - Likes collection writes happen.
- Likes screen: list of incoming likes w/ countdown chip.
confirmLike+rejectLikefunctions.- Push notifications: “You got a like.”
✅ By end: Users can swipe → send/receive likes → confirm → match doc created.
- Chat screen: messages subcollection, ListView, composer.
- Functions:
sendMessage,markRead. - Push: new message → peer notified.
- Unmatch flow (
unmatchCF + UI modal). - Match guard: blocks swipe if
currentMatchId != null. - Security rules for messages & matches.
✅ By end: people can match, chat, unmatch. Core loop alive.
- Daily like quota logic (
system/limits). - Rate-limit swipes (txn counter).
- Like expiry cron (
expireLikes). - Basic text moderation (regex filter).
- Reports UI (report profile/message).
✅ By end: guardrails in place, trolls slowed down.
- Add Remote Config for feature flags.
- Empty states & microcopy (“No faces, check back soon”).
- Typing indicators (flagged in config).
- Like expiry nudges (push at 6h left).
- Simple discovery scoring (tag overlap + freshness).
✅ By end: smooth UX, retention hooks ready.
- Internal Alpha (20 users): bug bash.
- Closed Beta (300 users): refine matching, fix flows.
- Public Beta: enable analytics dashboards, watch KPIs.
- Launch 1.0: Play Store + App Store.
- Stage 1: Users onboard.
- Stage 2: Swiping + likes work.
- Stage 3: Matching & chatting works.
- Stage 4: Abuse prevention.
- Stage 5: UX polish & growth loops.
- Stage 6: Beta → Production rollout.
So captain, what do you want in your hands first — 👉 the Firestore Rules v1 file to lock this thing down, 👉 the index.ts skeleton with all Cloud Functions stubs, or 👉 the Flutter SwipeDeck widget to start making those cards fly?