Scaffold SvelteKit app with Postgres + deploy to Tailscale funnel #1

Closed
opened 2026-03-13 19:33:51 +00:00 by forgejo_admin · 0 comments

Lineage

plan-2026-03-08-tryout-prep → Phase 6a (SvelteKit scaffold + Postgres + Tailscale funnel)

Repo

forgejo_admin/westside-app

User Story

As an admin or coach
I want to access the westside app at westsidekingsandqueens.tail5b443a.ts.net
So that I have a dedicated URL for the basketball program that shows real player data

Context

The basketball-api Postgres already has 45 players with photos, tryout numbers, payment/waiver status. This app connects directly to that database (cross-namespace: postgres.basketball-api.svc.cluster.local:5432/basketball). No API middleman.

File Targets

Files to create:

  • package.json — SvelteKit + pg dependencies
  • svelte.config.js — Node adapter config
  • src/routes/+page.server.js — Postgres query for players
  • src/routes/+page.svelte — Landing page showing player count
  • src/lib/server/db.js — Postgres connection pool
  • Dockerfile — Node production build
  • k8s/deployment.yaml — k8s deployment with DB env vars
  • k8s/service.yaml — ClusterIP service
  • k8s/ingress.yaml — Tailscale funnel ingress
  • .woodpecker.yaml — CI pipeline

Acceptance Criteria

  • SvelteKit app builds and runs
  • Landing page queries Postgres and shows player count
  • App is live at westsidekingsandqueens.tail5b443a.ts.net

Test Expectations

  • npm run build succeeds
  • Landing page renders player count from real DB
  • Run command: npm run build

Constraints

  • SvelteKit 5 with Node adapter (SSR)
  • Connect to existing basketball-api Postgres cross-namespace
  • Follow service-onboarding-sop for deployment

Checklist

  • PR opened
  • Build succeeds
  • No unrelated changes
  • plan-2026-03-08-tryout-prep — Phase 6a
### Lineage `plan-2026-03-08-tryout-prep` → Phase 6a (SvelteKit scaffold + Postgres + Tailscale funnel) ### Repo `forgejo_admin/westside-app` ### User Story As an admin or coach I want to access the westside app at westsidekingsandqueens.tail5b443a.ts.net So that I have a dedicated URL for the basketball program that shows real player data ### Context The basketball-api Postgres already has 45 players with photos, tryout numbers, payment/waiver status. This app connects directly to that database (cross-namespace: postgres.basketball-api.svc.cluster.local:5432/basketball). No API middleman. ### File Targets Files to create: - `package.json` — SvelteKit + pg dependencies - `svelte.config.js` — Node adapter config - `src/routes/+page.server.js` — Postgres query for players - `src/routes/+page.svelte` — Landing page showing player count - `src/lib/server/db.js` — Postgres connection pool - `Dockerfile` — Node production build - `k8s/deployment.yaml` — k8s deployment with DB env vars - `k8s/service.yaml` — ClusterIP service - `k8s/ingress.yaml` — Tailscale funnel ingress - `.woodpecker.yaml` — CI pipeline ### Acceptance Criteria - [ ] SvelteKit app builds and runs - [ ] Landing page queries Postgres and shows player count - [ ] App is live at westsidekingsandqueens.tail5b443a.ts.net ### Test Expectations - [ ] `npm run build` succeeds - [ ] Landing page renders player count from real DB - Run command: `npm run build` ### Constraints - SvelteKit 5 with Node adapter (SSR) - Connect to existing basketball-api Postgres cross-namespace - Follow service-onboarding-sop for deployment ### Checklist - [ ] PR opened - [ ] Build succeeds - [ ] No unrelated changes ### Related - `plan-2026-03-08-tryout-prep` — Phase 6a
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
forgejo_admin/westside-landing#1
No description provided.