An operator platform for appointment-based businesses. Capture, nurture, reactivate, review, and convert — on one platform with shared data and workflows.
Status: Reactivation module shipped end-to-end. Modules 1, 3, 4, 5 scoped, architected, and surface-complete. Portfolio build — actively under development.
- Local demo:
npm run devstarts the dashboard app athttp://localhost:3000. - Public demo: not published yet.
- Dashboard route:
/dashboard - Deepest module:
/reactivation
The repo should not be treated as a fully deployed SaaS. It is a portfolio build with a substantial local dashboard and operator-platform architecture, but the public demo and walkthrough still need to be published.
Local appointment businesses (dental, home services, law, fitness, clinics, salons — any business that lives on leads, reviews, and repeat visits) run their growth stack across five disconnected tools: CRM, SMS gateway, review platform, ad accounts, booking tool. Revenue leaks in the gaps — dormant customers never reactivated, reviews never requested, leads followed up too slowly, and no single answer to "what actually drove this month?"
One System is the operator surface that unifies those flows on one shared data model.
Five modules on one platform:
- Lead Capture + Instant Follow-Up — inbound intake, missed-call text-back, qualification, booking handoff
- Database Reactivation — dormant audience selection, cooldown-aware outreach, reply + booking tracking (flagship, fully shipped)
- Reviews & Referrals — post-visit trigger flows, AI-drafted responses, referral loop
- Paid Ads + Lead Nurturing — source attribution, cost-per-booking, nurture sequences
- Sales Enablement — consultation transcripts, objection libraries, post-call follow-up
All five share a single workspace, contact graph, and event timeline.
- Next.js 15 (App Router, server components, server actions) + React 19
- TypeScript strict, Prisma 6 + PostgreSQL for persistence
- Twilio for SMS, Clerk for auth (integration in progress)
- Vercel + Neon for hosting
- Monorepo with isolated domain / database / workflows / integrations / UI packages
apps/
dashboard/ Next.js app (marketing + authed surface)
app/
page.tsx Landing page
pricing/ Pricing page
(app)/ Authed route group
dashboard/ Overview
reactivation/ Flagship module (end-to-end)
leads/ reviews/ ads/ sales/ platform/
components/ Shared UI (Card, MetricCard, Sidebar, Topbar, ...)
api/ HTTP APIs, webhooks
worker/ Durable async execution
packages/
domain/ Canonical entities + business rules
database/ Prisma schema + data access
workflows/ Triggers, sequencing, retries
integrations/ External adapters (Twilio, CRM sync)
messaging/ ai/ analytics/ config/ shared/ ui/
modules/ Module-specific business logic
npm install
npm run db:up # docker postgres
npm run db:push # prisma schema push
npm run dev # dashboard on :3000Env vars live in .env at the repo root. A sample template is in .env.example.
npm run db:generate # generate Prisma client first
npm test # across all workspacesSome integration tests expect a configured DATABASE_URL. The dashboard, domain, database utility, paid ads, reviews/referrals, and sales enablement tests can run locally after Prisma generation; the API integration path needs database configuration.
Warm neutral palette (cream surface, terracotta accent), dark rail sidebar, semantic status colours (green / amber / blue / red with bg variants), DM Sans for UI and data, Georgia for brand headlines. Dark mode included. Tokens in apps/dashboard/app/globals.css.
The first-pass UI was designed in Claude Design; implementation handed off to Claude Code. Source handoff HTML preserved at apps/dashboard/design/One System Dashboard.html for reference.
The platform is deliberately vertical-agnostic — "appointment business" is the archetype, not a specific industry. The same model fits dental practices, chiropractors, physiotherapy, vet clinics, law firms (personal injury), home services (HVAC, roofing), real estate, auto dealerships, salons, fitness studios, and coaching practices. The demo workspace uses generic seed data.
- docs/product-spec.md — full product specification
- docs/architecture.md — platform architecture and reasoning
- docs/roadmap.md — phase-by-phase build plan
- docs/decisions.md — notable architectural decisions
- docs/build-vs-borrow.md — integration vs build choices
- AGENTS.md — working agreement for AI-assisted development
This is a portfolio build — one developer, ~6 months, deliberately disciplined architecture on top of a small real feature surface. The polish target is "near-shippable demo," not "production SaaS."
Current validation caveat: the dashboard build succeeds after Prisma generation, but the full monorepo build still needs cleanup in packages/database/src/seed-demo.ts, and API integration tests need DATABASE_URL. This repo has enough substance to keep polishing, but it should not be pinned until those validation issues and the public demo are fixed.