Tourney is a comprehensive tournament management system designed to streamline the organization and execution of sports tournaments. It provides a user-friendly interface for administrators to set up and manage tournaments, while also offering a live viewer experience for spectators to stay updated on matches, brackets, and standings in real-time.
- 🏆 Tournament setup for football, volleyball, and basketball with rules, prizes, and automatic group assignment
- 📡 Live viewer with real-time updates on matches, brackets and standings
- 🎓 Class and school year management
- 🎟️ Central registration management with registration links, teams, pdf generation and status handling
- 📰 News and gallery management directly from the admin dashboard
- 🌳 Public tournament details, live brackets, standings, and media updates
- 🤖 AI assistant
tourney follows the Semantic Versioning guidelines.
- clone the repository:
git clone https://github.com/Dino-Kupinic/tourney.git- Run the installation script and follow the instructions
./scripts/setup.shWarning
The setup script is due to be changed.
Note
Windows users need WSL installed.
Requirements:
- Docker
- Bun
- Node.js 22
- install packages
bun installTip
If you don't have bun installed, checkout https://bun.sh to install for your operating system.
- optionally run all development servers
bun run dev- run supabase
bun run start:supabaseTip
If you don't have docker installed, checkout https://www.docker.com/.
- head to http://127.0.0.1:54323
If it works, great!
- define environment variables
Create a .env file and checkout the .env.example.
Copy the content into your .env and replace the following fields with your own.
| Field | Description |
|---|---|
SUPABASE_URL |
URL to Supabase API |
SUPABASE_KEY |
Anon key |
SUPABASE_SECRET_KEY |
Secret key (service-level key) |
OPENAI_API_KEY |
OpenAI API key for the admin AI assistant |
NUXT_PUBLIC_CLIENT_URL |
URL of the viewer app, default http://localhost:3001 |
- run dev server
bun run dev:admin- Head to http://localhost:3000/
If it works, great!
- define environment variables
Create a .env file and checkout the .env.example. Copy the content into your .env and replace the following fields
| Field | Description |
|---|---|
SUPABASE_URL |
URL to Supabase API |
SUPABASE_KEY |
Anon key |
NUXT_GOTENBERG_URL |
URL to the Gotenberg service |
NUXT_GOTENBERG_USERNAME |
Gotenberg username |
NUXT_GOTENBERG_PASSWORD |
Gotenberg password |
- run dev server
bun run dev:viewer- Head to http://localhost:3001/
If it works, great!
- define environment variables
Create a .env file and checkout the .env.example. Copy the content into your .env and replace the following fields
| Field | Description |
| ---------------------------------- | --------------------- | --- |
| SUPABASE_URL | URL to Supabase API |
| SUPABASE_KEY | Anon key |
| NUXT_PUBLIC_ADMIN_APP_URL | URL of the admin app |
| NUXT_PUBLIC_VIEWER_APP_URL | URL of the viewer app |
| NUXT_PUBLIC_MUX_DEMO_PLAYBACK_ID | URL of mux asset id | |
- run dev server
bun run dev:www- Head to http://localhost:3002/
If it works, great!
- define environment variables
Create a .env file and checkout the .env.example. Copy the content into your .env and replace the following fields
| Field | Description |
|---|---|
SUPABASE_URL |
URL to Supabase API |
SUPABASE_SECRET_KEY |
Secret key (service-level key) |
USERS_TO_CREATE |
See comment in .env.example |
- run the script
bun run create:usersIf it works, great! You can now log in in the admin dashboard with the created users.
- Bun
- Turbo
- Nuxt 4
- Supabase
- Docker
- OpenAI API
- Gotenberg
Contributions are always welcome! Feel free to create an issue or submit a pull request. Please follow coding standards and commit message conventions.
