Skip to content

Features

MC GamerTime is a web app for tracking board game nights with friends. Self-host it with Docker, or deploy it to AWS for roughly $0/month. Here’s what you get out of the box.

The leaderboard: podium, Elo ratings, win rates and streaks

Wins, losses and an Elo rating for every player across all games, with a podium for the top three, head-to-head records, win streaks, and sessions-per-month charts.

Switch the leaderboard from All-time to Season to see standings for a single calendar quarter. The champion is the top of a finished quarter’s leaderboard, and only players with at least 5 games in that quarter qualify. Champions are decided once the quarter ends, and they can change if past results are edited. Profiles show a champion chip for each title won.

The game catalog, showing cover art, player counts and play counts

Search the Board Game Geek database to add games to your library. Each game stores player count, complexity rating, and full BGG metadata including cover art. Requires a BGG API token — see Configuration.

The chronicle of logged sessions, grouped by month

Record who played, who won, seat positions, player scores (any number — no fixed range), session mood, and free-text notes (e.g. a per-category score breakdown). Supports per-game custom variables (e.g. faction played, role). Past results can be edited.

Awarded automatically when a result is logged — first win, win streaks, games-played milestones, and more. Players see earned achievements on their profile. Giant Slayer is awarded for winning a game in which the player ranked first on Elo at the time took part and lost. Other achievements reward breadth and grit: Polymath (won 10 different games), Specialist (won the same game 5 times), Comeback Kid (a win after 5 or more losses in a row), Marathon (won a game of 2 hours or more), Crowd Pleaser (won a game with 5 or more players) and Half Century (played 50 games). New achievement definitions are added in code.

Attach up to 6 photos to a game night. Admins can add them while logging a result, and any logged-in user can add more from the game-night card. Click a photo to open the lightbox and move through them with the arrow keys. The uploader or an admin can delete a photo. Photos are re-encoded in the browser before upload, which strips location data (EXIF/GPS).

A player profile: games played, win rate, streaks, favourite game and nemesis

Per-player statistics: win rate, favourite game, nemesis, longest streaks, Elo history, a “game passport” of everything played, and a Wrapped-style year recap. A separate Records page lists all-time records: longest streaks, busiest day, most active month.

Write session recaps with rich text and embedded images. Images are uploaded to local filesystem storage and served via the app proxy — no external image hosting needed.

Admins manage users from the app itself — create, edit, and delete accounts on the Users page. The same operations exist as CLI scripts (scripts/create-user.py, update-user.py, delete-user.py, revoke-sessions.py), which is how you bootstrap the very first admin and how you revoke every session for a user.

Two roles: admin (full CRUD) and readonly (no admin actions, but can still react, comment, favorite games, and set their own avatar).