๐ŸŒฑ Lewis Thomson ยท hackathon night ยท 27 Aug 2026

Lewis's log

Clone โ†’ run โ†’ edit โ†’ commit โ†’ push.

First onboarding card: prove the loop on a real machine, not a slide. This page is the write-up of what actually happened โ€” the two repos, the local stack, the obnoxious homepage banner, and the first push to Tyneside-Software/hackathon-site.

Repos cloned 2 site + API, as siblings
Local site :5500 Python static server
Local API :8080 FastAPI + uvicorn
First push b65badd banner landed on main

Why this mattered

The board's first cards are not product features. They are get the front end and back end running, then prove edit โ†’ run โ†’ push so the rest of the night can ship in slices.

The rule

Every card is a releasable increment. The site still has to look working when the card lands. Tonight started local-only โ€” no Cloud Run until Michael is back.

What we actually proved

GitHub auth, clone from the org, Python venv, two processes, a visible HTML change, a real commit identity, a rebase over teammates' work, and a fast-forward push to main.

What we did, in order

Same machine, same night. Each step is the thing we had to get right before the next one would work.

  1. 01

    Found the org repos

    The Tyneside-Software GitHub org has two hackathon repos: hackathon-site (GitHub Pages front end โ€” board, desktop, map) and hackathon-api (Python FastAPI, aimed at Cloud Run later). They are meant to be cloned as sibling folders.

  2. 02

    Cloned both locally

    Not into C:\WINDOWS\system32 (the default shell cwd). Both repos went into a proper folder:

    C:\Users\Lewis\repos\hackathon-site
    C:\Users\Lewis\repos\hackathon-api

    That match is what start.ps1 expects โ€” it looks next door for hackathon-api\app\main.py.

  3. 03

    Booted the stack

    System python is a broken WindowsApps stub; the real interpreter is Python 3.14 via the py launcher. We created a venv in the API repo, installed FastAPI and uvicorn, then started two processes:

    • Site: python -m http.server 5500 bound to 127.0.0.1
    • API: uvicorn app.main:app --reload --port 8080

    config.js already points the front end at http://127.0.0.1:8080, and the API CORS allow-list already includes the local site origin. No extra wiring was needed.

  4. 04

    Proved the pages were live

    Every URL we care about returned HTTP 200:

    The API is still a skeleton (root, health, docs). That is enough for tonight's first two hours: a live backend the site can talk to.

  5. 05

    Made an unmissable test change

    To prove edit โ†’ run without opening DevTools, we put a huge blinking LEWIS WAS HERE banner under the nav on the homepage. Hot pink, acid yellow, 0.7s blink. Refresh the home page and you cannot miss it.

    That is deliberately loud. The point of the card is that a change on disk is immediately visible in the browser, because we are serving files, not opening file://.

  6. 06

    Committed and pushed โ€” including the messy bits

    Git had no user.name / user.email on this machine. We set them locally in the repo from the GitHub account captainbikk โ†’ Lewis Thomson <captainbikk@gmail.com>, without touching global config.

    First push was rejected: Reeve/others had already landed a person filter on the board. We pulled with rebase (no force-push), then pushed cleanly.

    b65badd  Add obvious Lewis was here banner on the homepage.

    That commit is on origin/main. The GitHub loop card is done.

  7. 07

    Pulled again to stay current

    After the push we fetched both repos. Both working trees were clean and already matched origin/main. Site tip: the banner commit. API tip: README pointing at the org and start.ps1.

  8. 08

    Wrote this page

    A dedicated Lewis page, linked from the nav, so the night has a human-readable record of the first slice โ€” not just a git log. Attractive on purpose: the rule is the site should still look working when the card lands.

The local setup, explained

Nothing fancy. Two folders, two processes, one browser.

Piece What it is Why it is there
hackathon-site Static HTML / CSS / JS GitHub Pages later; tonight a local HTTP server so the API is not blocked by file://.
hackathon-api FastAPI app in app/main.py Health + CORS now; Cloud Run in London once Michael is back.
.venv Python 3.14 virtualenv Keeps FastAPI / uvicorn off the system interpreter.
config.js window.HACKATHON_API Points at http://127.0.0.1:8080 until a Cloud Run URL is pasted in.
start.ps1 Opens site + API windows The intended one-command boot once both repos sit side by side.

The loop we proved

  1. Edit Change a real file in hackathon-site.
  2. Run Refresh localhost โ€” the static server picks it up immediately.
  3. Commit Named files only, message in the repo's voice, local git identity set.
  4. Rebase Teammates had pushed. Integrate, don't overwrite.
  5. Push Land on origin/main so the next person pulls a working site.