Weekly Commit #006
Last week I shipped the auth foundation for Tribo. This week I shipped four sprints on top of it.
Why it moved so fast
The honest answer: because Sprint 1 was slow on purpose. Once auth, RBAC, error handling, and the client interceptors were solid, everything after was just new endpoints sitting on a foundation that already worked. Momentum compounds when the boring part is done right.
Sprint 2, Activity Management
The first real feature: create, edit, cancel, discover, and join activities. An owner-or-privileged check so managers can only edit their own activities, not each other's. A backoffice verification gate so a self-registered manager can't act until they're cleared. Soft-cancel instead of hard delete, so participation history survives.
Sprint 3, making the prototype real
This is where the mock screens became live domains: full user profiles, clans, run logging with per-km splits and derived stats, an aggregated activity feed with kudos and comments, a clan ranking leaderboard, achievements and weekly goals. All backend-first, each screen wired to real data only once the endpoint behind it was deployed and curl'd. My favourite piece: a discovery map that plots activities by location, so you find things by looking at where they are, not scrolling a list.
Sprint 4, making it safe to show people
No new feature. A guessable seeded admin account got killed. CORS got locked to the real origin. And the whole thing finally got a CI pipeline, so a broken build can't reach main.
The throughline
Four sprints in a week isn't about typing faster. It's about what a good foundation buys you later, and about knowing the difference between "it works" and "it's ready."
Next up: the web is feature-complete, but the Flutter app is still catching up. Next week, mobile. Come back and see how far it gets.
#WeeklyCommit
Follow along here or on LinkedIn where I'll be sharing each new commit.