Tennis Scorer

A tennis tournament manager for club and social events. Organisers add players and seedings, pick a format — knockout, round robin, or round-robin groups feeding a knockout — and the app generates the full draw, including seeded bracket placement and automatic byes.

Each player is emailed a personal link to the draw, so they can report their own results without creating an account. Scores are validated against the tournament's scoring format — standard sets, Fast4, or match tiebreak — and winners advance through the bracket automatically.

3 formatsKnockout, round robin & hybrid draws
3 scoring modesStandard, Fast4 & match tiebreak
Magic linksAccount-free score entry for players
Prisma 7Typed Postgres data layer
FrontendBFFServicesDataInfrastructureScore submission flow

Tech Stack

Frontend

Server-rendered pages with atomic-design components for brackets, group tables and score entry.

Next.js 16React 19TypeScriptTailwind CSSRadix UILucide React

Backend & Data

Route handlers backed by a typed Prisma client over PostgreSQL, with transactional score updates and bracket advancement.

Next.js Route HandlersPrisma 7PostgreSQLResend

Auth

Admin sessions via Auth.js with credentials and Google OAuth, plus token-based magic links for players.

Auth.js v5Google OAuthbcrypthttpOnly cookies