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

4.7 KiB

title, type, status, proposed_folder, proposed_toc, proposed_tags, confidence, approved, proposed_for, created, tags, aliases, skills, tools
title type status proposed_folder proposed_toc proposed_tags confidence approved proposed_for created tags aliases skills tools
Basketball Team Manager note active 200 projects/Tools Software WebUI 100 Table of Contents/Projects.md → Tools & Software
project
architecture
go
htmx
basketball
team
showcase
0.55 false d0b4eefd4b16 2026-10-27
project
basketball
showcase
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
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

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.