Skip to content

Repository files navigation

OpenPadel

A lightweight padel tournament app. Supports Americano (rotating partners, point-based) and Mexicano (pairings adapt by standings).

Features

  • Americano — round-robin rotation, configurable points per game, live leaderboard
  • Mexicano — dynamic pairings based on standings, no bench players
  • Join by 4-character session code, no account required
  • Real-time score updates via SSE (with a polling fallback for buffering proxies)
  • Push notifications when a tournament starts (PWA)
  • User accounts with career stats split by game mode

Stack

  • Backend — Go, SQLite (via mattn/go-sqlite3), deployed on Fly.io (Stockholm region)
  • Frontend — SvelteKit 5, Tailwind CSS, Bun
  • Auth — JWT, bcrypt password hashing

Project structure

.
├── cmd/server/          # Entrypoint
├── internal/
│   ├── api/             # HTTP handlers and router
│   ├── domain/          # Shared types
│   ├── gamemode/        # Game mode services (americano, mexicano)
│   ├── store/           # SQLite queries
│   └── ui/              # Embedded SvelteKit build
└── web/                 # SvelteKit frontend
    └── src/
        ├── lib/
        │   ├── api/     # API client
        │   ├── components/
        │   └── i18n/    # English + Norwegian
        └── routes/

Running locally

# Terminal 1 — backend (serves API on :8080)
make dev/api

# Terminal 2 — frontend (proxies API, serves on :5173)
make dev/web

Building for production

make build   # builds frontend then compiles Go binary to bin/openpadel

Deploying

fly deploy

The database is persisted on a Fly volume at /data/openpadel.db.

Useful commands

make db/reset   # clear all game data (keeps user accounts)
make test       # run Go tests
make fmt        # format Go + frontend

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages