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:
61
docs/project-notes.md
Normal file
61
docs/project-notes.md
Normal 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 |
|
||||
Reference in New Issue
Block a user