Method
Specs before code
Every case on this site follows the same rule: behavior lives in a specification before it lives in an endpoint. When the two disagree, that gets fixed like any other bug. Knoxis is the clearest example: the invariant that no column anywhere links a vote back to the person who cast it was written down before the votes table existed, and a schema-introspection test now fails the build if any future migration adds one. FECOT’s graduation workflow is the same instinct applied to a business rule: an athlete’s rank changes only through a request-and-approval flow, decided and written down before a single endpoint touching that field was built, specifically so a rewrite couldn’t quietly drop a rule the old system already enforced.
Every decision carries its own cost
A choice only counts as engineering once its cost is written down next to it. Every case here documents what was chosen, what was discarded instead, why, and what it costs, in the open, next to the decision itself. This portfolio project holds itself to the same standard: eleven architecture decision records, each with the alternative considered and the reason it lost, cover everything from picking a static site generator to how a client’s cover image is allowed to be a real screenshot instead of generated art. Code Sphere’s container lifecycle decision is a case-level example: containers exist for sixty students but only sixty and never all run at once, a choice that trades a slower first login for a server that doesn’t need to be four times bigger.
A rule nobody has to remember
A rule that depends on someone remembering it eventually gets forgotten. The projects on this site turn absolute rules into checks that run automatically and block a release when they fail, instead of living as documentation that hopes to be read. FunilChat AI’s tenant isolation is enforced by PostgreSQL row-level security first, and a consolidated test walks every table to confirm the policy is actually there, so the guarantee doesn’t rest on anyone double-checking a migration by hand. This site’s own build works the same way: a script scans every published word for a client name that was never authorized, another confirms every English page has a Portuguese twin and vice versa, and the build simply refuses to finish if either one fails.
Working with an AI coding assistant, on purpose
Every case on this site, and the site itself, was built pairing with an AI coding assistant, and that’s stated here rather than left for someone to notice. The discipline is what makes that safe to say out loud: no metric appears without a way to reconstruct it from the real codebase, no case gets written before the underlying code has actually been read, and a mechanical scan blocks the build the moment an unauthorized client name, a secret, or an invented number tries to slip into anything publishable. The assistant writes quickly; the specs, the ADRs, and the checks are what keep quickly from turning into carelessly.
Interested in a project like this? Get in touch.
Get in touch