tl;dr:
- 3459 lines of code added (+3378 net)
- 48 test functions across 9 new test files
- 30 commits: 25 for new features and tests, 2 fixes, and 3 chores
- Complete build pipeline rewrite: Docker replaced with ko (daemonless); no more external actions
- Dex integration with JWT validation middleware + rate limiting
- Full REST API: 8 endpoints for tenants + member CRUD
- CLI tool: login via Dex password grant, 9 subcommands for management
Part 3 ended with a promise: “authentication, an API gateway with rate limiting built-in, and if I’m feeling generous both a CLI tool and a Web UI”. On the surface, I failed because I’m not delivering on the full promise, as there’s no Web UI (yet!). But there’s so much more that was added besides what was promised. We have a lot of tests! We have an even better CI/CD pipeline! We eliminated external dependencies! We have Helm charts! And, of course, we have all the other promises that were made before. I feel like this is a good trade-off: less show-off, but better foundations.