Back to projects

Project ยท 2026

Match-day Board

An editorial match-day board for grassroots 11v11 football. Share a public RSVP link in your team chat, watch replies land in real time, then build the starting XI on a drag-and-drop tactics board and export it as PNG or PDF.

  • TypeScript
  • Vite
  • Supabase
  • html-to-image
  • jsPDF
  • Vitest

Problem

Organizing a grassroots 11v11 match usually means chasing replies in a group chat and then guessing at a lineup. I wanted one link a captain could drop in the team chat that collected RSVPs in real time and turned the confirmed squad into a shareable starting XI.

Approach

A match-day organizer built with Vite and vanilla TypeScript (no frontend framework):

  • Captains share a public RSVP link; replies land in real time using Supabase realtime with row-level security and secure RSVP RPCs.
  • Once the squad is set, players are dragged and dropped onto a tactics board to build the starting XI.
  • The finished lineup exports as PNG (html-to-image) or PDF (jsPDF).
  • A zero-config local demo mode backed by localStorage runs with no backend at all.

Highlights

  • Real-time RSVPs secured with row-level security and RPCs rather than an open table.
  • Drag-and-drop tactics board with PNG and PDF export.
  • Runs framework-free, and demoable offline via localStorage.
  • Covered by Vitest.