← All templates

Fleet Management

Operations & IoT · React + Node (Express) · 22 @molecule/* packages

Samsara-like fleet management with vehicles, routes, maintenance scheduling, and driver management — with built-in Stripe-backed subscription tiers

Open in Molecule

What is inside

  • auth
  • search
  • realtime
  • map
  • calendar
  • reporting
  • alerts
  • subscriptions

Screens (18)

  • Landing /
  • Login /login
  • Signup /signup
  • ForgotPassword /forgot-password
  • ResetPassword /reset-password
  • Dashboard /dashboard (signed in)
  • Vehicles /vehicles (signed in)
  • VehicleDetail /vehicles/:id (signed in)
  • Drivers /drivers (signed in)
  • Maintenance /maintenance (signed in)
  • Alerts /alerts (signed in)
  • Reports /reports (signed in)
  • Settings /settings (signed in)
  • DriverDetail /drivers/:id (signed in)
  • Routes /routes (signed in)
  • Trips /trips (signed in)
  • Geofences /geofences (signed in)
  • MaintenanceDetail /maintenance/:id (signed in)

Data model (14 tables)

  • alerts — id, owner_id, kind, severity, vehicle_id, driver_id, message, occurred_at, …
  • devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription
  • driver_hours — id, driver_id, hours, date, notes, created_at, updatedAt
  • drivers — id, owner_id, user_id, name, email, phone, license_number, license_expiry, …
  • fleet_routes — id, owner_id, name, vehicle_id, driver_id, scheduled_date, status, total_distance, …
  • geofences — id, owner_id, name, kind, polygon_json, alert_on_enter, alert_on_exit, min_lat, …
  • maintenance_records — id, owner_id, vehicle_id, type, kind, description, scheduled_date, scheduled_at, …
  • notifications — id, user_id, kind, title, body, link, payload, read_at, …
  • payments — id, createdAt, updatedAt, userId, transactionId, productId, platformKey, data, …
  • route_stops — id, route_id, sequence, address, latitude, longitude, estimated_arrival, actual_arrival, …
  • trip_events — id, trip_id, kind, occurred_at, latitude, longitude, payload, created_at, …
  • trips — id, owner_id, vehicle_id, driver_id, route_id, started_at, ended_at, distance_km, …
  • vehicle_locations — id, vehicle_id, latitude, longitude, speed, heading, timestamp, created_at, …
  • vehicles — id, owner_id, name, vin, license_plate, make, model, year, …

API (11 handlers)

  • \_seed api/src/handlers/_seed.ts
  • \_shape api/src/handlers/_shape.ts
  • alerts api/src/handlers/alerts.ts
  • drivers api/src/handlers/drivers.ts
  • geofences api/src/handlers/geofences.ts
  • maintenance api/src/handlers/maintenance.ts
  • notifications api/src/handlers/notifications.ts
  • reports api/src/handlers/reports.ts
  • routes api/src/handlers/routes.ts
  • trips api/src/handlers/trips.ts
  • vehicles api/src/handlers/vehicles.ts

Subscription tiers

free / pro / team — gated by: maxDrivers, maxMaintenance, maxRoutes, maxVehicles, advancedFeatures, canExport, retentionDays

Built from 22 @molecule/* packages

Browse all @molecule/* packages →

Required secrets

  • DATABASE_URL PostgreSQL connection string
  • MEILISEARCH_API_KEY MeiliSearch API key
  • MAILGUN_API_KEY Mailgun API key for maintenance alerts
  • 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