Backend Systems
Node.js services with a clean controller and service split, REST and webhook integrations, and background workers that survive a restart.
- Node.js
- Express
- Workers
- REST APIs
Backend engineer building data-heavy services: POS and ERP integration, financial reconciliation, and forecasting that operations can plan against.
Data engineering, modelling
A bags and apparel business planned stock and budget from spreadsheets, with no view of what demand was likely to do next.
dbt marts in ClickHouse feed a Python worker, a Prophet baseline with LightGBM models, and a FastAPI serving layer, writing daily 0 to 6 month and monthly 6 to 24 month horizons back into the warehouse. Every modelling decision is recorded with the evidence behind it.
Schema design, full stack
A retail business ran purchasing, stock and cash across spreadsheets, so cost of goods and the real stock position were both estimates.
A Next.js and Prisma application on Postgres covering purchase orders, an inventory ledger with stock opname, sales transactions, cash movements, and price plus cost history, with an audit log on every write.
Architecture, media pipeline
Photographers needed to deliver and share client galleries without running their own storage and image pipeline.
Multi-tenant by custom domain on Prisma, with albums, pages and download analytics. A BullMQ worker on Redis handles image processing while originals are stored on NAS storage over WebDAV and Cloudflare R2 serves the CDN copies.
Full stack
Event photo booth sessions ended with guests waiting for someone to copy files off a laptop.
Next.js on Supabase for database and storage. Sessions hold their photos, a QR code per session and an email download link hand them to guests, and the download page needs no account.
Full stack, multi-tenant
Invitations sent as a static image cannot collect RSVPs or keep a guest list in one place.
Next.js with Prisma and NextAuth: themes per invitation, a guest list with RSVP, comments and an event schedule, with forms validated end to end by zod and React Hook Form.
Node.js services with a clean controller and service split, REST and webhook integrations, and background workers that survive a restart.
SQL-first modelling and query work across MySQL, Postgres and ClickHouse, from schema design through aggregation at volume.
Money flows that have to balance: purchase and sales ledgers, cost history, and exports that tie back to the source system.
ELT into the warehouse, dbt marts, and the formatted outputs operations asks for: XLSX, CSV and PDF pipelines.
Containers, object storage and CDN delivery, with the unglamorous parts handled: migrations, backups and repeatable deploy paths.
Type-safe interfaces over the same data: Next.js applications, BI dashboards, and the admin screens an ops team actually uses.
Systems that hold under pressure, not just in a demo.
Code the next engineer can read, extend and trust.
Steady progress over bursts of unfocused effort.
Actively exploring new tools and better approaches.
Open to backend and data engineering roles, and to contract work on systems that have to be right: ledgers, reconciliation, integrations.