← All templates

HR Management

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

BambooHR-like HR system with employee records, PTO, and org chart — with built-in Stripe-backed subscription tiers

Open in Molecule

What is inside

  • auth
  • search
  • employees
  • pto
  • org-chart
  • documents
  • audit-log
  • subscriptions

Screens (16)

  • Login /login
  • Signup /signup
  • ForgotPassword /forgot-password
  • ResetPassword /reset-password
  • Dashboard /dashboard (signed in)
  • Employees /employees (signed in)
  • EmployeeProfile /employees/:id (signed in)
  • OrgChart /org-chart (signed in)
  • PTO /pto (signed in)
  • Documents /documents (signed in)
  • Settings /settings (signed in)
  • Notifications /notifications (signed in)
  • Onboarding /onboarding (signed in)
  • Reports /reports (signed in)
  • Performance /performance (signed in)
  • AddEmployee /employees/new (signed in)

Data model (13 tables)

  • activities — id, actorId, action, resourceType, resourceId, metadata, createdAt
  • activity_seen_status — userId, lastSeenActivityId, updatedAt
  • audit_events — id, user_id, actor_id, table_name, record_id, action, before, after, …
  • departments — id, user_id, name, description, parent_id, head_employee_id, created_at, updated_at, …
  • devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription
  • documents — id, user_id, employee_id, kind, title, category, s3_key, file_url, …
  • employees — id, user_id, employee_number, first_name, last_name, work_email, personal_email, phone, …
  • notifications — id, user_id, kind, title, body, payload, read_at, created_at, …
  • performance_reviews — id, user_id, employee_id, reviewer_id, cycle_id, rating, summary, status, …
  • pto_balances — id, user_id, employee_id, kind, accrued_hours, used_hours, year, policy_id, …
  • pto_policies — id, user_id, name, kind, accrual_rate, max_carryover_hours, effective_date, created_at, …
  • pto_requests — id, user_id, employee_id, kind, start_date, end_date, hours, reason, …
  • review_cycles — id, user_id, name, start_date, end_date, status, created_at, updated_at, …

API (15 handlers)

  • \_decorate api/src/handlers/_decorate.ts
  • \_seed api/src/handlers/_seed.ts
  • audit api/src/handlers/audit.ts
  • dashboard api/src/handlers/dashboard.ts
  • departments api/src/handlers/departments.ts
  • documents api/src/handlers/documents.ts
  • employees api/src/handlers/employees.ts
  • notifications api/src/handlers/notifications.ts
  • onboarding api/src/handlers/onboarding.ts
  • org-tree api/src/handlers/org-tree.ts
  • performance api/src/handlers/performance.ts
  • profile api/src/handlers/profile.ts
  • pto api/src/handlers/pto.ts
  • reports api/src/handlers/reports.ts
  • reset-password api/src/handlers/reset-password.ts

Subscription tiers

free / pro / team — gated by: maxDepartments, maxDocuments, maxEmployees, maxPto, advancedFeatures, canExport, retentionDays

Built from 20 @molecule/* packages

Browse all @molecule/* packages →

Required secrets

  • DATABASE_URL PostgreSQL connection string
  • MEILISEARCH_API_KEY MeiliSearch API key
  • S3_BUCKET S3 bucket for document uploads
  • MAILGUN_API_KEY Mailgun API key
  • 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