B&J — database state (v2, verified 2026-05-24) — marketing site is materially read-only
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).
Production tables and row counts
| Table | Row count |
|---|---|
contact_submissions |
0 |
That 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).
What this confirms about the broader engagement
Reinforces 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 B&J data model — first-class entities, including TANKS (the most quotable architecture decision)). 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.
contact_submissions schema (verbatim)
| Column | Type |
|---|---|
id |
bigint |
created_at |
timestamp with time zone |
name |
text |
email |
text |
phone |
text |
message |
text |
source_path |
text |
user_agent |
text |
ip |
inet |
email_status |
text |
email_error |
text |
No lubricants table
The lubricants product / OEM-crosswalk dataset lives in a TypeScript module, not the database. See B&J — lubricants module shape (v2): 81 records in a TS module, deliberately lift-and-shift-ready for the Manifold swap.