← All templates

Property Management

Real Estate & Travel · React + Node (Express) · 20 @molecule/* packages

Buildium-like property management with units, tenants, maintenance requests, and accounting — with built-in Stripe-backed subscription tiers

Open in Molecule

What is inside

  • auth
  • notifications
  • payments
  • reports
  • subscriptions

Screens (17)

  • Landing /
  • Login /login
  • Signup /signup
  • ForgotPassword /forgot-password
  • ResetPassword /reset-password
  • Dashboard /dashboard (signed in)
  • Properties /properties (signed in)
  • PropertyDetail /properties/:id (signed in)
  • Tenants /tenants (signed in)
  • Maintenance /maintenance (signed in)
  • Finances /finances (signed in)
  • Settings /settings (signed in)
  • TenantDetail /tenants/:id (signed in)
  • MaintenanceDetail /maintenance/:id (signed in)
  • Leases /leases (signed in)
  • Reports /reports (signed in)
  • Notifications /notifications (signed in)

Data model (13 tables)

  • devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription
  • documents — id, user_id, kind, title, s3_key, parent_table, parent_id, uploaded_at
  • expenses — id, user_id, property_id, kind, amount, currency, occurred_at, vendor, …
  • leases — id, user_id, unit_id, tenant_id, secondary_tenant_ids, start_date, end_date, monthly_rent, …
  • maintenance_messages — id, user_id, maintenance_request_id, author_user_id, body, attachments, created_at
  • maintenance_requests — id, user_id, property_id, unit_id, tenant_id, title, description, priority, …
  • notifications — id, createdAt, updatedAt
  • payments — id, createdAt, updatedAt, userId, transactionId, productId, platformKey, data, …
  • properties — id, user_id, name, address, city, state, postal_code, country, …
  • rent_invoices — id, user_id, lease_id, tenant_id, period_start, period_end, due_at, amount, …
  • rent_payments — id, user_id, rent_invoice_id, tenant_id, lease_id, amount, currency, kind, …
  • tenants — id, user_id, property_id, unit_id, first_name, last_name, email, phone, …
  • units — id, user_id, property_id, unit_number, bedrooms, bathrooms, sqft, monthly_rent, …

API (10 handlers)

  • dashboard api/src/handlers/dashboard.ts
  • finances api/src/handlers/finances.ts
  • leases api/src/handlers/leases.ts
  • maintenance api/src/handlers/maintenance.ts
  • notifications api/src/handlers/notifications.ts
  • payments api/src/handlers/payments.ts
  • properties api/src/handlers/properties.ts
  • reports api/src/handlers/reports.ts
  • tenants api/src/handlers/tenants.ts
  • units api/src/handlers/units.ts

Subscription tiers

free / pro / team — gated by: maxLeases, maxMaintenance, maxPayments, maxProperties, maxTenants, maxUnits, advancedFeatures, canExport, retentionDays

Built from 20 @molecule/* packages

Browse all @molecule/* packages →

Required secrets

  • DATABASE_URL PostgreSQL connection string
  • STRIPE_SECRET_KEY Stripe API secret key
  • MAILGUN_API_KEY Mailgun API key for notifications
  • S3_BUCKET S3 bucket for documents and photos

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