sam-4screen-desktop 2026-10-27:13:6:28

This commit is contained in:
2026-10-27 13:06:28 +11:00
parent 5bc20e1803
commit 1e4bcb660c
3 changed files with 94 additions and 1 deletions

View File

@@ -212,6 +212,7 @@
},
"active": "7066c9273c6fb936",
"lastOpenFiles": [
"010 inbox/Basketball Team Manager.md",
"010 inbox/Paperclip board — operator notes and key model.md",
"010 inbox/Documentation audit — MiniMax Voice.md",
"010 inbox/_sort log.md",
@@ -238,7 +239,6 @@
"200 projects/Tools Software WebUI/MiniMax Voice — Cloud STT and TTS with Local Fallback.md",
"300 areas/355 AI Research and Techniques/Ai memory management.md",
"200 projects/Tools Software WebUI/Family Console.md",
"200 projects/Tools Software WebUI/Family Home Lab.md",
"010 inbox/Family Holiday Camping Wilsons Prom.md~",
"010 inbox/_WATCHER",
"300 areas/355 AI Research and Techniques",

View File

@@ -0,0 +1,90 @@
---
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
- showcase
confidence: 0.64
approved: false
proposed_for: 0a80ebb49dd2
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
tools:
- Go 1.26
- HTMX 2
- Python 3
- Node.js
- Baileys
- Caddy
- PlayHQ API
- Apprise
---
# 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 that go into the team WhatsApp group. It shows the same information on a small private website, so any parent can check the roster from a phone.
The club does not publish a usable fixture feed for parents. PlayHQ holds the data, so the project reads it from the PlayHQ API and fills in the time, venue and opponent. The volunteer does not retype anything.
## 🌟 Key Highlights (Portfolio & Employment)
- **Concept**: A small service that turns a weekly volunteer chore into an automatic roster, plus a published web page and group messages.
- **Tools & Skills Showcase**: One Go binary with HTMX and no build step. Python owns the rules and the Go layer only renders. The PlayHQ GraphQL endpoint was found from the public site bundle. WhatsApp posting uses a linked-device client behind a small HTTP bridge, so other tools can post through it. Deployed behind Caddy with basic auth and systemd user units.
- **Practical value**: The roster, the messages and the website cannot disagree, because one Python module builds all three. A swap between parents is recorded once, and the roster moves the people automatically.
## 📐 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 -. copy draft .-> Bridge[WhatsApp bridge .13:8421]
Bridge --> Group[Team WhatsApp group]
Apprise[Apprise or cron] --> Bridge
PlayHQ[PlayHQ API] --> Fetch[tools/fetch_fixtures.py]
Fetch --> Data
EDJBA[EDJBA season dates] --> Data
```
## 🔗 Related Notes & Links
- Live site: https://basketball.lab.audasmedia.com.au (basic auth)
- WhatsApp bridge: https://wa.lab.audasmedia.com.au
- Code: `/home/sam/home_network/custom_tools/basketball_team_manager/` (not yet in Gitea)
- Deploy notes: `DEPLOY.md` in the project folder
- 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.
-->

View File

@@ -20122,3 +20122,6 @@ What the watcher did, newest last.
### 2026-10-26 20:21:18
- **proposed** `Paperclip board — operator notes and key model.md` → `200 projects/210 AI Resume` (confidence 0.92)
- - JEV was torn: bucket 'area' but folder implies 'project' — review before applying
### 2026-10-27 12:56:21
- **proposed** `Basketball Team Manager.md` → `200 projects/Tools Software WebUI` (confidence 0.64)