INOVIT Dealer Portal
A B2B e-commerce platform replacing a legacy .NET ERP — 49 API endpoints, 4-region database routing, cross-repo OpenAPI type generation, and zero-downtime migration on a shared production SQL Server.
A B2B e-commerce platform replacing a legacy .NET ERP — 49 API endpoints, 4-region database routing, cross-repo OpenAPI type generation, and zero-downtime migration on a shared production SQL Server.
A multi-tenant wheels and tyres ERP and commerce platform — one Django backend, a shared React UI kit, five portals, a storefront, a Rust CLI with an MCP server. My layer is the one underneath: an engineering contract of 160 rules that no repository is allowed to copy, and the agent workflows that hold fifteen repositories to it.
A mobile-first PWA for Sydney badminton: a 54-venue directory with live court availability aggregated from the venues' own public booking pages, a game ledger with bill-splitting and a gear log, plus friends, groups and notifications. A personal, non-commercial demo — bilingual, self-hosted, registration by invite code only.
A bilingual portfolio with an AI assistant grounded in the site's own content, privacy-first analytics, blog, photography gallery, and WCAG AAA accessibility — 17 pages, 17 API routes, self-hosted on my own Docker stack, all solo-built.
Agentic engineer, fullstack developer and photographer in Sydney. I build production systems and photograph the coast they sit on.
“The same eye for structure shapes a service boundary, a deployment pipeline and the edge of a frame.”