Admin Panel
Backups — do this regularly, especially with real users live
The free Supabase plan has no automatic backups at all. This downloads a complete snapshot of every real user, wallet transaction, and every tournament type's entries and picks — as one JSON file to your computer.
Download Full Platform Backup
Every real user account, wallet transaction, and every tournament type's entries and picks — everything that can't be re-created if something goes wrong. Real football data (players/teams/matches) isn't included since it's safely re-syncable from the FPL API any time.
Darts — Enter Match Results
No free darts API exists, so results are entered manually here. Entering a result automatically scores every prediction for that match and advances the winner into their next-round slot.
Set a Match Winner
User Management
After registration closes, pick the tournament, check who hasn't paid and remove them before the first match. Their entry and picks are removed, their unpaid entry-fee charge is deleted (never collected, so not a refund), and the entries count and prize pool are recalculated.
Remove Unpaid / Users From a Tournament
Delete a single test tournament (safe — everything else untouched)
For testing something specific (like new card designs) without wiping real users' data in other tournaments. Only deletes the one Stock Market tournament you pick.
Delete One Stock Market Tournament
Removes that tournament and all its entries, squads, transactions, and stages — genuinely scoped to just this one, confirmed via its own direct tournament_id on every table. No other Stock Market tournament, and no other tournament type (Predictions, LMS, Fantasy), is touched at all.
Step 0 — Clean Slate (first-time real launch only)
Wipes everything and starts fresh. Skip this if this is genuinely the first time anyone's used the platform.
Full Platform Reset — Wipes EVERYTHING
Every tournament, every entry, every prediction/pick/squad, every wallet transaction, every match result, every player's season stats — across all four tournament types, both databases. Clock resets to GW1, polling paused. This is the one-click version of the full manual reset used throughout testing, and it's also the correct Step 0 for a genuine pre-launch clean slate. Completely irreversible.
Step 1 — Get Real Data In
Sync Everything
Runs players, fixtures, and live scores in one go — the fastest way to refresh all data on demand.
Player ID Changes
Every sync compares each FPL player ID against what it looked like last time. A name change on the same ID is flagged as a possible reassignment (worth checking manually) — a team change alone with the same name is just a normal transfer.
Current Status
Step 2 — Set The Clock, Turn Polling On
Game Weeks
One global gameweek pointer every tournament reads from. Moving it — forward or back — is always safe: all match and player data stays saved regardless, so nothing is lost by correcting a mistake.
Manually jump to a specific gameweek (for corrections)
Pause Live Polling
While paused, no real FPL data is fetched or written by any user's browser polling — safe to simulate test gameweeks without real data overwriting it. Remember to resume before the real season needs live polling.
Step 3 — Launch Each Tournament
Launch Tournament
Create a new tournament and open it for registrations
Stock Market — Relegation Stages
Up to 8 checkpoints. At each one's trigger gameweek, the bottom N currently-active entries are relegated (out for the rest of the season) and their combined portfolio value is split evenly across every remaining player slot. The cost-per-action multiplier also updates from that gameweek onward. Leave Trigger GW blank on any row you don't want to use. A stage already applied can no longer be edited (shown greyed out).
Enter a tournament ID above and click Load.
Step 4/5 — Final Check, Then Open Up
Re-check Current Status above, confirm Testing Tools (bottom of page) are removed from the real deployment, then you're live.
Other Setup Tools
Sync Fixtures from FPL
Live Match Status
Historical Gameweek Sync
Pulls a REAL gameweek's actual player stats from the FPL feed into the local master database — not invented data. Once synced, rewind the master clock to GW1 and hit Advance Week to replay a genuine past season for testing every tournament type, Stock Market included, exactly like a real live season.
Troubleshooting & Corrections
Manual Score Entry
Manually set match results for testing or corrections
Tournament Points
Recalculate all tournament entry points based on predictions. Use this if points appear inconsistent.
Tournament Data Inspector & Delete
Pick a tournament type to see row counts across every table it uses — check before deleting, then check again after to confirm nothing's left over.
| Table | Rows |
|---|---|
| Pick a type and click Show Data. | |
Stock Market Zero-Sum Audit
Checks, on demand, whether every still-active entry's total value adds up to exactly what it should (entry fee × total entrants), AND replays every settled matchup/gameweek to confirm every individual player got exactly the right Won/Paid for their real actions, using today's live reward values. One click, everything checked.
Stock Market — Full Data Export
Downloads an Excel file with two sheets: every entrant's full per-gameweek player breakdown (same detail as the individual player history pages, for everyone at once), and a full log of every sell/buy transaction across the tournament — including pack fees, shortfalls, and how many other players' values absorbed each fee. Use the same tournament dropdown as the panel above.
Content Maintenance
Player ID Watchlist
FPL occasionally reassigns a player's numeric ID to a different real player (usually once someone leaves the league). This checks automatically every time player data syncs and logs it here the moment it happens — so it can't silently affect a live tournament without you knowing.
Player Photo Verification
Checks each player's actual photo URL against FPL's CDN (a real request, not just whether a code is stored in the DB) and records the result. Players confirmed to have no working photo are automatically excluded from Bronze/Silver/Gold pack pools going forward — anyone not yet checked still shows up as normal, so this is safe to run at any time. Runs in batches; leave the tab open until it says Done.
Upload Player Photo
Fixes one player at a time. Pick a player below (list comes from the last Photo Verification run), click Search to open Google Images for them in a new tab, download whichever photo you want, then upload it here — it goes straight to storage and is live immediately, no redeploy needed.
Communications & Finance
Message Center
Broadcast an alert to every user — shows in their notification bell until you deactivate it.
Set User Password
Directly sets a new password for a user by email — for when someone's genuinely locked out. They'll need to be told the new password themselves.
Who Owes What
The quick everyday look — every tournament with a real outstanding balance, and just the names still owing. Live tournaments first. Click a name to jump to their full payment breakdown below.
Payments & Bookkeeping Remove unpaid players
Every registered user, what they've paid in total and what they still owe (entry fees charged when they join, minus payments you've recorded). Tick Verified for users you trust, e.g. they've paid on time before. Nothing here moves real money — it's a ledger.
| Verified | User | Paid | Owed | |
|---|---|---|---|---|
| Loading… | ||||
Payment History
Every payment recorded and every entry fee still outstanding, tournament by tournament. Paid in green, owed in red, and marked overdue once a tournament's payment due date has passed.
| Date | User | Tournament | Status | Amount |
|---|---|---|---|---|
| Loading… | ||||
Monitoring
Activity Log
TESTING TOOLS
Everything below this line fabricates fake data or bypasses real match results. Genuinely useful for testing right now — but every one of these must be removed before real users are on the platform. See the pre-go-live checklist for the full removal list.
Seed Season Data
Generates a realistic result + full player stats for every real fixture in the gameweek range below — but leaves every match's status as 'upcoming'. Use this once to populate a test season, then use "Mark Games Finished" below to progress through it match by match.
Seed Test Users & Entries
Creates 30 test accounts (shared across all tournament types), then enters them into every live tournament with random-but-valid predictions/picks/squads — the complete test setup from one page. Order: Create Accounts → seed each tournament → Force Close SM Draft last (locks Stock Market squads and opens the market). Enter your own account through each tournament's normal page first if you want to be included.
Mark Games Finished
Select which of this gameweek's matches to mark finished, then click the button. Uses whatever result/stats data already exists for them (e.g. from your own SQL) — doesn't generate anything. Once every match in a gameweek is finished, Stock Market, LMS, and Fantasy all finalize automatically, same as production.
| Fixture | Status | Score | |
|---|---|---|---|
| Enter a gameweek and click Load Matches. | |||
Generate Test Gameweek Data
Fabricates believable match results and player stats for a real gameweek's real fixtures, all in one go — result, goals, assists, clean sheets, cards, minutes, everything consistent with each other. Every tournament type reads the same master data, so this is one action that lets you test everything at once, the same way a real live gameweek would play out.
Stock Market — Full Test Reset
One-click version of the manual SQL reset: wipes every Stock Market table (matchups, history, transactions, entries, stages, tournaments) across the board, creates one fresh tournament at Gameweek 1, and resets the shared master clock. This affects ALL Stock Market tournaments, not just one — same as the manual SQL you've been running.