Digital contract signing for Westside Kings & Queens basketball
  • Svelte 40.2%
  • TypeScript 36.2%
  • CSS 22.2%
  • Dockerfile 0.5%
  • HTML 0.5%
  • Other 0.4%
Find a file
2026-05-12 02:43:15 +00:00
kustomize feat: scaffold westside-contracts SvelteKit app (#2) 2026-03-24 07:56:41 +00:00
src Fix $undefined entry fee and _note rows in travel tournaments 2026-05-11 20:41:03 -06:00
static feat: scaffold westside-contracts SvelteKit app (#2) 2026-03-24 07:56:41 +00:00
tests feat: wire components to render from merged contract data (#37) (#45) 2026-04-05 05:00:38 +00:00
.current-issue fix: count only required practices in fee description (#48) 2026-04-06 15:15:27 +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