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.