Live Padel Tournament Operations Platform

A complete end-to-end tournament management system — from team check-in to knockout bracket and winner podium, with live offline-capable referee scoring.

👑 Admin
🛠 Manager
🎾 Referee
📺 Operator
SCROLL
0
Access Roles
0
TV Display Modes
0
Max Courts
0
Unit Tests
0
Excel Sheets Export
0
Database Tables

Access Control

Four Roles,
One Login Page

Navigate to /login and enter your access code. The code determines your role — and every action you're allowed to take.

👑
Admin
Password: bg-4IHs
  • Create & delete tournaments
  • Add/edit/remove teams & players
  • Configure scoring rules & courts
  • Manage groups, draw, bracket
  • Override qualification status
  • Release match device locks
  • Clone tournaments, export Excel
  • Upload branding & sponsor logos
  • Score matches (referee access)

Full system access. Change the code before each event.

🛠️
Manager
Password: d7FQ1UNg
  • Add & edit teams & players
  • Manage check-in & no-shows
  • Adjust match order & courts
  • Generate groups & draw options
  • Edit & approve bracket
  • Score matches (referee access)
  • Delete tournaments or reset data
  • Change scoring configuration
  • Upload branding / logos

Day-of operations role. No destructive system access.

🎾
Referee
Password: vX6jNJFH
  • Open & start matches
  • Score points (offline-capable)
  • Undo last action
  • Pause / resume match
  • Change server mid-match
  • Force-end, walkover, retirement, DQ
  • View or edit other matches
  • Edit teams or brackets
  • Access admin console

Tablet / phone. One device per match enforced.

📺
Operator
Password: WB0YOhlb
  • Switch TV display mode (6 modes)
  • Toggle dark / light theme on screen
  • Set sponsor rotation interval
  • Update lower-third banner text
  • Score or edit matches
  • Access teams / groups / bracket
  • Any admin console access

Controls the big screen only. Give this code to AV staff.

From Zero to Champion

The Complete
Tournament Journey

Every step from creating the tournament to lifting the trophy — who does what and when.

👑 Admin
🏆
Create the Tournament
Log in at /login with the admin code. Click "New Tournament", enter the name, choose sport (Padel), and set the slug. Then add up to 20 courts, configure scoring rules (sets, games, tie-break), set the qualification number per group, and upload logos.
1
Setup
2
Teams
👑 Admin
🛠 Manager
👥
Add Teams & Players
Add teams manually (name, phone, notes) or bulk-import via the CSV template. Each team has 2 players with full name, phone, and optional photo. Seed numbers are used for locked draw positions.
🛠 Manager
Check-In on Arrival
On the day, open the Check-In page. As teams arrive at the venue, tap "Check In". Mark no-shows or latecomers. Disqualify a team if needed — this affects their group standings automatically.
3
Day-of
4
Draw
👑 Admin
🛠 Manager
🎲
Create Groups & Randomize Draw
Set the number of groups. Use the 🎲 Randomize button to generate 3 or 5 distinct draw options at once. Lock specific teams to specific groups (e.g., seeded teams), then drag & drop the rest. When happy — Publish. Round-robin matches are generated automatically.
👑 Admin
📋
Review & Adjust Schedule
The Matches page shows all group-stage matches ordered by round. Reassign courts, drag to reorder, or set scheduled times. Each match is assigned a court cyclically but can be edited freely. Export the schedule to Excel if needed.
5
Schedule
6
Score
🎾 Referee
📱
Referee Scores Each Match
On a tablet or phone, open /referee, pick the match, tap who serves first. Giant score buttons — tap to award a point. Confirmation dialogs appear for game/set/match-winning points. Supports undo, pause, change server, force-end, walkover, DQ, and retirement. Works fully offline — events queue in the browser and sync automatically when signal returns. One device per match is enforced.
📊
⚡ Automatic
Leaderboard Auto-Updates
When a match ends, standings recalculate instantly. Rankings follow: Points → Wins → Head-to-Head → Set Diff → Game Diff → Games Won. Public screens refresh every 8 seconds. The admin leaderboard allows manual override of "qualified / eliminated" status with an audit trail.
7
Live
8
Bracket
👑 Admin
🛠 Manager
🗂️
Generate Knockout Bracket
Once group stages are complete, go to Bracket → Generate. The system seeds using cross-group pairing: A1 vs B2 · B1 vs A2 · C1 vs D2 · D1 vs C2. Odd numbers get a lucky-team BYE slot. Edit the QF pairings — teams auto-swap when you pick one that's already placed elsewhere.
👑 Admin
Approve & Publish Bracket
Review the bracket tree. Click Approve to lock the pairings, then Publish to create the knockout matches. BYE (lucky) teams advance without a match. QF, SF, Final, and Third-Place matches are all created automatically and appear on the Matches page.
9
Publish
10
KO
🎾 Referee
Score the Knockout Rounds
Same referee scoring flow as group stage. When a QF match ends, the winner automatically fills the matching SF slot. When both SFs are done, the two finalists are placed in the Final and the two losers in the Third-Place match. All advances are automatic.
🏆 Champion
🎉
Winner Podium & TV Celebration
When the Final ends, the operator switches the TV screen to Winner mode — a podium animation shows 🥇 Champion, 🥈 Runner-up, and 🥉 Third Place. The public /winner page is also live. Export the full Excel workbook with all results, teams, scores, and audit log for records.
11
🏆

Platform Capabilities

Built for the
Hardest Moments

📶
Offline-First Scoring
Every point is saved to the device's local database (IndexedDB via Dexie) before attempting to sync. Signal drops, Wi-Fi dead zones, and tunnels are handled gracefully — scoring never stops.
Dexie IndexedDBOrdered Sync409 Conflict Guard
🔒
Device Lock Per Match
Only one device can score a match at a time. Claiming the lock is automatic on first event. Admins can release a lock if a referee's device is lost or dead. The second device sees a read-only view.
Claim APIAdmin ReleaseRead-only fallback
📜
Event-Sourced Audit Trail
Every scoring action — point, undo, pause, force-end, walkover, DQ — is stored as an immutable event row with who did it, when, and on which device. Full replay is possible from event history.
score_eventsaudit_logsImmutable
📊
Excel Export — 9 Sheets
One click exports a full tournament workbook: Overview, Teams, Players, Schedule, Group Results, Standings, Bracket, Score Breakdown, and Audit Log. Useful for prize distribution and official records.
ExcelJS9 SheetsFormatted
🎲
Randomized Draw Engine
Generate 3 or 5 distinct draw options with one click using the circle-method round-robin algorithm. Lock seeded teams to specific groups, drag & drop the rest. Odd-team groups get a BYE round.
@dnd-kitCircle MethodBYE support
🔁
Clone Tournament
Running the same event again? Clone any tournament and choose exactly what to carry over: teams, player photos, groups, courts, scoring rules, schedule, and branding — all configurable per clone.
Deep copySelectiveclone_logs
🧮
Auto Standings Recalc
Standings refresh automatically the moment any group match ends. The ranking engine handles: points, wins, exact 2-way head-to-head, set difference, game difference, and games won as the final tiebreaker.
H2H tiebreakAuto-triggerManual override
📥
CSV Team Import
Download the CSV template, fill it in with team names, player names, phone numbers, photo URLs, and seed numbers, then upload. Rows with errors are highlighted; valid rows import instantly.
Template downloadRow validationPreview mode
🏗
Auto Bracket Advancement
When a QF ends, the winner is placed in the correct SF slot automatically. SF winners go to the Final, SF losers go to the Third-Place match. BYE slots advance the lucky team with no match played.
Auto advanceA1-B2 seeding3rd place

Big Screen Control

Six TV Display
Modes

The operator opens /operator and switches the venue TV screen between 6 live-updating modes — no page reload needed on the display.

/t/demo-tournament/screen
LIVE
Group Standings — Move Beyond Open 2025
Group A
1
Team Alpha
3
Qualified
2
Team Falcon
1
Pending
3
Team Jaguar
0
Pending
Group B
1
Team Comet
2
Qualified
2
Team Eagle
1
Pending
3
Team Horizon
0
Eliminated
Group C
1
Team Impact
3
Qualified
2
Team Bravo
1
Pending
3
Team Lunar
0
Eliminated
Group D
1
Team Krypton
2
Qualified
2
Team Gravity
2
Pending
3
Team Delta
0
Eliminated
Live Matches
LIVE
Court 1 · Group A Round 2
Team Alpha
40
vs
Team Falcon
15
Games: 3–1 | Set 1
Court 2 · Group C Round 1
Team Impact
30
vs
Team Bravo
40
Games: 2–2 | Set 1
Quarter-Final
Team Alpha 6
Team Gravity 3
Team Comet 6
Team Krypton 4
Team Impact 6
Team Eagle 2
Team Falcon 7
Team Bravo 5
Semi-Final
Team Alpha 6
Team Comet 3
Team Falcon 6
Team Impact 4
Final
Team Alpha
Team Falcon
Move Beyond Open 2025 — Champions
🥈
Team Falcon
2
🏆
Team Alpha
1
🥉
Team Impact
3
🎾 Move Beyond Open 2025 | Powered by Move Beyond Academy

Shareable Links

Public Pages —
No Login Needed

Share these with players, spectators, and parents. They auto-refresh every 8 seconds with the latest data.

🏠
/t/<slug>
Mobile overview: live matches, upcoming schedule, and group standings at a glance.
📊
/t/<slug>/leaderboard
Full standings with sets, games, differentials, and qualification status for all groups.
🔴
/t/<slug>/live
Live scorecards for all currently active matches. Shows point-by-point scores.
🗂️
/t/<slug>/bracket
Knockout tree with QF, SF, Final, and Third-Place match results and upcoming slots.
🏆
/t/<slug>/winner
Champion podium page — automatically populated once the Final match ends.
📺
/t/<slug>/screen
Full-screen TV display. Operator switches modes from /operator without touching this screen.

Under the Hood

Modern Stack,
Production-Ready

Next.js 16
App Router · Server Actions
Supabase
Postgres + Storage
Tailwind v4
Utility-first CSS
Dexie.js
Offline IndexedDB Queue
Vitest
31 Unit Tests
ExcelJS
9-Sheet Export
Ready to use at https://tour.mbeg.org/

Start Your
Tournament Now

Run npm run dev, open /login, and enter your access code below. The Demo Tournament is pre-seeded and ready to explore.

👑 Adminbg-4IHs
🛠 Managerd7FQ1UNg
🎾 RefereevX6jNJFH
📺 OperatorWB0YOhlb

Change these codes in .env.local before any live event.