Selected work
Two projects, end to end — the problem, the architecture, and what actually shipped.
01 Personal project 2026
Money Diary
A personal finance tracker with an AI assistant that writes to the ledger — and a security model built on the assumption that the model is never to be trusted.
Solo — design, engineering, infra
- TanStack Start
- React
- PostgreSQL
- TypeScript
02 SAPPHIRE / Diamond Fabrics 2024
Invoice Portal
A supplier relation portal that lets suppliers submit invoices against their purchases, and keeps the system in step automatically.
Full-stack Engineer
- Next.js
- NestJS
- Tailwind CSS
- TypeScript
3+
years building
3
case studies
3
posts written
19
games played
Ethos
I treat what you're building as if it were mine.
What I do
01
Full-stack development
One person from the schema to the deployed page — React and Next.js on the front, NestJS and Express behind it, TypeScript throughout.
- Next.js
- React
- NestJS
- Express
- TypeScript
02
SaaS & dashboard development
Internal platforms that people use all day: the Supplier Invoice Portal and DCRM at Sapphire were both built end to end.
- Invoice Portal
- DCRM
- MUI
- Tailwind CSS
03
API development
REST services in NestJS and Express, including talking to systems that were never designed to be talked to — like SAP.
- REST APIs
- NestJS
- Express
- SAP
04
Database design
Schema and query design for the systems above — the invoice and CRM data models were mine, across PostgreSQL, MySQL/MariaDB, MongoDB, and SAP HANA.
- PostgreSQL
- MySQL / MariaDB
- MongoDB
- SAP HANA
05
Performance optimisation
Finding the slow thing and making it not slow: render paths, query plans, payload sizes.
- React rendering
- Database indexing
- Pagination
06
Cloud deployment
Getting it live and keeping it live: builds, environments, and the boring parts that decide whether a release is calm — deployed on Vercel, containerised with Docker.
- Vercel
- Docker
Stack
What I reach for, and nothing I don't. Two of these groups are still thin — they say so themselves rather than being quietly filled in.
Languages
- TypeScript
- JavaScript (ES6+)
- Python
- SQL
Frontend
- React
- Next.js
- TanStack (Start / Router / Query)
- Astro
- Tailwind CSS
- shadcn/ui
- MUI
- Redux
- Zustand
- SCSS
Backend
- NestJS
- Node.js
- Express
- REST APIs
- Better Auth
- Server-side rendering
Data
- PostgreSQL (Neon)
- MySQL / MariaDB
- SAP HANA
- MongoDB
- Drizzle ORM
- Schema & query design
AI / LLM
- OpenRouter
- OpenAI API
- Ollama
- Tool calling
- Context management
- Prompt-injection hardening
- RAG
Automation
- Selenium
- Playwright
- Proxy rotation
- n8n
- Xano
Cloud & Tools
- Vercel
- AWS (EC2, S3)
- Docker
- PM2
- Git
- GitHub
- GitLab CI/CD
- Postman
- Biome
About
Full-stack engineer building production web systems.
I'm Zain Haroon, a full-stack engineer based in Lahore, Pakistan. Since January 2024 I've been building at ENXSYS .
Before that, at SAPPHIRE — Diamond Fabrics, I built the Supplier Invoice Portal (Next.js + NestJS) and DCRM (React + Express) for the Denim division.
◆ Off the clock
All gamesWriting
-
Introducing: spending in another currency
Log a payment in one currency and read your totals in another. How Money Diary stamps an exchange rate on foreign entries and converts for display.
Money DiaryGuides
-
Introducing: backup and export
Your ledger should outlive the app holding it. How to pull a CSV backup or a spreadsheet report out of Money Diary, and how to restore one.
Money DiaryGuides
-
DeepSeek and the world — why the open, cheap model became my daily driver
From Claude's rate-limit walls to Opus 5's hallucinations: the month that moved my daily AI work to DeepSeek, with the receipts.
LLMsAI