Skip to content

Repository files navigation

Tally Logo

Tally

Self-hosted board game collection manager & session tracker

Log play sessions, rank players, and track your group's leaderboard on your own hardware.


Docs


Features

  • 🎲 Manage your board game collection with cover images, rulebooks, player count, price, and more.
  • 📋 Log play sessions and rank players with drag-and-drop.
  • 🏆 Global and per-game leaderboards with points, wins, and win rate.
  • 📊 Head-to-head comparison between any two players.
  • 🔎 Filter and sort your library by name, player count, owner, or date added.
  • 🔗 Optional BoardGameGeek integration for game name autocomplete.
  • ⏱️ Countdown timer, dice roller, and "Who Goes First" randomizer.
  • 🌙 Light, dark, and system theme.
  • 💾 Self-hosted — all data stays on your machine.
  • 🌐 [WIP] English and Portuguese language support.

⚠️ This app is under heavy development.

Docs

Tech stack

Layer Technology
Backend Node.js + Express.js
Frontend React + Vite
UI Some shadcn/ui + Tailwind CSS
Database SQLite via Drizzle ORM
Container Docker (single container)

Running with Docker

docker run -d \
  -p 3000:3000 \
  -v ./tally-data:/app/data \
  tally:latest

Or with Docker Compose:

docker compose up -d

The app starts on http://localhost:3000. On first run, the database schema is initialised automatically. All data (SQLite file + uploaded files) is persisted in the mounted /app/data volume.

Local development

# Install all dependencies
npm run install:all

# Start both server and client in watch mode
npm run dev

The API server runs on port 3001 and the Vite dev server on port 5173 by default.


⭐ If you find Tally useful, please consider giving it a star!

Stars

Made with 💛 for the board game and homelabbing community

About

Self-hosted board game collection manager & session tracker

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages