Files
obsidian-vault/010 inbox/Basketball Team Manager.md

125 lines
4.7 KiB
Markdown

---
title: Basketball Team Manager
type: note
status: active
proposed_folder: 200 projects/Tools Software WebUI
proposed_toc: "100 Table of Contents/Projects.md → Tools & Software"
proposed_tags:
- project
- architecture
- go
- htmx
- basketball
- team
- showcase
confidence: 0.55
approved: false
proposed_for: d0b4eefd4b16
created: "2026-10-27"
tags:
- project
- basketball
- showcase
aliases: []
skills:
- Go web service
- HTMX
- Python data tooling
- GraphQL API reverse engineering
- WhatsApp automation
- Caddy reverse proxy and basic auth
- systemd user services
- n8n scheduling and alerting
- Apprise notifications
tools:
- Go 1.26
- HTMX 2
- Python 3
- Node.js
- Baileys
- Caddy
- PlayHQ API
- n8n
- Apprise
- ntfy
---
# Basketball Team Manager — Overview
## 💡 What is this project?
A parent volunteers to run the score sheet roster for an under-18 basketball team. Eight families take turns. One parent fills in the paper score sheet at each game.
This project does the bookkeeping. It keeps the season fixtures, works out whose turn it is, and writes the messages for the team WhatsApp group. A small private website shows the same information, so any parent can check the roster from a phone.
The club publishes no usable fixture feed for parents. PlayHQ holds the data, so the project reads the PlayHQ API and fills in the time, venue and opponent. The volunteer types nothing twice.
## 🌟 Key Highlights (Portfolio & Employment)
- **Concept**: A small service that turns a weekly volunteer chore into an automatic roster, a web page and group messages.
- **Tools & Skills Showcase**: One Go binary with HTMX, no build step. Python owns the rules and Go only renders, so the site, the CSV and the messages cannot disagree. The PlayHQ GraphQL endpoint was found by reading the public site bundle and needed a `tenant` header. WhatsApp posting uses a linked-device client behind a small HTTP bridge. n8n runs the weekly schedule and alerts by email and phone through Apprise when a run fails.
- **Practical value**: The volunteer records one line after a game. The roster, the weekly messages and the alerts follow. Swaps between parents correct themselves.
## 📐 Architecture & Flow
```mermaid
flowchart LR
Phone[Parent on phone] --> Caddy[Caddy .35 - basic auth]
Caddy --> Site[Go + HTMX site .13:8420]
Site --> Plan[tools/plan.py]
Plan --> Data[(data JSON files)]
Site -->|record result| Data
Site -->|POST /send| Bridge[wa-bridge .13:8421]
Bridge --> Group[WhatsApp group CW U18 B10]
N8N[n8n on .13] --> Site
N8N -->|failure alert| Apprise[Apprise .35:8210]
Apprise --> Email[samuelrolfe@gmail.com]
Apprise --> Ntfy[ntfy topic btm-alerts]
PlayHQ[PlayHQ API] --> Fetch[tools/fetch_fixtures.py]
Fetch --> Data
EDJBA[EDJBA season dates] --> Data
```
## 🗓 The week
| When | What |
|---|---|
| Thursday 3pm | Training reminder. Names the next game's timekeeper so parents can swap. |
| Friday 9am | Refresh fixtures from PlayHQ. |
| Friday 9:05am | Game details with map link, arrival time and scorer. |
| Friday 4pm | Post again only if the message changed. |
| Holiday Thursday | "No training tonight", with the date training resumes. |
| Friday, no game | "No game this weekend", with the next round named. |
Training is Thursday 7:45pm to 8:45pm at Bundha Sports Centre, 111 Queens Parade, Fitzroy North. No training in school holidays.
## 📇 Contacts
| Who | Number |
|---|---|
| Coach — Chris Ride | +61 402 080 949 |
| Team manager — Sam Rolfe | +61 423 274 487 |
| Club admin (in the group as an admin) | +61 460 323 123 |
| Ella Parker, Competitions Coordinator | +61 3 9000 5632, ella.parker@collingwoodbasketball.com.au |
The website lists the same contacts on the home page.
## 🔗 Related Notes & Links
- Live site: https://basketball.lab.audasmedia.com.au (basic auth, user `sam`)
- WhatsApp bridge: https://wa.lab.audasmedia.com.au
- Interactive map: [Archify map](https://maps.lab.audasmedia.com.au/basketball_team_manager/docs/)
- Gitea repo: https://gitea.lab.audasmedia.com.au/sam/basketball-team-manager (private)
- Alerts: ntfy topic `btm-alerts` at https://ntfy.lab.audasmedia.com.au/btm-alerts, plus email
- Project files: `DEPLOY.md` (hosting), `ROUTINES.md` (the week), `README.md` (how it works)
- AI context (Outline): not created yet
<!--
NOTES FOR THE AGENT WRITING THIS NOTE
* `type: note` is intentional. This note sits in the INBOX and the
obsidian-sorter assigns the real type from its final folder.
* Keep `skills:` and `tools:`. The sorter preserves these custom fields.
* Do NOT set another `type`, and do NOT pick a folder.
* The `project` tag keeps the sorter inside the projects bucket.
-->