Go to Teams tab. Find the division card, type the team name in the Add field and press Enter or click Add. Team names must be unique across all divisions.
Click the ✕ button next to any team name. This permanently removes the team and deletes all their results and fixtures — you will be asked to confirm first.
The generator uses the circle method — every team plays every other team once per half-season, and every team plays every single week. The full season is two halves with home/away reversed.
The Match Week Dates card (below the generator) shows a date picker for each scheduled week. Change a date and click Set — all fixtures in that week update simultaneously. Use this for public holidays or any one-off date changes.
Click the ✏️ button on any fixture row to edit it inline. Change division, teams, week, date, time, pitch or referee. Click Save to commit or ✕ to cancel.
Click + Add fixture at the bottom of the fixtures table. Fill in the inline row — division, home team, away team, week number, date (picker), time (dropdown: 7:00pm / 7:45pm / 8:30pm), pitch (2A / 2B / 4A / 6A / 6B) and referee. Click Save.
Any fixture that doesn't yet have a result appears automatically as a draft row at the bottom of the Results table (highlighted in yellow). Enter both scores and click Publish — the result goes live on the public site immediately.
Click the ⚡ From fixture button to pick a scheduled fixture and pre-fill the result row with the correct division, teams, week and date. You only need to enter the scores.
Click + Add result at the bottom of the table. Fill in division, week, home team, score, away team score and date. Click Save.
Click the ✏️ button on any result row to edit it inline. Click Save to commit.
Click the 🗑 button and confirm. Deleting a result updates the ladder immediately.
Use the pill filters at the top of the Results panel to show only one division at a time.
Each match has a nominated referee team assigned automatically when fixtures are generated. A player from that team scans the QR code, selects their match, enters the score and their name, then submits. The score sits as pending until you approve it.
Go to Pending tab. Each submitted score shows the division, teams, score, date, the referee's name and the submission time. Click ✓ Approve to publish it as an official result, or ✕ to reject and discard it.
The public referee page at /referee shows only today's fixtures. Referees pick their match, enter home and away scores, enter their name, and tap Submit. Results go to pending — nothing is published without admin approval.
In the Results tab, each match week heading has a Mark complete button. Once clicked, the week shows a ✓ Complete badge and its fixtures are hidden from the public Fixtures tab (since they've been played). Use Undo to reopen a week if needed.
Go to the Weather tab.
In the Weather tab, type a message in the Banner message field and click Set banner. A yellow warning bar appears at the top of the public site immediately. Click Clear banner once the situation is resolved.
Go to Season tab. Enter a name (e.g. "Winter 2026") and click Save name. This appears under each division banner on the public site in place of "Six-A-Side".
All past seasons are listed at the bottom of the Season tab with their archive date. Data is stored permanently in Firebase — nothing is deleted when a new season starts.
The 🔗 Share button (bottom-right of the public site) copies a URL that links directly to the current division and tab — e.g. ?div=prem&tab=table. Share it with players so they land in the right place.
The Register to Play button in the header opens a form collecting name, email, phone and play preference (Individual / Team / Both). On submit, the data is sent directly to the league contact email via Formspree — no email client or backend needed. The user sees a confirmation screen once submitted successfully.
xojrqlvd pointing to the league contact email. No further setup is needed. Free tier covers 50 submissions per month — upgrade at formspree.io if volume increases.Set from the Weather tab in admin. Appears as a yellow bar at the very top of the public site. Visible to all visitors until cleared.
The app is hosted on Vercel, connected to a GitHub repository. Any file pushed to GitHub automatically redeploys within about 30 seconds.
index.html, admin.html, referee.html or vercel.jsonindex.html — the public-facing siteadmin.html — this admin panelreferee.html — the referee score submission pagevercel.json — URL routing (/admin → admin.html, /referee → referee.html)