Overview
Clubs bill by the minute. PlayTime runs the floor — tables, sessions, day and night tariffs, counter sales, debts, a kitchen till and stock — for any number of clubs on one server, each blind to the others' data.
My contribution
- Sole engineer — 69 commits, 459 test functions.
- Multi-tenant user model and organisations, with a superadmin console across clubs.
- Billing engine for time-based sessions, counter sales and debts that require a customer phone number.
- Live floor state over Django Channels: a table started on the laptop appears on the Telegram Mini App and back again.
- Kitchen workflow with a spoken order queue; roles confined so the kitchen sees only the kitchen.
- Stock ledger with auto-consume on delivery and low-stock alerts; profit analytics from money that actually left.
- Backups to an allow-listed Telegram destination only.
Architecture
- Django 5.2 + Channels on Daphne; PostgreSQL; Redis as the channel layer.
- aiogram for the bot and Mini App; receipts with ReportLab.
- Docker Compose with Caddy terminating TLS.