Westside Kings & Queens — SvelteKit frontend with SQLite
  • Svelte 64.3%
  • CSS 31%
  • JavaScript 2.9%
  • Swift 1.4%
  • HTML 0.2%
  • Other 0.1%
Find a file
2026-03-28 22:13:30 +00:00
ios feat: add Capacitor iOS native shell (#83) 2026-03-26 04:20:21 +00:00
k8s deploy: update image to pipeline #85 build (v2) (#106) 2026-03-27 05:52:06 +00:00
src fix: filter teams by division field from API response (#156) 2026-03-28 21:40:04 +00:00
static fix: enforce admin-only access on /admin routes and teams controls (#132) 2026-03-28 17:11:38 +00:00
.claude-no-enforce feat: SPA rebuild — adapter-static + keycloak-js + 13 routes (#37) 2026-03-18 06:40:55 +00:00
.current-issue fix: enforce admin-only access on /admin routes and teams controls (#132) 2026-03-28 17:11:38 +00:00
.gitignore Scaffold SvelteKit app with Postgres + deploy to Tailscale funnel (#2) 2026-03-13 19:39:27 +00:00
.sops.yaml Add Keycloak OIDC login with role-based route guards (#9) 2026-03-14 18:58:11 +00:00
.woodpecker.yaml fix: add retry loop to CI wget for update-kustomize-tag (#148) 2026-03-28 20:01:56 +00:00
capacitor.config.ts feat: add Capacitor iOS native shell (#83) 2026-03-26 04:20:21 +00:00
Dockerfile feat: port 3000, Stripe redirect, tryout date fix (#52) 2026-03-19 01:35:39 +00:00
jsconfig.json Scaffold SvelteKit app with Postgres + deploy to Tailscale funnel (#2) 2026-03-13 19:39:27 +00:00
nginx.conf feat: port 3000, Stripe redirect, tryout date fix (#52) 2026-03-19 01:35:39 +00:00
package-lock.json feat: add Capacitor iOS native shell (#83) 2026-03-26 04:20:21 +00:00
package.json feat: add Capacitor iOS native shell (#83) 2026-03-26 04:20:21 +00:00
README.md docs: portfolio-facing README rewrite (#158) 2026-03-28 22:13:30 +00:00
svelte.config.js feat: SPA rebuild — adapter-static + keycloak-js + 13 routes (#37) 2026-03-18 06:40:55 +00:00
vite.config.js feat: SPA rebuild — adapter-static + keycloak-js + 13 routes (#37) 2026-03-18 06:40:55 +00:00

westside-landing — Westside Kings & Queens Web Platform

Full-stack web platform for a youth basketball organization serving 80+ families across two divisions. Handles public-facing marketing, player registration, coach tooling, contract e-signing, and payment scheduling — replacing a patchwork of Google Forms and GroupMe threads with a single unified experience.

Live: westsidekingsandqueens.tail5b443a.ts.net

Stack

Layer Technology
Framework SvelteKit 2 (adapter-static, SPA mode)
Auth Keycloak SSO (OpenID Connect)
Serving Nginx on Alpine (Docker)
Backend basketball-api (FastAPI + PostgreSQL)
Deploy Woodpecker CI, Kustomize, ArgoCD on k3s
Infra Tailscale funnel for ingress + TLS (no cert-manager)

Features

Public pages — Landing, about, staff directory, team rosters, tryout info, sponsors, schedule, gear shop.

Registration — Multi-step player sign-up with division selection, jersey sizing, and parent contact capture. Feeds directly into the admin CRM.

Coach dashboards — Roster views, player details, and division-filtered team management for coaching staff.

Admin CRM — Player search, status tracking, and bulk management. Contract and payment visibility per player.

Contract e-signing — Digital offer letters with signature capture. Players and parents sign on-device; status flows back to admin views. Backed by westside-contracts.

Payment scheduling — Stripe Checkout integration for registration fees with installment support.

Keycloak SSO — Branded login with custom theme. Role-based access (admin, coach, player) with automatic redirect for protected routes.

Project Structure

src/routes/
  (public)/     Landing, about, staff, teams, tryouts, schedule, sponsors, gear
  (app)/        Auth-gated: admin, coach, players, register, checkout, jersey
static/         Team photos, logos, sponsor assets
k8s/            Kustomize overlays (dev, prod)

Development

npm install
npm run dev          # http://localhost:5174
npm run build        # Static build to /build
npm run preview      # Preview production build

Requires PUBLIC_API_URL and PUBLIC_KEYCLOAK_URL environment variables pointing at running instances of basketball-api and Keycloak.

  • basketball-api — FastAPI backend, PostgreSQL, player/team/contract domain
  • westside-contracts — Contract e-signing service (SvelteKit, adapter-node, direct Postgres)
  • pal-e-platform — Infrastructure bootstrap (Tailscale, Forgejo, Woodpecker, ArgoCD)