Skip to content

Repository files navigation

BarBoard

Self-hosted bar staff management — scheduling, time clock, tip pool, and payroll estimates. Runs on any PC or Raspberry Pi; staff access it from any phone or laptop on the same WiFi.

Python Flask License

Hobbyist project — personally tested and stable for day-to-day use, but not a certified payroll or HR system. See the disclaimer below.


Features

Module
📅 Schedule Monthly calendar, shift assignment, colour-coded attendance
🕐 Time Clock PIN-protected, trusted-device lock, punctuality tracking
🔁 Shift Swaps Staff request → target accepts → manager approves
🏖️ Leave Requests Vacation / sick / personal — manager approve/reject
✍️ Writeups Manual + auto-generated (lateness, no-show)
💰 Tip Pool Distribute by hours worked, role snapshot, full audit trail
📊 Payroll Estimates Hours × rate + daily OT at 1.5×
🏠 Dashboard Today's shifts, late clock-ins, no-shows, pending approvals

Quick Start

git clone https://github.com/techsociology/barboard.git
cd barboard
python -m venv .venv && source .venv/bin/activate   # Windows: .venv\Scripts\activate
pip install -r requirements.txt
python app.py

Open http://localhost:5050 — default login is admin / admin123, change it immediately.


Accessing from Other Devices

  1. Find the host machine's local IP — Windows: ipconfig, Mac/Linux: ip addr
  2. On any device on the same WiFi open http://<that-ip>:5050
  3. No app install needed, works in any browser

Data & Backups

Everything is stored in a single SQLite file — barboard.db, created automatically on first run.

How you run it Where the DB lives
python app.py Next to app.py in the project folder
Windows .exe (run directly) Same folder as BarBoard.exe
Windows (installed via Setup.exe) %APPDATA%\BarBoard\barboard.db
Linux binary Same folder as the BarBoard binary
BARBOARD_DATA env var set <BARBOARD_DATA>/barboard.db
BARBOARD_DB env var set Exactly the path you set

Backup — copy barboard.db anywhere safe. Restore — replace the file and restart. Wipe — delete the file; a fresh database is created on next startup.

barboard.db and .secret_key are in .gitignore and should never be committed.


Building from Source

Windows

Double-click build_exe.bat. Output lands in dist\BarBoard\. Optionally install NSIS first to also get a single BarBoard_Setup.exe installer.

Linux

bash build_linux.sh
# output: dist/BarBoard/BarBoard

Linux from Windows (WSL2)

# In Ubuntu (WSL) — clone into Linux home dir, not /mnt/c
cd ~
git clone https://github.com/techsociology/barboard.git && cd barboard
bash build_linux.sh
cp -r dist/BarBoard /mnt/c/Users/YourName/Desktop/

Clone into ~, not /mnt/c/... — Windows drives cause permission errors in WSL.


Environment Variables

Variable Default
BARBOARD_DB barboard.db next to the script Override DB path
SECRET_KEY Auto-generated .secret_key file Set to keep sessions across restarts
PORT 5050 Listening port
FORCE_HTTPS 0 Set 1 when behind an HTTPS proxy

Payroll & Compliance Disclaimer

BarBoard estimates only — regular hours × rate + OT hours × rate × 1.5. It does not calculate tax withholdings, benefits, or jurisdiction-specific labour rules. Do not use these figures to issue paychecks without review by a qualified payroll provider.

Daily OT = hours worked past the scheduled shift end. Clock-ins with no linked shift count entirely as OT.


Roles

Role Access
admin Everything — users, settings, trusted devices, delete records
manager Schedule, time records, reports, tips, writeups, approve requests
staff Own time clock, schedule view, availability, swap & leave requests

Acknowledgements

Project Role
Flask Web framework
Werkzeug WSGI utilities & password hashing
Flask-WTF CSRF protection
Flask-Talisman Security headers
Flask-Limiter Rate limiting
Waitress Production WSGI server
PyInstaller Standalone executables
NSIS Windows installer

Built with assistance from Claude (Anthropic AI) ❤️ — see CONTRIBUTING.md to get involved.


License

MIT — see LICENSE.

About

Self-hosted staff scheduling & time-tracking app for bars — shifts, time clock, tip pool, and payroll estimates. Flask + SQLite.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages