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
Try it
Opens instantly. Runs on sample data, so changes reset on reload.
What is inside
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 (7 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, …
- user_preferences — user_id, payout_method, notify_submitted, notify_reviewed, notify_reimbursed, notify_policy, created_at, updated_at
API (10 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 - preferences
api/src/handlers/preferences.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
@molecule/api-database-postgresql@molecule/api-email-templates@molecule/api-emails-mailgun@molecule/api-entitlements@molecule/api-image-sharp@molecule/api-import-export-csv@molecule/api-payments-stripe@molecule/api-permissions-custom@molecule/api-reporting-database@molecule/api-resource-payment@molecule/api-resource-user@molecule/api-uploads-s3@molecule/api-workflow-database@molecule/app-billing-react@molecule/app-data-table@molecule/app-date-range-picker@molecule/app-file-upload
Required secrets
DATABASE_URLPostgreSQL connection stringS3_BUCKETS3 bucket for receipt uploadsMAILGUN_API_KEYMailgun 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