Transit Tracker

Civic · React + Node (Express) · 8 @molecule/* packages

Citymapper-like transit tracker with stops, routes, live arrival boards (simulated feed), service alerts, and a trip planner — with built-in Stripe-backed subscription tiers

Open in Molecule

Try it

Opens instantly. Runs on sample data, so changes reset on reload.

Open preview in a new tab ↗View workspace ↗

What is inside

Screens (16)

  • Landing /
  • Login /login
  • Signup /signup
  • ForgotPassword /forgot-password
  • ResetPassword /reset-password
  • Nearby /nearby (signed in)
  • StopBoard /stops/:code (signed in)
  • RouteDetail /lines/:code (signed in)
  • TripPlanner /plan (signed in)
  • Alerts /alerts (signed in)
  • SavedStops /saved (signed in)
  • Settings /settings (signed in)
  • PlanUpdated /plan-updated (signed in)
  • About /about
  • Privacy /privacy
  • Terms /terms

Data model (9 tables)

  • devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription
  • transit_lines — code, name, kind, color, polyline, created_at
  • transit_stops — code, name, lat, lng, hub, created_at
  • transit_stop_positions — line_code, stop_code, sequence, travel_seconds_from_prev
  • transit_schedules — id, line_code, direction, first_departure, last_departure, headway_seconds
  • transit_alerts — id, line_code, severity, title, body, starts_at, ends_at, created_at
  • saved_stops — id, user_id, stop_code, created_at
  • payments — id, createdAt, updatedAt, userId, transactionId, productId, platformKey, data, …
  • notifications — id, user_id, type, title, body, icon, read, created_at

API (8 handlers)

  • \_seed api/src/handlers/_seed.ts
  • alerts api/src/handlers/alerts.ts
  • arrivals api/src/handlers/arrivals.ts
  • network api/src/handlers/network.ts
  • notifications api/src/handlers/notifications.ts
  • preferences api/src/handlers/preferences.ts
  • saved-stops api/src/handlers/saved-stops.ts
  • trips api/src/handlers/trips.ts

Built from 8 @molecule/* packages

Browse all @molecule/* packages →

Required secrets

  • DATABASE_URL PostgreSQL connection string
  • STRIPE_SECRET_KEY Stripe secret API key (sk_test_... in test mode)
  • STRIPE_WEBHOOK_SECRET Stripe webhook signing secret (whsec_...)

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