Selected work
- Payments / Fintech·Senior Full-Stack Developer·2024–present
Re-platforming a payments system: four legacy codebases into one
A payments platform had grown into four separate legacy codebases nobody could safely change. I designed the modern replacement - a three-tier, type-safe, modular architecture - and, as its primary developer, am rebuilding it feature by feature, with no big-bang cutover.
- 66%
- of all commits, authored personally (2,846 across seven repos)
- 4 → 1
- legacy codebases consolidated into one modular platform
- 5
- repositories designed and built end to end
- Payments / Fintech·Senior Full-Stack Developer·2026
Making AI safe for a team: skills, MCP servers, and hard gates
AI assistance that is fast for one careful developer is a liability for a team of six. I built the infrastructure that makes it the other way round - executable workflow skills, four MCP servers, and guardrail hooks that block the destructive command before it runs - packaged as an installable plugin.
- 43
- tools exposed across 4 purpose-built MCP servers
- 14
- executable workflow skills, installable in any repo
- 9
- guardrail rules that block destructive commands before they run
- Payments / Fintech·Senior Full-Stack Developer·2026
From 23 seconds to 2: killing a 32-join view query
A store-listing page took 23 seconds to load. The culprit was an innocent-looking database view hiding 32 joins across 3.9 million rows - queried twice per request, just to fetch a list of IDs. Here is how I found it and made it 10× faster with no new infrastructure.
- 10×
- faster page load (23.3s → 2.3s)
- 660×
- faster on the core access-control query
- 0
- new infrastructure, dependencies, or schema changes
- Payments / Fintech·Senior Full-Stack Developer·2026
Documenting a system nobody fully understood
A legacy platform with no documentation and business logic split across four codebases. I reverse-engineered it into a 138-page reference that mapped roughly 820 legacy actions to their replacements, so the migration ran against a map instead of guesswork.
- 138
- pages, sole author, from scattered wiki notes
- ~820
- legacy actions mapped to their replacements
- 4 → 1
- source codebases reconciled into one reference
- Payments / Fintech·Senior Full-Stack Developer·2024–present
Killing API schema drift with a generated, type-safe client
Two codebases, one API contract, and a constant tax of "the frontend thinks this field is a string." I made the OpenAPI spec the single source of truth and wired a pipeline that turns it into a typed TypeScript SDK - so drift becomes a compile error, not a production surprise.
- 1
- source of truth - the OpenAPI spec, generated from code
- 0
- hand-written API types on the frontend
- Auto
- SDK regenerated, versioned & published on every change
- Payments / Fintech·Senior Full-Stack Developer·2024–present
Making architecture enforce itself: standards, tests, and AI-augmented delivery
A greenfield platform is only as good as the system around it. I built the standards, quality gates, and tooling that keep a six-developer team on the architecture on a stack none of them had used - including custom static-analysis rules and an AI workflow that encodes the architecture itself.
- 1,400+
- backend tests (Pest), plus 900+ frontend unit & Playwright e2e
- Custom
- static-analysis rules that enforce the architecture
- 100%
- of commits run through automated quality gates
- Payments / Fintech·Senior Full-Stack Developer·2025
Multi-factor auth on a system that had none
The legacy platform had a single password gate and no second factor. I built multi-factor authentication end to end - email and authenticator-app OTP, the enrolment flow, and environment-aware password recovery - on a new stack, as a clean vertical slice from database to route.
- 2
- second factors: email OTP and authenticator app
- 0 → full
- MFA where the legacy system had a bare password gate
- Vertical
- slice owned end to end: entity, repository, service, handler, route