← All templates

Payroll Manager

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

Gusto-like payroll management with employees, pay runs, tax calculations, and compliance reports — with built-in Stripe-backed subscription tiers

Open in Molecule

What is inside

  • auth
  • permissions
  • audit-log
  • reports
  • import-export
  • subscriptions

Screens (19)

  • Landing /
  • Login /login
  • Signup /signup
  • ForgotPassword /forgot-password
  • ResetPassword /reset-password
  • Dashboard /dashboard (signed in)
  • Employees /employees (signed in)
  • EmployeeDetail /employees/:id (signed in)
  • PayRuns /pay-runs (signed in)
  • RunPayroll /run-payroll (signed in)
  • PayStub /pay-stub/:id (signed in)
  • TaxCenter /taxes (signed in)
  • Reports /reports (signed in)
  • Settings /settings (signed in)
  • PayRunDetail /pay-runs/:id (signed in)
  • AuditLog /audit-log (signed in)
  • Notifications /notifications (signed in)
  • Billing /settings/billing (signed in)
  • Profile /profile (signed in)

Data model (11 tables)

  • employees — id, user_id, first_name, last_name, email, title, department, salary, …
  • pay_runs — id, user_id, pay_period_start, pay_period_end, pay_date, employee_count, total_gross, total_taxes, …
  • pay_stubs — id, user_id, pay_run_id, employee_id, employee_name, gross, federal_tax, state_tax, …
  • deductions — id, user_id, employee_id, name, type, amount, is_percentage, is_pretax, …
  • tax_brackets — id, year, filing_status, min_income, max_income, rate, created_at
  • tax_withholdings — id, user_id, employee_id, federal_allowances, state_allowances, additional_withholding, exempt, created_at, …
  • audit_log — id, actor, action, resource, resource_id, details, ip, user_agent, …
  • payments — id, createdAt, updatedAt, userId, transactionId, productId, platformKey, data, …
  • notifications — id, user_id, category, title, body, href, unread, created_at
  • company_settings — id, user_id, legal_name, ein, address, fiscal_year, cadence, cycle_end_day, …
  • devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription

API (11 handlers)

  • \_seed api/src/handlers/_seed.ts
  • audit-log api/src/handlers/audit-log.ts
  • company-settings api/src/handlers/company-settings.ts
  • deductions api/src/handlers/deductions.ts
  • employees api/src/handlers/employees.ts
  • notifications api/src/handlers/notifications.ts
  • pay-runs api/src/handlers/pay-runs.ts
  • pay-stubs api/src/handlers/pay-stubs.ts
  • reports api/src/handlers/reports.ts
  • taxes api/src/handlers/taxes.ts
  • users-2fa api/src/handlers/users-2fa.ts

Subscription tiers

free / pro / team — gated by: maxDeductions, maxEmployees, maxPayRuns, maxTaxes, advancedFeatures, canExport, retentionDays

Built from 17 @molecule/* packages

Browse all @molecule/* packages →

Required secrets

  • DATABASE_URL PostgreSQL connection string
  • ENCRYPTION_KEY AES key for encrypting SSN/tax data
  • MAILGUN_API_KEY Mailgun API key for pay stub emails

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