create-crm-starter
v0.1.30
Published
Interactive scaffolder for Next.js home-services CRMs (HVAC, Plumbing, Electrical, general).
Maintainers
Readme
create-crm-starter
Interactive scaffolder for Next.js 15 home-services CRMs — HVAC, plumbing, electrical, and general field-service businesses. Answer a few questions and it assembles a runnable, branded CRM with realistic demo data.
npx create-crm-starter my-crmThink create-t3-app, but for home-services CRMs: a base Next.js app plus opt-in feature modules and industry presets that pick sensible defaults.
Stack: Next.js 15 + Better-Auth + Postgres (Neon) + Drizzle — own your data, no vendor lock-in, one isolated database per client.
What you get
- Customers, Jobs, Calendar/Dispatch — real CRUD, drag-drop scheduling, a job status pipeline.
- Estimates, Invoices, Payments — Stripe Checkout + webhook reconciliation, a public pay page.
- Price Book, Service Plans, Checklists — catalog-driven line items and field checklists.
- Comms — Twilio SMS (two-way inbox) + business-number calling + Resend email. Each client connects their own Twilio account in-app via Admin → Settings (no env editing).
- Reviews, Reporting, Landing page with an online booking widget.
- Industry presets — HVAC, plumbing, electrical, cleaning, landscaping, roofing, general — each sets brand colors, service types, and the right extra modules.
- Optional field-tech iPhone app (Expo) — a branded app for technicians: today's schedule, job detail with Navigate/Call, status updates, photo + signature capture, push notifications, clock in/out, checklists, in-field invoicing + take payment, an estimate builder, and a two-way SMS inbox. Ships with a JSON API + token auth wired into the generated CRM.
- Realistic seed data so
pnpm devshows a populated dashboard on first run.
The flow
npx create-crm-starter my-crm asks for: project name, industry, branding
(name, colors, logo), which modules you want, user roles (admin / tech /
office), the first admin, whether to seed demo data, and your deploy target — then
writes a tailored project you can pnpm dev immediately.
One-command deploy (Neon + Vercel + admin)
At the end of the wizard it asks "Deploy to Vercel now?" — say yes and it
creates a Neon Postgres database, deploys to Vercel (production), applies the
schema, creates the owner's admin login, and prints the live URL. Needs
NEON_API_KEY + VERCEL_TOKEN (it reads them from your environment, or prompts).
Deploy (or re-deploy) an already-scaffolded project anytime:
NEON_API_KEY=… VERCEL_TOKEN=… npx create-crm-starter deploy [dir] --name my-crm
# --url https://clientdomain.com once their custom domain points at VercelScaffold health check
Every scaffold ends with an automatic per-module health check — it verifies
each module produced its key files and wiring, prints a ✓/✗ table, and writes
SCAFFOLD-REPORT.md + .crm-scaffold.json into the project. A broken module is
caught at scaffold time, not minutes later in next build.
Re-run it anytime against a project (after edits, before deploy):
npx create-crm-starter doctor [dir] # defaults to the current directory
# --strict exits non-zero on any failure (for CI / automated runs)Scaffolding flags: --no-verify skips the check; --strict aborts the scaffold
if any module fails.
Upgrading a delivered project
When you fix a bug in the scaffold and want it in an already-delivered client
CRM, run upgrade inside that project:
npx create-crm-starter upgrade [dir]
npx create-crm-starter upgrade --dry-run # preview the changes firstIt regenerates the latest template from the project's saved scaffold config and
only updates files you never customized. Any file you edited that the
scaffold also changed is written as <file>.new for you to merge — it never
overwrites your work. package.json deps and .env.example keys are merged
additively; your .env.local and database are never touched. Re-run doctor
afterward, and pnpm db:push if it flags a schema change.
Per-client delivery
This tool is built to spin up a separate CRM per client (one scaffold →
one Vercel deploy → one Postgres database, fully isolated). The generated
project ships its own README hand-off checklist, and the repo's
DEPLOYMENT.md is the agency zero-to-live runbook (Neon + Vercel, env vars,
Stripe/Twilio webhooks, and the per-client iPhone-app build).
Requirements
- Node ≥ 18.18
- A package manager (pnpm recommended). For the Drizzle stack: a Postgres database (Neon, Supabase, RDS, or the included docker-compose).
License
MIT © Doug Allen
