<aside> <img src="/icons/code_blue.svg" alt="/icons/code_blue.svg" width="40px" />
Configuration Management
Version control, build and release, environments, document control and problem tracking.
</aside>
<aside> <img src="/icons/code_gray.svg" alt="/icons/code_gray.svg" width="40px" />
Repository GitHub Wyco68/CulpritWeb, branch main. A mirror, culpritteam/web, serves the production deployment.
Branches One branch per feature or fix, named feat/, fix/, perf/ or chore/.
Pull requests Features and fixes reach main through pull requests (#1 to #41).
Commit messages Start with feat, fix, perf, build, refactor, docs or revert, so the history reads as a changelog.
</aside>
| Workflow | Trigger | What it does |
|---|---|---|
| Staging pipeline | Every merge to main | Test (lint, type check, unit tests), migrate the database, build and push the Docker image, deploy to the VPS with a 90-second health check and automatic rollback |
| Production release | By hand | Deploy the Vercel project after the change is checked on staging |
| Neon standby sync | Every 6 hours | Mirror Supabase into the Neon standby and check row counts |
| Keep-alive | Daily, Vercel Cron | Keep the free Supabase project from pausing |
| Spec pages | Changes to the spec pages | Publish the project spec pages to GitHub Pages |
| Environment | Address | Runs on | Settings from |
|---|---|---|---|
| Developer machine | localhost:3000 | Node.js | Doppler culprit/stg |
| Staging | culprit.wyco-dev.com | Docker on a VPS, behind Caddy and Cloudflare | Doppler culprit/stg |
| Production | culprits-mystery.party | Vercel, behind Cloudflare | Vercel project settings |
| Standby | None | Neon, database only | Doppler, read by the sync job |
<aside> <img src="/icons/document_blue.svg" alt="/icons/document_blue.svg" width="40px" />
Documents
Follow SE-DOC-000 v3.0: Notion is the primary workspace, approved documents are archived to Google Drive, and every document carries an ID, a version and a status in the Documents register.
</aside>
<aside> <img src="/icons/checkmark_green.svg" alt="/icons/checkmark_green.svg" width="40px" />
Design decisions
Written as ADRs (ADR-001 to ADR-024) and listed in the Decisions register.
</aside>