Road to Production
The single ordered plan to launch — what to do next, across all three tracks
This section answers one question: "what do I do next?" All remaining work falls into three tracks that use different resources, so they can run in parallel — but within each track, order matters.
| Track | Nature | Who/what does it | Detail page |
|---|---|---|---|
| A — Catalog operations | Not coding: scrape every shop, review products, build the catalog | You, in the admin UI, in daily batches | Catalog |
| B — Code quality | Engineering debt: fixes, refactors, tests | Implementation PRs, one plan phase per PR | Quality |
| C — Launch features | Product features required before real users arrive | Implementation PRs, one feature per PR | Features |
How the tracks interleave
Track A is human time and has no code dependencies until late (image re-upload, cron) — run a catalog review batch every day regardless of where tracks B/C stand. Tracks B and C share the codebase: finish B's security phases (0–4) before starting C, because features built on an insecure auth layer get rebuilt twice.
Milestones
Each milestone has an exit gate. Don't start the next one's coding work until the gate is met (catalog batches always continue).
M0 — Stable base (~1–2 days)
Nothing ships from a red pipeline.
- Track B: Phase 0 — CI green (e2e selector fixes, drop
--fixfrom lint) and Phase 1 — secrets fail-fast. - Track A: finalize the category tree and spec templates (Catalog §1) — renaming categories after 2,000 reviews is misery.
Gate: CI fully green on main; booting prod without JWT_SECRET crashes; category/spec structure frozen.
M1 — Secure, tested core (~1 week)
- Track B: Phase 2 — test harness, Phase 3 — auth hygiene, Phase 4 — security patch set, plus the vulnerability bumps from Phase 7 (mailer, multer, next).
- Track A: start the per-shop runbook on drone-fpv-racer.com; daily review batches.
Gate: authorization regression suites green in CI; no password hash on request.user; pnpm audit --prod has 0 critical.
M2 — Catalog ready (~2–4 weeks, mostly Track A elapsed time)
- Track A: both existing shops fully scraped, reviewed and imported; catalog meets the quality bar.
- Track C: the two coding tasks Track A depends on — re-upload scraped images to S3 at import and
PriceHistoryrecording (Catalog §6). - Track B (background, parallel): Phase 5 — data access and Phase 6 — backend quality module by module; Phase 8 — frontend quick wins.
Gate: catalog quality bar met for DFR + studiosport; no scraped image hotlinked from shop domains; price snapshots accruing.
M3 — Private beta (~2–3 weeks of PRs)
- Track C: all beta blockers — notifications seam, email verification, transactional emails, deal expiry, legal pages, SEO, password change + account deletion, and the "new price" comparison differentiator.
- Track B: the ops half of Phase 7 — health endpoint, Sentry (API + scraper), scheduled-jobs module, backups, uptime monitoring.
- Track A: third shop (lacameraembarquee.fr) in review.
Gate: the launch checklist user-visible items done; invite 10–20 FPV pilots; watch Sentry.
M4 — Public launch
- Track C: fast-follow features driven by beta feedback — favorites, report listing, fair-price guidance.
- Track B: finish Phases 5/6/8 sweeps; grep gates clean repo-wide.
- Track A: shops 4–5; weekly re-scrape cadence running on cron.
Gate: beta feedback triaged, no P0/P1 open, backups tested with a restore, then open registration.
Working rhythm
- Daily: one catalog review batch (Track A) — this is the long pole; consistency beats intensity.
- Per PR: exactly one plan phase step or one feature. Run the verification gates before merge. Implementer agents get the relevant conventions doc plus the single spec page for the step — not the whole docs site.
- Weekly: check
pnpm audit --prod, CI health, and update the milestone status here (edit this page — it's the tracker).
Status
| Milestone | Status | Notes |
|---|---|---|
| M0 — Stable base | ⬜ | |
| M1 — Secure core | ⬜ | |
| M2 — Catalog ready | ⬜ | |
| M3 — Private beta | ⬜ | |
| M4 — Public launch | ⬜ |