Static browser portal for league users to view:
- Scheduled pickleball games
- Recent scores
- Leaderboard chart/table
Access is controlled by a league passcode. No user login/signup is required.
- Plain HTML/CSS/JavaScript
- Supabase (views as data source)
- GitHub Pages (auto-deploy via GitHub Actions)
site/index.htmlUI layoutsite/styles.cssvisual designsite/app.jsSupabase + filtering logicsite/config.jsenvironment and column mapping.github/workflows/deploy-pages.ymldeployment workflow
Edit site/config.js and fill in:
supabaseUrlsupabaseAnonKey- view names and column names under
views
This app is preconfigured for your described views:
- passcode view:
public.passcodeleagueid - scheduled games view:
vw_schdlgames - scores view:
vw_rpt_ldrboardfiltered withis_planned = false - leaderboard: computed in app from scores using
wins(primary) thenpoints(tiebreak)
formid and league_id are treated as equivalent identifiers in your data model.
- User enters passcode.
- App looks up league in passcodes view.
- App filters all other views by league/form.
- User can additionally filter by team search/dropdown.
Leaderboard rows are generated from the score rows for the selected league:
- Group score rows by team.
- Sum
winsandpointsfor each team. - Sort by
winsdescending. - Break ties with
pointsdescending.
- Push to
main. - In GitHub repo settings, enable Pages and select GitHub Actions as source.
- Workflow
Deploy GitHub Pagespublishessite/.
Current setup is intentionally simple. Passcode validation is client-side via Supabase view. For stronger protection later, move passcode verification to a Supabase Edge Function and return only scoped data.