Fun Tennis● installed
Live tournament platform · design system v0 · installable PWA

A tennis broadcast
you can hold.

The scoreboard is the hero. Night-match dark & daytime light, two accents (ball + clay), chalk court-lines, oversized tabular numerals — animated, responsive, per-tenant themeable.

Signature · live broadcast score — press play

Court 8 · Hard · Group 3Live
Ian Xe
00
Cyril
00
⬤ North · serving · games to win 3⚡ Die point
Court 9 · Green · SF1Final
Ed Aquilina
3
Mia
1
games · best of 5🏆 to final

Portrait (spectator) · landscape (big screen)

Fun Tennis142
Court 8 · Hard
Ian Xe
15
Cyril
14
Hard★ Following 3
Fun Tennis · Round Robin4 on court · 👀 142
Ian Xe15
Cyril14
Mia3
Rafael2

Rotate your phone — the layout adapts. Big screen scales the numerals to the viewport.

PWA · native features

Installable
Add to home screen — runs standalone, no browser chrome. Offline-ready via service worker.
Wake Lock
Big screen stays awake all day (re-acquired on focus). Try the “Keep awake” button.
📶
Offline-first
Durable write outbox — points never lost on flaky venue wifi; replay on reconnect.
🔔
Web push + in-app bell
Follow players → alerts. The bell works everywhere (incl. iOS without push).
📐
Safe-area aware
Respects the notch / home indicator in standalone (this bar is padded for it).
Quality floor
Keyboard focus, reduced-motion respected, mobile-first — built in, not bolted on.

Palette · structural + per-tenant brand

background
surface
ball ⭐ brand
clay
live
red
green
orange

Structural tokens persist (Fun Tennis identity); --ft-ball swaps per tenant. shadcn semantic vars map onto these.

Buttons · chips · badges

Red BallGreen Dot CompletedOn courtPendingLive

Stat tiles · standings table

6,412
points struck
28/42
matches done
14
players
9
killer points
#PlayerPWLPts
1Ian Xe66084
2Mia64271
3Rafael64268
4Liam · tie — resolve courtside63360