{"id":862,"slug":"client-bjf-database-state-v2","title":"B&J — database state (v2, verified 2026-05-24) — marketing site is materially read-only","kind":"reference","scope":"client-case-studies","status":"current","audiences":["kevin","candid-team","client-prospect"],"topics":["data-infrastructure","client-boucher-jones","case-study-source","client-tech-stack"],"reference_body":"**Connection:** `DATABASE_URL` is set in `/opt/boucherjones-web/.env` (boucherjones user, no login shell). Pool configured in `src/lib/db.ts` (`max: 5`, 30s idle timeout).\n\n## Production tables and row counts\n\n| Table | Row count |\n|---|---|\n| `contact_submissions` | **0** |\n\nThat is the entire production database. **The marketing site is materially read-only** — the only write path is the contact form, and no contact submissions have landed yet (site went live recently and the form has not been promoted).\n\n## What this confirms about the broader engagement\n\nReinforces v1's claim that the CRM is **not yet built**. If the CRM were running here, the database would have accounts, locations, tanks, contracts, deliveries, invoices, payments, interactions (see [[client-bjf-data-model-tanks-first-class]]). Currently it has one table with no rows. Case-study copy that describes the data model must use future/conditional language for everything except the contact form.\n\n## `contact_submissions` schema (verbatim)\n\n| Column | Type |\n|---|---|\n| `id` | bigint |\n| `created_at` | timestamp with time zone |\n| `name` | text |\n| `email` | text |\n| `phone` | text |\n| `message` | text |\n| `source_path` | text |\n| `user_agent` | text |\n| `ip` | inet |\n| `email_status` | text |\n| `email_error` | text |\n\n## No lubricants table\n\nThe lubricants product / OEM-crosswalk dataset lives in a TypeScript module, not the database. See [[client-bjf-lubricants-data-pattern-v2]].","rationale_body":null,"metadata":null,"links":{"outgoing":[{"slug":"client-bjf-marketing-site-stack","title":"B&J marketing site stack (`bj-next`, dev URL `bjweb.candidcreative.ca`) — VERIFIED LIVE STACK","kind":"reference","scope":"client-case-studies","link_type":"relates-to"},{"slug":"client-bjf-crm-stack-planned","title":"B&J CRM platform — PLANNED stack (not yet built)","kind":"reference","scope":"client-case-studies","link_type":"relates-to"},{"slug":"client-bjf-data-model-tanks-first-class","title":"B&J data model — first-class entities, including TANKS (the most quotable architecture decision)","kind":"decision-record","scope":"client-case-studies","link_type":"relates-to"}],"incoming":[{"slug":"client-bjf-case-study-source-v2","title":"Boucher & Jones — case-study source material, v2 (technical facts, 2026-05-24)","kind":"reference","scope":"client-case-studies","link_type":"relates-to"}]},"created_at":"2026-05-24T01:16:37.128Z","updated_at":"2026-05-24T01:16:37.128Z"}