Current state at a glance
Built
- Signup + admin dashboard, live on Render + Neon
- Consent capture + CSV/GeoJSON/KML exports
- Real geocoder (Census + Nominatim + DB cache)
- Persistent DB-backed rate limiting
- JIRA queue replay with backoff + dead-letter
- Email notification code + queue (creds pending)
- Backup/restore tooling + recovery playbook
- Cloudflare Access JWT verification + JSON admin API + CORS + audit trail (ADR-001, env-gated)
- pages-admin/ static dashboard bundle (deploys with Cloudflare)
- Browser automation (Playwright)
459 tests pass +12 browser
Ready to go
- Kickoff email sent — Anderson reviewing briefing
- Browser QA can run anytime
- DNS checks run anytime
- Shopify CTA path is designed
- Email + backups activate the moment credentials land
- pages-admin/ deploys the moment a Cloudflare account exists
Blocked / waiting (Anderson's session)
- Nameserver cutover Namecheap → Cloudflare (walkthrough sent)
- Google Workspace MX/SPF/DKIM/DMARC + SMTP app password
- Waiver legal review (real form live, needs sign-off)
- Admin password handoff by text/call (never email)
- Neon console backup/retention values + uptime monitor account
Not built yet
- Production cutover at leads.bentondrones.com (post-Cloudflare)
- admin.bentondrones.com Pages + Access (post-Cloudflare)
- Shopify App Proxy production (post-launch)
- Internal map UI beyond the admin preview (post-launch)
What you should do next
- Open the full status doc:
docs/current-state-and-next-steps.md. - Capture Namecheap, Google Workspace, and Shopify platform state.
- Create a Cloudflare read-only API token and run
python scripts/check_cloudflare_zone.py. - Add the
leads.bentondrones.comcustom domain on the Render service. - Create the Shopify landing page CTA.
- Only then migrate DNS to Cloudflare.