Status as of 2026-07-13 · branch review-backend-foundation
The Tier-1 customer, staff, payment, notification and photo-delivery surface is functionally complete and locally verified (59 unit tests, site builds, Nix + SecretSpec validated). What remains is security hardening, automated E2E/load/security tests, alert rules, the Tier-2 deploy, and an actual production deployment — plus wiring up a Forgejo remote so CI/deploy can run.
Work done by requirement area
14 pages, i18n (en/zh/zh-Hant), security headers, dark/gold brand
3-step wizard, live pricing from /api/prices, 59 unit tests
Checkout, webhooks, refunds, cancellation done; prod webhook + constant-time sig pending
ClickSend + Resend wired; delivery tracking, fallback, ACMA Sender ID pending
Dashboard/surcharge/photos/offline wired; CF Access JWT + ntfy push pending
Dedicated photos worker (R2 presign + upload), MMS + email gallery
Schema 001–005, parameterized queries, nanoid IDs, dev + prod DBs
Headers + webhook HMAC done; rate-limit, CSP tighten, JWT verify, CI audit pending
Nix flake, devenv, SecretSpec, testing runbook, secrets doc
Code mostly done (d1/r2 mirror, metrics, config); deploy + cf_metrics stub pending
4 Grafana dashboards done; alert rules + ntfy routing pending
59 unit tests, k6 + smoke scripts; no E2E Playwright, no integration suite
Workflows exist; no Forgejo remote so CI never run; build-image.yaml missing
Nothing deployed; D1/R2 created, secrets not pushed, DNS/webhook pending
Remaining work — Gantt (W1 Jul 14 → W12 Sep 29)
Red bars and red ◆ markers are the critical path. The same chart is on the Roadmap page.
Critical path
The launch-critical sequence is: WS1 (Forgejo + CI) → WS3 (Infra + first deploy, ends at ◆A) → WS4 (Testing & QA) → WS9 (Launch prep, ends at ◆B soft launch and ◆C public launch).
WS2 (security) runs in parallel but must complete before ◆C. If the Cloudflare Access team-domain / audience info is delayed, WS2's JWT task becomes critical — chase it in W1.
- WS1 Forgejo remote + CI activation
- WS2 Phase-1 security hardening
- WS3 Infra + first production deploy
- WS4 Testing & QA
- WS5 Monitoring & alerts
- WS6 Notifications polish
- WS7 Tier-2 Rust service + Garage
- WS8 Feature gaps + cleanup
- WS9 Launch prep
Top risks / blockers
- No Forgejo remote — blocks CI, review, and any deploy pipeline.
- CF Access team domain + audience needed before staff JWT verification.
- R2 public bucket +
PHOTOS_PUBLIC_BASEneeded before photo delivery in prod. - Stripe webhook endpoint must be registered in the Stripe dashboard for prod.
- Background Sync needs a real-device test.
- Account readiness: ClickSend Sender ID (ACMA), Resend domain verification, domain DNS — unconfirmed.
devenv uplive run — sandbox-specific.envrcstore-linking error; confirm on dev machine.
Full detail: Status Report · Roadmap & Gantt · Implementation Phases