Full-Stack Engineer · Business systems, APIs and offline-first mobile
I build and maintain the software companies run on: ERP and SaaS platforms, the REST APIs behind them, and the mobile clients their teams use in places with no signal. Most of my work is production systems with real users, real money and real regulatory obligations, which shapes how I think about correctness far more than any framework preference.
The repositories below are the parts of that work I can publish. Client code is not here; what is here was either written independently or rebuilt from scratch in a neutral domain, with the engineering intact and the business removed.
| field-ops-offline-sync | Offline-first data capture. A local write queue with client-generated identity, an idempotency ledger that commits in the same transaction as the domain row, and a delta cursor lagged on purpose so it can never miss a record. Expo client, PHP API, 116 tests. |
| membership-platform-api | Multi-tenant SaaS backend where isolation is structural: the data layer refuses to compile a query that does not reference the tenant, and the tenant comes from the token rather than the request. Node, Express, MySQL, 197 tests. |
| split-payments-checkout | Payment checkout that divides a sale between two producers at the moment it is paid, behind a swappable gateway interface. Three layers of idempotency, integer-cent arithmetic, webhook-driven settlement. |
| erp-architecture-case-study | How two production systems are actually built — session hardening, secrets at rest, traceability, e-invoicing, bank integrations — with the constraints that produced each decision, seven runnable reference implementations, and an honest list of what I would do differently. |
| finbot-expense-assistant | A Telegram bot that turns plain-language messages into a structured ledger with an LLM, and asks instead of guessing whenever the model is not confident. Python, SQLite. |
Languages PHP 8 · JavaScript · Python · SQL
Backend REST API design · Node.js / Express · PDO · JWT and session authentication · RBAC · multi-tenancy · webhooks and idempotency · background and scheduled work
Frontend & mobile React Native / Expo · offline-first architecture · SQLite on device · server-rendered PHP
Data MySQL / MariaDB · SQLite · schema design and migrations · reporting and financial aggregation
Integrations Payment gateways and split payments · bank APIs, payment slips and reconciliation · government e-invoicing · access-control hardware · GS1 barcode traceability · LLM APIs
Infrastructure Apache · shared and managed hosting · Composer · cron-driven scheduling · environment-based configuration
Engineering Software architecture · security by design · technical documentation · legacy modernisation
Most of my systems run on constrained infrastructure — no orchestrator, no message broker, no platform team — for organisations where a wrong number is an accounting problem rather than a bug report. That environment rewards a particular kind of engineering: defaults that fail safe, errors that diagnose themselves, and code the next person can read without me in the room.
I document decisions, not just APIs. Every repository here states its trade-offs and its limitations, because a design is only judgeable if you can see what it gave up.
LinkedIn · Open to international opportunities, remote or relocation.