← All templates

Accounting / Invoicing

Business & SaaS · React + Node (Express) · 19 @molecule/* packages

QuickBooks-like accounting with invoices, expenses, reports, and reconciliation — with built-in Stripe-backed subscription tiers

Open in Molecule

What is inside

  • auth
  • search
  • invoices
  • expenses
  • reports
  • pdf-export
  • reconciliation
  • subscriptions

Screens (18)

  • Landing /
  • Login /login
  • Signup /signup
  • ForgotPassword /forgot-password
  • ResetPassword /reset-password
  • Dashboard /dashboard (signed in)
  • Invoices /invoices (signed in)
  • InvoiceDetail /invoices/:id (signed in)
  • NewInvoice /invoices/new (signed in)
  • Expenses /expenses (signed in)
  • Reports /reports (signed in)
  • Customers /customers (signed in)
  • Settings /settings (signed in)
  • CustomerDetail /customers/:id (signed in)
  • ExpenseDetail /expenses/:id (signed in)
  • NewExpense /expenses/new (signed in)
  • Payments /payments (signed in)
  • Taxes /taxes (signed in)

Data model (13 tables)

  • accounts — id, user_id, code, name, type, description, balance, currency, …
  • customers — id, user_id, company, contact_name, contact_email, contact_phone, address, payment_terms, …
  • devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription
  • expenses — id, user_id, amount_cents, amount, currency, merchant, category, category_color, …
  • invoice_line_items — id, invoice_id, position, description, quantity, unit_price, amount
  • invoice_payments — id, user_id, invoice_id, customer_name, invoice_number, amount_cents, method, reference, …
  • invoices — id, user_id, invoice_number, customer_id, customer_name, status, issue_date, due_date, …
  • notifications — id, user_id, type, title, body, href, unread, created_at
  • payments — id, createdAt, updatedAt, userId, transactionId, productId, platformKey, data, …
  • tax_rates — id, user_id, name, rate_pct, region, is_default, created_at
  • company_profile — user_id, legal_name, billing_email, tax_id, address, default_tax_rate_pct, filing_method, fiscal_year_start, …
  • integrations — id, user_id, name, status, last_synced_at, created_at, updated_at
  • team_members — id, user_id, name, email, role, created_at

API (8 handlers)

  • accounts api/src/handlers/accounts.ts
  • customers api/src/handlers/customers.ts
  • expenses api/src/handlers/expenses.ts
  • invoices api/src/handlers/invoices.ts
  • notifications api/src/handlers/notifications.ts
  • payments api/src/handlers/payments.ts
  • reports api/src/handlers/reports.ts
  • settings api/src/handlers/settings.ts

Subscription tiers

free / pro / team — gated by: maxAccounts, maxExpenses, maxInvoices, advancedFeatures, canExport, retentionDays

Built from 19 @molecule/* packages

Browse all @molecule/* packages →

Required secrets

  • DATABASE_URL PostgreSQL connection string
  • MEILISEARCH_API_KEY MeiliSearch API key
  • MAILGUN_API_KEY Mailgun API key for invoice emails
  • MAILGUN_DOMAIN Mailgun sending domain

The @molecule/* packages are Apache-2.0. The app you build from this template is yours to export and self-host. Licensing