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
Ethos
I treat what you're building as if it were mine.
What I do
Six things, all of which I've actually done. If a line below carries a note, it's because the evidence for it isn't on this site yet.
- 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 with a type system
- JavaScript (ES6+)
- Python
- SQL
- Frontend
-
- React Component-driven UI library
- Next.js React framework — routing, SSR, static export
- TanStack (Start / Router / Query)
- Astro
- Tailwind CSS Utility-first CSS
- shadcn/ui
- MUI React component library, Material Design
- Redux
- Zustand
- SCSS CSS with nesting, variables, mixins
- Backend
-
- NestJS Structured Node framework — modules, DI, decorators
- Node.js JavaScript on the server
- Express Minimal HTTP framework for Node
- REST APIs Resource-shaped HTTP interfaces
- 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 Deploy platform for frontend frameworks
- 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.
Writing
-
DeepSeek and the world — why the open, cheap model became my daily driver
From Claude's rate-limit walls to Opus 5's hallucinations and a $1.5 billion book settlement — the month that moved my daily AI work to DeepSeek, with the receipts.
LLMsAI
-
Introducing Money Diary
A finance tracker where you log money by typing a sentence. What it does, how to get started, and how to get the most out of it — accounts, lending, and splitting bills.
ProjectsGuides