Digital contract signing for Westside Kings & Queens basketball
  • Svelte 50.8%
  • CSS 28.3%
  • TypeScript 19.1%
  • Dockerfile 0.7%
  • HTML 0.6%
  • Other 0.5%
Find a file
ldraney 03c9d8d228 fix: show Queens logo on girls contracts
Use mobile-optimized queens-logo-400w from MinIO CDN for girls
contract pages instead of the combined Kings & Queens static logo.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-28 13:35:44 -06:00
kustomize feat: scaffold westside-contracts SvelteKit app (#2) 2026-03-24 07:56:41 +00:00
src fix: show Queens logo on girls contracts 2026-03-28 13:35:44 -06:00
static feat: scaffold westside-contracts SvelteKit app (#2) 2026-03-24 07:56:41 +00:00
tests fix: deduplicate validation logic and guard JSON parse (#27) 2026-03-27 22:00:15 +00:00
.gitignore feat: scaffold westside-contracts SvelteKit app (#2) 2026-03-24 07:56:41 +00:00
.woodpecker.yaml fix: Kaniko skip-push-permission-check (#193) (#24) 2026-03-27 05:21:00 +00:00
Dockerfile feat: scaffold westside-contracts SvelteKit app (#2) 2026-03-24 07:56:41 +00:00
package-lock.json feat: scaffold westside-contracts SvelteKit app (#2) 2026-03-24 07:56:41 +00:00
package.json feat: scaffold westside-contracts SvelteKit app (#2) 2026-03-24 07:56:41 +00:00
README.md feat: scaffold westside-contracts SvelteKit app (#2) 2026-03-24 07:56:41 +00:00
svelte.config.js feat: scaffold westside-contracts SvelteKit app (#2) 2026-03-24 07:56:41 +00:00
tsconfig.json feat: scaffold westside-contracts SvelteKit app (#2) 2026-03-24 07:56:41 +00:00
vite.config.ts feat: scaffold westside-contracts SvelteKit app (#2) 2026-03-24 07:56:41 +00:00

westside-contracts

Digital contract signing for Westside Kings & Queens basketball.

Overview

Parents receive a tokenized email link, view their kid's contract (travel or local variant), and sign with a drawn signature.

Stack

  • SvelteKit with adapter-node
  • PostgreSQL via pg (node-postgres) -- direct queries to basketball-api's database
  • MinIO via @aws-sdk/client-s3 -- signature image uploads
  • signature_pad -- canvas-based signature capture

Development

npm install
npm run dev

Environment Variables

Variable Description Default
DATABASE_HOST Postgres host postgres.basketball-api.svc.cluster.local
DATABASE_PORT Postgres port 5432
DATABASE_NAME Database name basketball
DATABASE_USER Database user basketball
DATABASE_PASSWORD Database password (required)
MINIO_ENDPOINT MinIO endpoint minio.minio.svc.cluster.local:9000
MINIO_ACCESS_KEY MinIO access key (required)
MINIO_SECRET_KEY MinIO secret key (required)
MINIO_BUCKET MinIO bucket assets

Routes

  • GET / -- Landing page (directs users to check email)
  • GET /contract/{token} -- Contract page (resolves token, renders travel or local variant)
  • POST /contract/{token}/sign -- Signing endpoint (uploads signature, updates database)

Deployment

Kustomize manifests in kustomize/. Woodpecker CI pipeline in .woodpecker.yml.

# Build for production
npm run build

# Docker
docker build -t westside-contracts .
docker run -p 3000:3000 --env-file .env westside-contracts