Deployment: Westside Basketball

arch-deployment-westside-basketball Architecture

architecture

Deployment

Where the services run and how they connect. Answers: where does it live and how do I reach it?

Service inventory

Service Namespace Image Public URL arch: ID
basketball-api basketball-api <code>harbor.../basketball-api/api</code> <code>basketball-api.tail5b443a.ts.net</code> <code>arch:basketball-api</code>
westside-app westsidekingsandqueens <code>harbor.../westside-app/app</code> <code>westsidekingsandqueens.tail5b443a.ts.net</code> <code>arch:westside-app</code>
Postgres basketball-api <code>postgres:16-alpine</code> internal only <code>arch:postgres</code>
groupme-sdk n/a (library) Forgejo PyPI package <code>api.groupme.com/v3</code> (external) <code>arch:groupme-sdk</code>
landing-site playground (nginx) static HTML via svelte-playground/dist <code>playground.tail5b443a.ts.net/svelte/westside/</code> (prototype)<br/><code>ldraney.github.io/west-side-basketball/</code> (production) <code>arch:landing-site</code>

Deploy pipeline

  • basketball-api: merge to main → Woodpecker CI (test + kaniko build) → Harbor tag ${CI_COMMIT_SHA} → ArgoCD Image Updater (currently broken) or manual .argocd-source bump → ArgoCD auto-sync
  • westside-app: merge to main → Woodpecker CI (currently broken for SvelteKit) → manual docker build + push to Harbor → update k8s/deployment.yaml image tag → ArgoCD auto-sync

Secrets

  • pal-e-auth-secrets — JWT secret, Google OAuth client ID/secret
  • gmail-oauth-token — credentials.json + per-tenant Gmail refresh token
  • basketball-api-secrets — Postgres password, Stripe API key, Stripe webhook secret
  • groupme-secrets (planned) — GROUPME_ACCESS_TOKEN. Permanent token, rotates only on password change.
  • harbor-creds — Docker registry pull secret (per namespace)