Redbeanco Detailing

Project Status Dashboard

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.

Build progress (by area)
5 done8 in progress1 not started
Next milestone
◆A First production deploy
2026-08-10
Open blockers
7
see Top risks ↓
Production deploy
Not yet
Pre-launch — Tier-1 build complete, not yet deployed
Project pulse
35 commits
59 unit tests passing

Work done by requirement area

DoneA. Landing page / marketing site (Zola SSG)

14 pages, i18n (en/zh/zh-Hant), security headers, dark/gold brand

DoneB. Booking system (form, validation, pricing)

3-step wizard, live pricing from /api/prices, 59 unit tests

PartialC. Payment (Stripe)

Checkout, webhooks, refunds, cancellation done; prod webhook + constant-time sig pending

PartialD. Notifications (SMS/MMS/email, bilingual)

ClickSend + Resend wired; delivery tracking, fallback, ACMA Sender ID pending

PartialE. Staff PWA

Dashboard/surcharge/photos/offline wired; CF Access JWT + ntfy push pending

DoneF. Photo delivery

Dedicated photos worker (R2 presign + upload), MMS + email gallery

DoneG. Data layer (D1)

Schema 001–005, parameterized queries, nanoid IDs, dev + prod DBs

PartialH. Security

Headers + webhook HMAC done; rate-limit, CSP tighten, JWT verify, CI audit pending

DoneI. Developer experience

Nix flake, devenv, SecretSpec, testing runbook, secrets doc

PartialJ. Tier-2 Rust service

Code mostly done (d1/r2 mirror, metrics, config); deploy + cf_metrics stub pending

PartialK. Monitoring

4 Grafana dashboards done; alert rules + ntfy routing pending

PartialL. Testing

59 unit tests, k6 + smoke scripts; no E2E Playwright, no integration suite

PartialM. CI/CD

Workflows exist; no Forgejo remote so CI never run; build-image.yaml missing

Not startedN. Deployment

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.

Workstream / task
W1Jul 14
W2Jul 21
W3Jul 28
W4Aug 4
W5Aug 11
W6Aug 18
W7Aug 25
W8Sep 1
W9Sep 8
W10Sep 15
W11Sep 22
W12Sep 29
CI / Remote
Forgejo repo + push branch
Make ci.yaml green
clippy -D + cargo audit + gitleaks
First green CI + fix flakes
Security
CF Access team domain + audience (ext)
RS256 JWT verify /api/staff/*
Rate limit booking + presign
Tighten CSP off unsafe-inline
Constant-time sig + require secret
R2 policy + presign expiry audit
Security review pass
Infra + Deploy
Public R2 bucket + PHOTOS_PUBLIC_BASE
deploy-secrets to prod
wrangler deploy 4 workers
CF Pages publish (zola-site)
Stripe webhook registration + test
DNS forbrisbane.org + DKIM/SPF
Prod test booking (pay + refund)
Milestone A — first prod deploy
Testing & QA
Playwright scaffold + booking EN e2e
zh + zh-Hant e2e
Staff workflow e2e
Integration suite (Stripe test mode)
k6 load run + tune p95
OWASP ZAP scan + remediate
Fixtures + CI integration
Monitoring
Alert rules (6 rules)
ntfy routing + cron refund alert
CF Dashboard alerts
UptimeRobot
Alert-fire verification
Notifications
Delivery-status tracking
Cross-provider fallback
Staff ntfy push (new bookings)
ACMA Sender ID verification (ext)
Inbound SMS (post-launch deferrable)
Tier-2 (Rust + Garage)
Finish cf_metrics API call
build-image.yaml + registry push
Garage deploy (nixos-redbeanco)
detailing-service.nix + ExternalSecret
ArgoCD deploy + metrics scrape verify
Daily 8am ntfy business summary
D1/R2 mirror verification
Feature gaps
Customer /track?id= status page
Services/pricing explainer page
Form persistence (sessionStorage)
Background Sync device verification
Stale TODO cleanup + Lighthouse
Launch prep
QR code design + order print (ext)
Staff training (PWA walkthrough)
Runbook finalize
Rollback drill
Legal Privacy/ToS EN+ZH verified
Prod e2e test booking (full)
Milestone B — soft launch
Milestone C — public launch

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.

Top risks / blockers

  1. No Forgejo remote — blocks CI, review, and any deploy pipeline.
  2. CF Access team domain + audience needed before staff JWT verification.
  3. R2 public bucket + PHOTOS_PUBLIC_BASE needed before photo delivery in prod.
  4. Stripe webhook endpoint must be registered in the Stripe dashboard for prod.
  5. Background Sync needs a real-device test.
  6. Account readiness: ClickSend Sender ID (ACMA), Resend domain verification, domain DNS — unconfirmed.
  7. devenv up live run — sandbox-specific .envrc store-linking error; confirm on dev machine.

Suggested next steps (prioritized)

  1. Set up Forgejo remote + push review-backend-foundation → unblock CI.
  2. Phase 1 security: CF Access JWT verify, rate limiting, tighten CSP.
  3. Infra + first deploy: R2 bucket, deploy-secrets, wrangler deploy, CF Pages, Stripe webhook, DNS.
  4. Testing: Playwright E2E, k6 to p95 target, OWASP ZAP + cargo audit/clippy in CI.
  5. Monitoring: alert rules + ntfy routing; add ntfy refund-failure alert in cron.
  6. Notifications: delivery-status tracking + cross-provider fallback.
  7. Tier-2: finish cf_metrics, build-image.yaml, deploy Rust service to k3s + Garage.
  8. Cleanup: remove stale TODO comments; verify Lighthouse.
  9. Launch prep: QR print, staff training, rollback drill, prod e2e test booking.