An open-source tournament and ranked-ladder platform, built for players
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Skill Or Luck? — an open-source platform for running persistent competitive communities.
Skol Arena is an open-source platform for running persistent competitive communities.
Run championships, ranked ladders and elimination brackets while player profiles, rankings,
history and statistics stay in one place.
Most tournament tools are built around a single event: an organizer sets everything up,
players show up, scores get entered, the event ends — and the history resets before the
next one.查看完整 README ↗Skill Or Luck? — an open-source platform for running persistent competitive communities.
Website · Features · Documentation · Releases · Docker Hub
Skol Arena is an open-source platform for running persistent competitive communities. Run championships, ranked ladders and elimination brackets while player profiles, rankings, history and statistics stay in one place.
Most tournament tools are built around a single event: an organizer sets everything up, players show up, scores get entered, the event ends — and the history resets before the next one.
Skol Arena is designed for communities that keep competing. Players play when they are available, build a record over time, take part in seasons, and eventually meet in a final bracket. Profiles, match history and standings stay put across events; a new ranked season is the one thing you choose to reset — or carry over. It suits clubs, gaming communities, companies, campuses and local groups that want to run competitions without relying on spreadsheets and scattered tools.
It is player-driven: participants create and report their own matches, confirm or contest results, and keep the competition moving without routing everything through one person.
It is self-hostable and ships as a single Docker image holding the API, the built web app and its database migrations. You bring a PostgreSQL database and nothing else. Your data stays on your infrastructure.
One player base, three independent competition modes — run one, or all three side by side:
Across every mode:
docker run -d \
-p 3000:3000 \
-e DATABASE_URL='postgres://user:password@host:5432/skol_arena' \
-e BETTER_AUTH_SECRET='a-long-random-string' \
-e BETTER_AUTH_URL='http://localhost:3000' \
quent1l/skol-arena:latest
Migrations run automatically at startup, and an initial super-admin account is created on the first boot against an empty database — its generated password is printed to the container logs.
→ Docker Compose setup, reverse proxy and first-boot guide
Prerequisites: Bun 1.3+ and an empty PostgreSQL 16+ database, owned by a role allowed to create tables. Create it yourself — the app never creates its own database:
createdb skol_arena
git clone https://github.com/Quent1L/skol-arena.git
cd skol-arena
bun install
cp backend/.env.example backend/.env # set DATABASE_URL and BETTER_AUTH_SECRET
bun run dev # start every workspace
There is no separate migration step: the backend applies every pending migration at
startup, so the first bun run dev creates the schema.
| Service | URL |
|---|---|
| Backend (Hono + Bun) | http://localhost:3000 |
| Frontend (Vue 3 + Vite) | http://localhost:5173 |
| Docs site (Astro) | http://localhost:4321 |
→ CONTRIBUTING.md has the full command reference, the architecture and the conventions.
| Website | What Skol Arena is and why it exists |
| Features | The complete feature tour |
| Self-hosting | Quick start and prerequisites |
| Deployment | Docker image, Compose, first boot |
| Environment variables | Every variable the app reads |
| How it works | Matches, disciplines, MMR, accounts |
| API versioning | Header-based version negotiation |
| Releases | Changelog for every version |
| Docker Hub | Published images |
Issues and pull requests are open. It is a real project used by real leagues, and it gets better fastest when the people running them say what is missing.
Commits must follow Conventional Commits — commitlint enforces it, and releases are derived from them. Before opening a pull request:
bun run lint && bun run type-check && bun run test:unit
Read CONTRIBUTING.md first. By participating you agree to the Code of Conduct. To report a vulnerability, see SECURITY.md — please don't open a public issue for it.
Skol Arena is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0-only).
It is meant to be run by clubs, workplaces, bars and independent organizers on their own hardware, with their own data. The AGPL keeps that true for everyone downstream: modify it, deploy it, run it for your community — and if you offer it to others as a service, the changes go back to the commons.
| You want to… | AGPL-3.0 |
|---|---|
| Run Skol Arena for your club, league, workplace or business — including commercially | ✅ Allowed |
| Modify the code and run your modified version | ✅ Allowed |
| Redistribute the source, or images you built yourself | ✅ Allowed — under AGPL-3.0, with the source |
| Offer a modified version as a hosted service (SaaS) | ✅ Allowed — you must offer that instance's users the complete corresponding source of your version (§13) |
| Keep your modifications private while serving them to third parties over a network | ❌ Not allowed |
| Ship Skol Arena inside a closed-source or proprietary product | ❌ Not allowed |
| Re-license the code under a permissive or proprietary license | ❌ Not allowed |
| Remove the copyright and license notices | ❌ Not allowed |
This table is a plain-language summary, not legal advice. The LICENSE file is the only authoritative text.