Now
1 card · 4h
POST /create_field. Still need a real key/value write, a GET round-trip, lazy import / 503, and the service account. Do not put the client at module top.
Snapshot · · catch-up for anyone who has been away
The map is demoable. The API is live. Persistence is the work in flight.
Two repos, two hosts. The site is static on GitHub Pages.
The API is FastAPI on Cloud Run in London, version 0.1.3,
building again on Python 3.13 pack.
They only meet when the browser fetches
window.HACKATHON_API.
Noah is wiring that API to Firestore.
Next product slices still live on the map: a job list, a demo seed, and saving routes in the browser.
Sixty seconds
If you only have a minute, this is the whole picture.
hackathon-site is HTML on GitHub Pages.
hackathon-api is FastAPI on Cloud Run.
Clone them as siblings. .\start.ps1 starts both.
pack on ubuntu2404), not the Dockerfile.
Pinning Python 3.12 failed the build. Pin is 3.13. Live health is 0.1.3.
/health must stay cheap if the database is down. Card 11 (persist routes) waits on this.
defer, no npm. This page pings /health that way.
Docs live at /docs/. Board source of truth is scripts/cards.json, not hand-edited HTML.
Board, distilled
The kanban has the briefs. This is the order that matters if you just walked in.
1 card · 4h
POST /create_field. Still need a real key/value write, a GET round-trip, lazy import / 503, and the service account. Do not put the client at module top.
Demo the map, then fill it
app/. Polish and a teammate can add two pins without a briefing.
05 · ⚡ Connor · Ready
Route calculation
OSRM driving, haversine fallback. Sidebar shows distance, time, and engine.
07 · ⚡ Connor
Job list beside the map
Five Howden-shaped seed jobs. Click a job, something visible happens.
08 · 🧭 Reeve
Demo seed: five Tyneside stops
One button loads a named run so nobody clicks the map five times in a demo.
06 · 🌱 Lewis
Save routes in localStorage
Refresh must not wipe a demo. Fallback until the API can persist.
7 open · 13.25h
/health on :8080. Onboarding, not Cloud Run.
17 · 🧭 Reeve
GitHub loop on the API repo
Tiny change, still serves health, push to origin/main.
The room
Hours are the board totals. Focus is what to pick up tonight.
While you were away
20 cards · 22.25h on Done. Do not redo these.
3 September · card 30
ubuntu2404 has 3.13 and 3.14 only. A 3.12 pin failed Cloud Build. Root main.py, Procfile, and .python-version 3.13 make pack succeed. Live /health reports 0.1.3.
3 September · card 29
Docs is in the nav. Markdown in docs/, sidebar from pages.json, Alpine + marked. If you do not know how the two repos fit, open Architecture.
3 September · card 28
api-test.html calls GET /test_field on Cloud Run. First Alpine island. New UI behaviour goes here, not React/Vue/npm.
Cards 22 · 23 · 25
Front end and local API are up. VERSION is on / and /health. He moved from onboarding onto Firestore.
Cards 26 · 10
Site → GitHub Pages. API → Cloud Run. .\start.ps1 is still the local path. Cloud Run CORS allows the live origin and localhost:5500.
Cards 04 · 05 · onboarding loops
Click to pin, drag to move, calculate a driving route. GitHub loops and local FE/BE are done for Reeve, Connor, Michael, Noah; Lewis still has local API on the to-do list.
How it is wired
The two hosts never import each other. The browser is the join.
hackathon-site
Static HTML, styles.css, Alpine, Leaflet. Live at hackathon.tyneside.software. Local: :5500.
config.js sets window.HACKATHON_APIhackathon-api
FastAPI + Uvicorn. Live health 0.1.3. Local: :8080. Buildpacks, not the Dockerfile, on GitHub CD.
GET / · /health · /test_fieldPOST /create_field (Firestore work)file:// — the browser will block the API and the wiki.<!-- BOARD:… --> HTML. Change scripts/cards.json and run python scripts/update_board.py.Your next hour
Choose a length. Then open the matching surface — do not start a third plan.
Open the map, drop two pins, calculate a route. Hit API test and confirm JSON comes back. Skim architecture if the two-repo split is fuzzy.
Follow onboarding: clone both repos as siblings, run .\start.ps1, pull main. Home, map, and board must load on http://127.0.0.1:5500/. Then take a to-do card with your name on it.
Noah: Firestore round-trip on the live API. Reeve: demo seed. Connor: job list. Lewis: localStorage or local /health. Michael: persist routes only after 31 is green. Push origin/main — that deploys.