Skip to content
← Back home

build log

Working notes

A running diary of one system being built: what I chose, what broke, and what I got wrong on the way. Unlike the project write-ups, nothing here is finished.

  1. Part 1 · 27 Aug 2026

    Rebuilding a dashboard nobody asked me to replace

    A school runs its whole operation from a Google Apps Script system that works. I read the handover pack looking for the case to replace it, found none, and started anyway — for different reasons.

    Architecture · NestJS · Postgres · Planning

  2. Part 2 · 29 Aug 2026

    Two bugs deep: a Google sign-in that refused to work

    Every automated check was green and the last item was me clicking a button. The click took two days, two stacked bugs, and taught me more than the rest of the milestone.

    OAuth · Better Auth · Docker · Debugging

  3. Part 3 · 31 Aug 2026

    Three green checks that tested nothing

    Deploying to a mini-PC under my desk, three separate checks came back green while testing nothing at all. I believed two of them out loud before we caught it.

    Testing · Deployment · Postgres · AI agents

  4. Part 4 · 4 Sept 2026

    Seven bugs that lived between the tasks

    Seventeen tasks, seventeen approving reviews, and a milestone that files attendance and pays teachers over HTTP. The last review found seven defects, and not one of them was inside a task.

    Testing · Postgres · OpenAPI · AI agents

  5. Part 5 · 5 Sept 2026

    The only red run was the first one

    Twenty-three CI runs since August. One failed, twenty seconds in, on the first day. Every run since has been green, including the weeks when sign-in was broken and the pay port was wrong. Green meant something different each time.

    CI · GitHub Actions · pnpm · Testing

  6. Part 6 · 7 Sept 2026

    The database says no

    A teacher must never read another teacher's pay. Most projects enforce that in application code and hope. This milestone made Postgres enforce it, wrote tests that ask the database for its own refusal, and found the plan wrong in four places before the first line of code ran.

    Postgres · Row-level security · Authorisation · AI agents

  7. Part 7 · 8 Sept 2026

    Four bugs, four instruments

    The client milestone ran overnight: nine tasks, nine reviews, three green CI runs, a mergeable pull request. Four defects got through anyway, and each one was visible to exactly one instrument. Unit tests and reviews saw none of them.

    React · Playwright · Docker · AI agents

  8. Part 8 · 14 Sept 2026

    The backup that would have eaten itself

    The last milestone was the half of full-stack nobody practises: images pulled from a registry, secrets rotated, nightly encrypted backups, a restore drill, error tracking, and a runbook. Four pull requests, each deployed before the next. The worst bug of the five days was a sentence in the runbook, and the second worst was me trying to hand a secret to an AI agent.

    Backups · Postgres · Sentry · Docker · AI agents