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.
- Frontend
-
- React Component-driven UI library
- Next.js React framework — routing, SSR, static export
- TypeScript JavaScript with a type system
- Tailwind CSS Utility-first CSS
- MUI React component library, Material Design
- SCSS CSS with nesting, variables, mixins
- Backend
-
- NestJS Structured Node framework — modules, DI, decorators
- Express Minimal HTTP framework for Node
- Node.js JavaScript on the server
- Python
- REST APIs Resource-shaped HTTP interfaces
- Databases
-
- PostgreSQL
- MySQL / MariaDB
- MongoDB
- SAP HANA
- Cloud & DevOps
-
- Vercel Deploy platform for frontend frameworks
- Docker
- Integrations
-
- SAP Enterprise ERP, integrated over its APIs
- Languages
-
- TypeScript JavaScript with a type system
- JavaScript The language the browser actually runs
- Python
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
-
How to use a vector database
Embeddings, similarity search and RAG — how retrieval actually works, why chunking and hybrid search decide your quality, and when a vector database is the wrong tool entirely.
LLMsRAGAI
-
How to retain context
Context windows are the working memory of an LLM application, and they fill up faster than anyone expects. What actually consumes them, why long conversations degrade, and the techniques that work.
LLMsAIContext
-
How LLMs actually work
Tokens, embeddings, attention and next-token prediction — what the machine is really doing, why it hallucinates, and what 'reasoning' is and isn't.
LLMsAI