Files
fuj-management/docs/by-gemini

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:

  1. Automating Bank Synchronization: Periodically fetching transactions from Fio bank.
  2. Smart Inference: Using heuristics to match bank transactions to members and payment periods.
  3. 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: Makefile based workflow

📂 Documentation Guide