FUJ Management System
Welcome to the FUJ Management System, a streamlined solution for managing Ultimate Frisbee club finances, attendance, and member payments. This system automates the tedious parts of club management, keeping your ledger clean and your reconciliation painless.
🚀 Mission
The project's goal is to minimize manual entry and potential human error in club management by:
- Automating Bank Synchronization: Periodically fetching transactions from Fio bank.
- Smart Inference: Using heuristics to match bank transactions to members and payment periods.
- Visual Reconciliation: Providing a clear, real-time web dashboard for managers to track who has paid and who is in debt.
✨ Key Features
- Seamless Bank Integration: Synchronize transactions directly from the Fio bank API into a Google Spreadsheet.
- Intelligent Matching: Automatic detection of member names and payment periods from transaction messages using diacritic-insensitive Czech text processing.
- Dynamic Dashboard: A Flask-powered web interface displaying monthly fees, payment status (OK, Partial, Unpaid), and total balances.
- Manual Overrides: Support for fee exceptions and manual payment matching when automation needs a human touch.
- QR Payment Generation: Integrated QR code generation to make paying outstanding fees trivial for members.
🛠 Tech Stack
- Backend: Python 3.12+ (managed with
uv) - Web Framework: Flask with Jinja2 templates
- Data Storage: Google Sheets (used as a collaborative database)
- APIs: Fio Bank API, Google Sheets API v4
- Containerization: Docker / OCI Images
- Automation:
Makefilebased workflow
📂 Documentation Guide
- Architecture: High-level system design and data flow.
- User Guide: How to operate the system as a club manager.
- Support Scripts: Detailed reference for CLI tools.
- Deployment: Technical setup and infrastructure instructions.