32 lines
2.0 KiB
Markdown
32 lines
2.0 KiB
Markdown
---
|
|
title: myboker.org
|
|
slug: myboker-org
|
|
summary: A home poker league tracker with player stats, leaderboards, session history, and settlement tracking. Built around an append-only event ledger and now live as a public web app.
|
|
label: Project
|
|
date: 2026-06-28
|
|
status: Active
|
|
featured: true
|
|
order: 2
|
|
live: https://myboker.org
|
|
tags: Python, Flask, Jinja, Chart.js, PostgreSQL, Analytics
|
|
---
|
|
|
|
## Overview
|
|
|
|
This project started as a small internal tool called Boker for tracking buy-ins and payouts during casual poker nights. It has since grown into [myboker.org](https://myboker.org), a more complete home league tracker that I now run publicly.
|
|
|
|
The app covers the full workflow: recording sessions, tracking buy-ins and rebuys, calculating settlements and payouts, and surfacing per-player stats and leaderboards over time. There is a public-facing side for players to check standings and session history, and an admin area for managing the actual data entry during and after a game.
|
|
|
|
The core data model is an append-only event ledger backed by PostgreSQL in production. Every buy-in, rebuy, payout, and correction is recorded as its own event rather than overwriting state, which keeps the full history auditable and makes it straightforward to reconstruct any session at any point.
|
|
|
|
## Focus Areas
|
|
|
|
- Designing an append-only event ledger for trustworthy, auditable record keeping
|
|
- Building player stats, leaderboards, and session analytics from raw event data
|
|
- Handling settlement and payout calculations across variable buy-ins and rebuys
|
|
- Creating simple admin tooling that works well in a real-world, low-distraction context
|
|
|
|
## Notes
|
|
|
|
The storage model is the part I keep coming back to. Because every action is an event rather than a snapshot, it is easy to trace what happened in a session, catch data entry mistakes, and replay history accurately. It is a genuinely useful tool for a specific problem — nobody wants to manage a poker league in a spreadsheet — and that constraint kept the design grounded throughout.
|