Why Skol Arena exists
Most competition tools are built around one shape: an organizer sets everything up, players show up, scores get entered, the event ends. Someone screenshots a spreadsheet, results live in a Discord thread, and the whole history resets for the next event.
That works for a single tournament day. It breaks down as soon as your competition lives across days or weeks, when players can’t all meet at the same time, or when your discipline doesn’t fit a rigid two-player bracket.
Skol Arena is built for the group that keeps competing — an office ladder, a campus league, a club’s monthly night, an esports team’s internal scrims — where “who’s actually good” and “who won last time” matter well beyond a single event. Seasons recur, ratings persist, and the history survives.
The other half of the idea is who does the work. In most tools every result funnels through one person, and the competition stalls whenever that person is busy. Here, the players in a match create it, report it, confirm it, contest it, or cancel it themselves, from their phone. Admin controls are real and still there — tournament admins and co-admins can edit, finalize, and override anything — but the competition doesn’t wait on them.
Letting players report freely costs you credibility unless you protect it, so that’s where the guardrails sit: a validation mode chosen per tournament, a trust score that fast-tracks reliable reporters and resets the moment one of their reports is disputed, and championship limits capping how many matches count and how often the same players can face or partner with each other.
Under the hood it’s a Vue 3 frontend on a Hono/Bun API with PostgreSQL, real-time updates, and native or Keycloak SSO login. Self-hostable today, open source under AGPL-3.0.
Design principles
Players run the day-to-day
Creating, reporting, confirming, contesting, and cancelling a match all sit with the players in it. Nothing waits on a single person being available.
Trust is configurable, not assumed
Each tournament picks how much confirmation a result needs. Reliable reporters get fast-tracked; a dispute resets that standing.
The discipline shapes the rules
Disciplines carry their own outcome types, point weights, and MMR multipliers, so scoring reflects the game rather than a generic template.
Mobile is the primary surface
Competitions happen in venues, not at desks. Mobile screens are purpose-built, and the app installs as a PWA.
What it deliberately isn't
Scope kept narrow on purpose — Skol Arena runs the competition, and leaves these to tools built for them:
- Payment handling, ticketing, or registration fees
- Live streaming, broadcast overlays, or spectator feeds
- Public matchmaking across unrelated communities
- A hosted SaaS plan — you run your own instance
Stack
Frontend
Vue 3, Vite, TailwindCSS, PrimeVue
Backend
Hono, Bun, Drizzle ORM, PostgreSQL
Auth
Better Auth — native login or Keycloak SSO
API
Versioned REST + WebSocket, OpenAPI spec
Open source
AGPL-3.0
Skol Arena is licensed under the GNU Affero General Public License v3.0. You're free to self-host it, read the code, and modify it for your own community. The one thing AGPL asks in return: if you run a modified version as a network service for others, you make your changes' source available to them too — the copyleft extends to hosted use, not just distributed copies.