feat: initial dashboard implementation and robust attendance parsing

- Added a Makefile to easily run project scripts (fees, match, web, image)
- Modified attendance.py to dynamically handle a variable number of header rows from the Google Sheet
- Updated both attendance calculations and calculate_fees terminal output to show actual attendance counts (e.g., '750 CZK (3)')
- Created a Flask web dashboard (app.py and templates/fees.html) to view member fees in an attractive, condensed, terminal-like UI
- Bound the Flask server to port 5000 and added a routing alias from '/' to '/fees'
- Configured Python virtual environment (.venv) creation directly into the Makefile to resolve global pip install errors on macOS

Co-authored-by: Antigravity <antigravity@deepmind.com>
This commit is contained in:
Jan Novak
2026-02-27 13:19:00 +01:00
commit 3bfea4e0a4
16 changed files with 1322 additions and 0 deletions

61
docs/project-notes.md Normal file
View File

@@ -0,0 +1,61 @@
# Sports Club Financial Management — Project Notes
> **Context for Claude Code:** This document captures an ongoing brainstorming session
> started in Claude.ai chat. The owner is an experienced SRE/programmer. We are still
> in the discovery/design phase — no code has been written yet. Next steps: fill in
> current state (Section 3), then move into incremental automation design and implementation.
## 1. Project Goal
Design and incrementally automate financial and operational management for a small sports club.
## 2. Domain Entities (Draft)
- **Members** — roster, roles (player/coach/parent), contact info, membership status
- **Fees** — recurring (monthly/seasonal), one-off (tournament entry), per-member or per-family
- **Attendance** — practice sessions, matches, tournaments; who showed up
- **Expenses** — facility rental, equipment, travel, referee fees, insurance
- **Ledger** — income (fees, sponsors, fundraising) vs. expenses; balance tracking
## 3. Current State
_TODO: To be filled — critical input needed before design/implementation._
- Club size (members, teams):
- Current tooling (spreadsheets? paper? existing app?):
- System users (besides owner):
- Biggest pain point / what to solve first:
## 4. Automation Candidates (by estimated ROI)
1. Fee billing & payment tracking (reminders, status per member)
2. Attendance logging (check-in mechanism)
3. Expense categorization & reporting (monthly summaries, budget vs. actual)
4. Tournament management (signup, fee collection, travel)
## 5. Tech Considerations
- Who operates / interacts with the system?
- Complexity spectrum: Spreadsheet + Apps Script → lightweight web app → full platform
- Integration points: Slack, Google Forms, payment gateways, etc.
- **PII caution:** member data (names, emails, payment info) must stay out of git from day one. Enforce config/data separation early.
## 6. Suggested Approach
1. **Map domain** — finalize entities and workflows (Section 2 & 3)
2. **Identify pain points** — what's the worst manual step today?
3. **Design automation incrementally** — start with highest-ROI item
4. **Build** — iterate in this repo
## 7. Open Questions
- All items in Section 3 are unresolved.
- Tech stack TBD — depends on who the users are and complexity needs.
## 8. Decision Log
| Date | Decision | Rationale |
|------------|---------------------------------------|--------------------------------------------------------------|
| 2025-02-11 | Store project docs in git repo | Markdown-native, versioned, natural evolution toward code |
| 2025-02-11 | Hybrid workflow: chat → Claude Code | Chat better for brainstorming; Claude Code for building |
| 2025-02-11 | PII stays out of repo from day one | Avoid retrofitting data separation later |