← All templates

Sports League

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

ESPN fantasy-like app with teams, schedules, scores, and standings — with built-in Stripe-backed subscription tiers

Open in Molecule

What is inside

  • auth
  • search
  • realtime
  • calendar
  • reporting
  • notifications
  • subscriptions

Screens (18)

  • Landing /
  • Login /login
  • Signup /signup
  • ForgotPassword /forgot-password
  • ResetPassword /reset-password
  • Standings /standings (signed in)
  • Teams /teams (signed in)
  • TeamDetail /teams/:id (signed in)
  • Matches /matches (signed in)
  • MatchDetail /matches/:id (signed in)
  • PlayerDetail /players/:id (signed in)
  • Settings /settings (signed in)
  • Dashboard /dashboard (signed in)
  • Players /players (signed in)
  • Stats /stats (signed in)
  • Schedule /schedule (signed in)
  • Profile /profile (signed in)
  • Notifications /notifications (signed in)

Data model (12 tables)

  • devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription
  • divisions — id, league_id, name, conference, created_at, updated_at
  • favorite_teams — id, user_id, team_id, created_at
  • game_events — id, game_id, occurred_at, period, game_clock, type, team_id, player_id, …
  • games — id, league_id, season, week, home_team_id, away_team_id, scheduled_at, date, …
  • leagues — id, name, sport, season, division_count, status, owner_user_id, created_at, …
  • notifications — id, user_id, type, title, body, href, read, created_at
  • player_stats — id, match_id, player_id, team_id, points, assists, rebounds, fouls, …
  • players — id, team_id, first_name, last_name, name, jersey_number, position, height, …
  • roster_entries — id, team_id, player_id, joined_at, left_at, role, created_at
  • teams — id, league_id, division_id, name, abbreviation, city, logo_url, primary_color, …
  • payments — id, createdAt, updatedAt, userId, transactionId, productId, platformKey, data, …

API (11 handlers)

  • \_seed api/src/handlers/_seed.ts
  • \_test api/src/handlers/_test.ts
  • favorite-teams api/src/handlers/favorite-teams.ts
  • notifications api/src/handlers/notifications.ts
  • players api/src/handlers/players.ts
  • profile api/src/handlers/profile.ts
  • schedule api/src/handlers/schedule.ts
  • scores api/src/handlers/scores.ts
  • standings api/src/handlers/standings.ts
  • stats api/src/handlers/stats.ts
  • teams api/src/handlers/teams.ts

Subscription tiers

free / pro / team — gated by: maxSchedule, maxScores, maxStandings, maxTeams, advancedFeatures, canExport, retentionDays

Built from 17 @molecule/* packages

Browse all @molecule/* packages →

Required secrets

  • DATABASE_URL PostgreSQL connection string
  • MEILISEARCH_API_KEY MeiliSearch API key

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