← All projects

Building Identity System

Part 1

Building Identity System

Central login service: One place to type a password - Part 1

~25 min read Every small tool I build for myself eventually needs a login. A finance tracker, an invoicing app, a dashboard for something plugged in to the wall. The first time, I wrote the whole thing inline: a user table, Argon2 hashing, sessions, a password-change form, two-factor enrolment with recovery codes. It worked, it was even fairly pleasant, and then I looked at the second app on my list and realised I was about to write all of it again. This series is about the project I built ins
Andrew Townsend
Andrew Townsend
16 min read

Part 2

Building Identity System

Central login service: Shipping it - Jenkins, uv and a Debian container - Part 2

~25 min read Part 1 ended with a login service that passed its tests and ran on my laptop. That's the easy half. A login service that isn't reachable from the other machines in the house isn't a login service, and "reachable" brought a pile of small decisions and an unglamorous run of commits with messages like ci: add uv.lock, fix python missmatch and fix deploy script. This post is about all of that: the deployment target, the Jenkins pipeline, moving the build to uv, the rsync --delete that
Andrew Townsend
Andrew Townsend
14 min read