Field Service
Business & SaaS · React + Node (Express) · 11 @molecule/* packages
Jobber-like field service management with quotes, job dispatch scheduling, technician assignment, checklists, and invoicing — with built-in Stripe-backed subscription tiers
Try it
Opens instantly. Runs on sample data, so changes reset on reload.
What is inside
Screens (26)
- Landing
/ - Login
/login - Signup
/signup - ForgotPassword
/forgot-password - ResetPassword
/reset-password - Pricing
/pricing - About
/about - Privacy
/privacy - Terms
/terms - Dashboard
/dashboard(signed in) - Customers
/customers(signed in) - NewCustomer
/customers/new(signed in) - CustomerDetail
/customers/:id(signed in) - Quotes
/quotes(signed in) - QuoteNew
/quotes/new(signed in) - QuoteDetail
/quotes/:id(signed in) - QuoteEdit
/quotes/:id/edit(signed in) - Jobs
/jobs(signed in) - JobDetail
/jobs/:id(signed in) - Dispatch
/dispatch(signed in) - Technicians
/technicians(signed in) - Invoices
/invoices(signed in) - InvoiceDetail
/invoices/:id(signed in) - Notifications
/notifications(signed in) - Settings
/settings(signed in) - PlanUpdated
/plan-updated(signed in)
Data model (12 tables)
- customers — id, owner_id, name, email, phone, address, notes, created_at, …
- devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription
- invoice_items — id, invoice_id, description, qty, unit, rate_cents, position, created_at, …
- invoices — id, owner_id, job_id, customer_id, number, status, total_cents, issued_at, …
- job_checklist — id, job_id, label, done, done_at, created_at, updatedAt
- job_notes — id, job_id, author, body, created_at, updatedAt
- jobs — id, owner_id, customer_id, quote_id, title, description, address, scheduled_start, …
- notifications — id, user_id, kind, title, body, link, payload, read_at, …
- payments — id, createdAt, updatedAt, userId, transactionId, productId, platformKey, data, …
- quote_items — id, quote_id, description, qty, unit, rate_cents, position, created_at, …
- quotes — id, owner_id, customer_id, title, status, valid_until, total_cents, notes, …
- technicians — id, owner_id, name, trade, phone, email, skills, active, …
API (9 handlers)
- \_seed
api/src/handlers/_seed.ts - \_shape
api/src/handlers/_shape.ts - customers
api/src/handlers/customers.ts - invoices
api/src/handlers/invoices.ts - jobs
api/src/handlers/jobs.ts - notifications
api/src/handlers/notifications.ts - quotes
api/src/handlers/quotes.ts - settings
api/src/handlers/settings.ts - technicians
api/src/handlers/technicians.ts
Subscription tiers
free / pro / team — gated by: maxCustomers, maxQuotes, maxJobs, maxTechnicians, maxInvoices, advancedFeatures, canExport, retentionDays
Built from 11 @molecule/* packages
@molecule/api-cron-node-cron@molecule/api-database-postgresql@molecule/api-email-templates@molecule/api-emails-mailgun@molecule/api-entitlements@molecule/api-payments-stripe@molecule/api-resource-payment@molecule/api-resource-user@molecule/app-billing-react@molecule/app-notification-feed-react@molecule/app-sidebar-layout-react
Required secrets
DATABASE_URLPostgreSQL connection stringMAILGUN_API_KEYMailgun API key for quote and invoice emailsMAILGUN_DOMAINMailgun sending domainSTRIPE_SECRET_KEYStripe secret API key (sk_test_... in test mode)STRIPE_WEBHOOK_SECRETStripe webhook signing secret (whsec_...)
The @molecule/* packages are Apache-2.0. The app you build from this template is yours to export and self-host. Licensing