I build full-stack systemsthat hold up in productionnot just in staging.
TypeScript, React, and NestJS. 6 years shipping SaaS, ERP, and mobile for teams that run on uptime.


FWallet
“A finance app engineered for the edge cases most trackers ignore.”
The problem isn’t tracking transactions — it’s doing it reliably at 50k rows, offline, with two devices syncing at once and no data loss on reconnect.
- —Custom sync engine: works offline, reconciles on reconnect without data loss
- —Shared TypeScript core across iOS, Android, and web — one codebase, three platforms
- —Indexed query strategy keeps filters below 100ms past 50k records
- —Background sync with exponential backoff and conflict resolution

KOLO-APP
“Zero-downtime migration from a brittle monolith to a NestJS service layer.”
Strangler-fig migration from a legacy ERP into structured NestJS services. The constraint: production stays live throughout, parity is verified at every step, nothing regresses.
- —Incremental migration using strangler-fig — no big-bang cutover
- —Event-driven service communication via a message broker
- —Integration test suite with parity checks against the legacy system
- —99.9% uptime maintained throughout the 6-month migration window
F-CMS
“Each tenant gets their own environment. Not a folder — an actual isolated schema.”
Most multi-tenant platforms fake isolation with row-level flags. This one uses schema-per-tenant in Postgres — a misconfigured query in tenant A can never reach tenant B.
- —Schema-level tenant isolation — not row-level flags
- —Custom domain routing with per-tenant SSL termination
- —Webhook system for real-time delivery to external consumers
- —Approval workflows, roles, and granular field-level permissions

Engineering is more than writing code.
Three principles shaped by real failures — so they don’t have to become yours.
“Offline-first isn’t a feature you bolt on. It’s an architectural constraint — get it wrong on day one and you’re rewriting your entire sync layer to fix it.”
“Code that passes at 100 rows but breaks at 10,000 isn’t passing — it’s a delayed incident. I seed tests at production scale before anything ships.”
“Row-level multi-tenancy with flags is technical debt disguised as a feature. Real isolation means separate schemas — not WHERE clauses.”
TypeScript end-to-end. I choose tools based on what holds up in production — not what’s trending.
React · Next.js (App Router) · TypeScript · React Native · Tailwind CSS · Android Studio · Xcode
NestJS · Node.js · PostgreSQL · Redis · REST · GraphQL · MongoDB
Docker · AWS · Google Cloud · GitHub Actions · Nginx · Vercel · Turborepo
Claude · Cursor
If your next product
can’t afford to break,
let’s work.
Available for full-time remote roles and long-term contracts. I’m selective — I only take on work I can ship well.