- Stats such as wins, win rate, points, points per game
- Sort the scoreboard based on any of these stats
- See change in position and points-per-game
- Medals for high scores (e.g. 🎖️ for max score)
- Have multiple groups
- Different max scores per group (e.g. 60 for 4 games, or 90 for 6 on Switch)
- View player scores as graph (along with std. deviation)
- Show a player's best streak of N games
- Head-to-head - see only the games between the chosen players (graphs + scores)
- Item randomiser (randomly pick a few items to use in "Custom Items" mode)
- Backend: 🦀 Rust
- Frontend: React + Vite + TS
- Database: Postgres
sqlx-cli(cargo install sqlx-cli)yarn
To set up for development, copy .env.example to .env and fill it out with the development config
This also needs to be copied to db/.env
To set up the database, run the following commands:
# Start the DB
cd db
source <env-file>
docker-compose up -d
# Run the migrations
cd ../backend
sqlx migrate runYou will then need to manually create players and groups in the database. Make sure to add the players to the groups using the player_group table
Install dependencies:
cd ./frontend
yarnGenerate a random secret for validating JWTs:
dd if=/dev/urandom bs=256 count=1 2>/dev/null > ./backend/src/api/jwt_secret.datRun the database:
cd db
docker-compose up -dRun the backend:
cd backend
cargo run --bin api # Or use `cargo watch -x 'run --bin api'` to rebuild/run on file changesRun the frontend:
cd frontend
yarn devGo to http://localhost:5173
Admin users are required to be able to make any modifications (add games, players, groups etc.)
Admin players are created manually by adding an entry to the admin_user table in the database. To generate, the password hash, run cargo run --bin tools hash-password <password>. This will spit out the hash that you can add to the database
You can log in as an admin user in "Settings" on the frontend



