← All templates

Expense Report

Finance · React + Node (Express) · 17 @molecule/* packages

Expensify-like expense management with receipts, approval workflow, policies, and reimbursement tracking — with built-in Stripe-backed subscription tiers

Open in Molecule

What is inside

  • auth
  • file-upload
  • workflow
  • reports
  • import-export
  • subscriptions

Screens (13)

  • Login /login
  • Signup /signup
  • ForgotPassword /forgot-password
  • ResetPassword /reset-password
  • Dashboard /dashboard (signed in)
  • Expenses /expenses (signed in)
  • NewExpense /expenses/new (signed in)
  • Reports /reports (signed in)
  • Approvals /approvals (signed in)
  • Settings /settings (signed in)
  • ReportsList /reports/list (signed in)
  • NewReport /reports/new (signed in)
  • Notifications /notifications (signed in)

Data model (6 tables)

  • devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription
  • expense_policies — id, user_id, name, description, max_amount, categories, requires_receipt_above, auto_approve_below, …
  • expense_reports — id, user_id, submitter_email, approver_id, approver_email, policy_id, title, description, …
  • expenses — id, user_id, report_id, amount, currency, category, date, description, …
  • notifications — id, user_id, type, title, message, report_id, actor, read, …
  • payments — id, createdAt, updatedAt, userId, transactionId, productId, platformKey, data, …

API (9 handlers)

  • \_policy api/src/handlers/_policy.ts
  • \_seed api/src/handlers/_seed.ts
  • approvals api/src/handlers/approvals.ts
  • dashboard api/src/handlers/dashboard.ts
  • expenses api/src/handlers/expenses.ts
  • notifications api/src/handlers/notifications.ts
  • policies api/src/handlers/policies.ts
  • receipts api/src/handlers/receipts.ts
  • reports api/src/handlers/reports.ts

Subscription tiers

free / pro / team — gated by: maxApprovals, maxExpenses, maxPolicies, maxReceipts, advancedFeatures, canExport, retentionDays

Built from 17 @molecule/* packages

Browse all @molecule/* packages →

Required secrets

  • DATABASE_URL PostgreSQL connection string
  • S3_BUCKET S3 bucket for receipt uploads
  • MAILGUN_API_KEY Mailgun API key for approval notifications

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