EPINOIΛ platform everything, every league league admin

Platform administration

Checking your access…

Every number here counts the whole platform, not one league. They are live counts rather than estimates — at this size that costs nothing and there is nothing on this page worth being approximately right about.

Every account on the platform, whatever roles it holds. This is the only page that can see them: auth.users is not reachable from a browser, so nothing else on this site can answer “who has an account here”.

AccountRolesJoinedLast seen

Grant a role

The account must already exist — ask them to sign in once first. A role granted here takes effect on their next request; nothing needs restarting and no email is sent.

Renaming, re-colouring and removing leagues, which until now could only be created. Changing a slug changes the league’s public address and breaks saved links — it is allowed because leagues genuinely get renamed, not because it is safe.

New league

Every club on the platform, including any left without a league. A club is a real organisation: deleting a league does not delete its clubs, it orphans them, and they are moved back into a competition from here.

ClubLeaguePlayersGames Managers

Photographs awaiting approval

Across every league. An under-18 photograph cannot be approved without recorded guardian consent — the database refuses it, so this queue cannot be used to get around the check.

Messages

API keys

Every key issued for the read-only JSON API, in every league. The key itself was shown once at issue and is not stored — only its hash, so a key cannot be recovered from here, only revoked.

KeyLeagueLimit/h24h Last used

Written by every privileged action on the platform since the first migration, and until now readable from nowhere. Kept two years.

WhenWhoActionSubjectDetail

Site-wide switches. The ones marked public are read by the front end without anybody being signed in — a maintenance banner nobody can see is not a maintenance banner.

Rebuild derived data

Standings, awards and every season figure are derived from the event log rather than stored independently, so rebuilding them is always safe and always gives the same answer. This is the first thing to try when a table disagrees with a box score.

Prune the audit log

Entries older than the retention window are removed. The floor is 30 days.

What this console cannot do

It never sends email. Disabling an account, granting a role and deleting a league all happen silently, because every transactional email on this project comes out of the same small allowance the magic-link logins use — a console that quietly spent it would lock you out of your own site for an hour.
It cannot switch on a sign-in provider. Google, Apple and the rest are GoTrue configuration rather than data, and live in the Supabase dashboard under Authentication → Providers. The splash offers Google whether or not it is enabled; if it is not, the button says so instead of navigating somewhere with no way back.