Skip to content

CourtsideDesk

Tennis tournament management for Swiss club events.

CourtsideDesk complements the SwissTennis platform by providing a digital signage display for tournament venues and an organizer toolset for managing the on-site experience. It does not replace SwissTennis — it makes the tournament day smoother for organizers, players, and spectators.


Key Sections

Section Description
Requirements Full functional requirements — personas, features, scoring formats
Architecture / Tech Stack Finalized technology choices and rationale
Draw Management Draw types, bracket topology, seeding logic
Seeding Placement Seeding placement rules for elimination draws
SwissTennis API Integration Live online import from comp.swisstennis.ch Advantage JSON servlets (tournament + events + bracket + schedule + background sync)
SwissTennis scheduler runbook Operational runbook for the keystone-driven background-sync timer (endpoint contract, troubleshooting, alert thresholds)
UX Review UX/UI design review and guidelines
V1 Launch Checklist Pre-launch checklist for the first production release

Tech Stack Summary

Layer Technology
Frontend Next.js 15 (App Router) + React 19 + TypeScript
UI shadcn/ui + Tailwind CSS
Backend Node.js + Hono + tRPC
ORM Drizzle ORM
Database PostgreSQL via Supabase
Auth Supabase Auth (JWT + RLS)
Real-time Supabase Realtime + SSE fallback
Hosting keystone shared platform on kst1.wagen.io (Hetzner VPS, Docker, Caddy ingress) — see keystone runbooks
CI/CD GitLab CI via keystone shared templates (buildx)
Monorepo Turborepo