/ Shipped Work

Architecture decisions you can read in the code

Each project below starts with a constraint. The stack, the diagram, and the tradeoffs follow from there.

Close-up overhead view of a multi-panel system architecture diagram spread across a large monitor, cool studio lighting, microservice topology lines in cyan on dark background, database nodes labeled in monospace type, no people
Close-up overhead view of a multi-panel system architecture diagram spread across a large monitor, cool studio lighting, microservice topology lines in cyan on dark background, database nodes labeled in monospace type, no people
Wide terminal window showing a database migration script in progress, monospace font on dark background, cursor blinking mid-line, cool overhead lighting on a keyboard below
Wide terminal window showing a database migration script in progress, monospace font on dark background, cursor blinking mid-line, cool overhead lighting on a keyboard below
Multi-monitor developer workstation showing a React dashboard with data charts, cool diffused daylight from the left, no people, clean desk surface with a notebook showing hand-drawn component tree
Multi-monitor developer workstation showing a React dashboard with data charts, cool diffused daylight from the left, no people, clean desk surface with a notebook showing hand-drawn component tree
Infrastructure topology diagram printed on paper, annotated with a red pen, laying on a desk under cool daylight, AWS region boxes visible, arrow lines between services
Infrastructure topology diagram printed on paper, annotated with a red pen, laying on a desk under cool daylight, AWS region boxes visible, arrow lines between services
— Constraint: sub-100ms p99

Real-time logistics orchestration platform

Event-driven microservices on Node.js + Kafka, PostgreSQL read replicas per region. Chose boring infrastructure over managed graph DB to hit latency targets.

Stack: Node.js · Kafka · PostgreSQL · AWS ECS · Terraform

— Constraint: zero-downtime migration
— Constraint: offline-first sync
— Constraint: SOC 2 compliance

Field operations mobile app

Healthcare API gateway and audit layer

SaaS multi-tenant data layer rebuild

Schema versioning via expand-contract pattern. Phased tenant cutover with feature flags. PostgreSQL row-level security replaced a brittle application-layer filter.

Flutter + local SQLite with CRDTs for conflict resolution. Sync layer built on top of a REST delta API — rejected real-time WebSocket as over-engineered for the network profile.

Node.js gateway with immutable audit log in append-only Postgres table. Encryption at rest and in transit enforced at the infrastructure layer via Terraform, not application code.

Side-by-side system architecture diagram on a large screen, left panel showing a tightly coupled monolith with red dependency lines, right panel showing decoupled event-driven services with cyan arrows, dark background, cool studio lighting, no people
Side-by-side system architecture diagram on a large screen, left panel showing a tightly coupled monolith with red dependency lines, right panel showing decoupled event-driven services with cyan arrows, dark background, cool studio lighting, no people
+ Before / After

System redesign: from monolith to event mesh

The client's monolith deployed once a month. Every service shared a single Postgres schema — a change to billing broke inventory. We mapped every coupling before writing a line of new code.

After 14 months: 12 bounded services, independent deploy pipelines, p99 latency cut by 60%. The debt audit defined the sequence — we didn't rewrite, we extracted.

Stack: Node.js · RabbitMQ · PostgreSQL per service · Docker · AWS ECS · GitHub Actions

Frontend
▸ Production Stack

React + Next.js for SSR where SEO matters; plain React SPA where it doesn't. TypeScript everywhere — the type errors we catch in CI are the production bugs we don't ship.

Chosen for debuggability, not fashion

Backend & Data

Node.js and Python for services; PostgreSQL as the default database. MongoDB only when the document model genuinely fits — not as a default to avoid schema discipline.

Every tool here has been in production under load. We pick the stack after reading the constraints — not before the scoping call.

Infrastructure

AWS as primary cloud, Docker for containerization, Terraform for infrastructure-as-code. We provision the same way in staging as in production — no configuration drift.

Bring us the constraint. We'll map the architecture.

Book a scoping call. We diagnose before we propose — no canned estimates, no template decks.