Constraints over conventions
A unique index is a promise the database keeps. An if already_processed branch is a promise a developer remembers. On money paths, only one of those survives a refactor.
Full-stack developer with 4+ years shipping production systems end to end — React and Next.js on the front, FastAPI, NestJS and Flask behind, PostgreSQL underneath, running on infrastructure I provision and maintain myself.

Rustam Khan
Full-Stack Developer
Most of what I build handles money. A multi-currency wallet platform on Cameroonian mobile-money rails. A P2P crypto marketplace where the API server is mathematically incapable of moving funds. An e-commerce refund engine that will not pay out cash the business has not yet been remitted.
That shapes how I work. I prefer guarantees the database enforces over checks a handler remembers to run — append-only ledgers instead of mutable balance columns, unique constraints instead of if already_processed, state machines pinned by tests instead of status strings.
I own the whole path: architecture, schema, API, frontend, Flutter apps, CI, VPS, nginx, backups and the restore script that proves the backups work. When something breaks at 2am in a timezone seven hours away, there is no one else to escalate to — so it is built not to.
0
Systems shipped
built, deployed, maintained
Fintech · marketplaces · edtech · embedded
0M
Lines shipped
Python · TypeScript · Dart
Counted with wc -l, excluding dependencies
0+
API endpoints
designed and documented
FastAPI · NestJS · Flask · Express route decorators
0+
Database tables
modelled and migrated
PostgreSQL · MongoDB · MySQL, across 900+ migrations
Counted from the repositories themselves — dependency files, route decorators, schemas and migration history. Not estimated.
Ordered by scale — largest first. Every figure was counted from the repository itself: routes, tables, tests, migrations. Each case study states its honest weaknesses too.
Mobile-money & card payments platform
A full payments platform for Cameroon — wallets, agent cash-in/cash-out, merchant POS, bill pay, remittances and virtual cards — on live MTN MoMo and Orange Money rails.
1,390
API endpoints
272
DB tables
687k
Lines of code
303
Migrations
3
Flutter apps
80%
Coverage gate
P2P crypto marketplace with escrow
A peer-to-peer USDT marketplace for Central Africa where the platform holds funds in escrow until both sides confirm — with a bank-grade double-entry ledger underneath.
100%
Branch coverage on money paths
554
Test blocks
9
Escrow states
AI exam-prep for 165k+ questions
An exam-preparation platform for Indian competitive exams — JEE, NEET, CAT, CLAT, NDA, AIIMS-PG — with an AI doubt-solver, adaptive practice and mock tests across web, Flutter and React Native.
165k+
Tagged questions
61
Prisma models
154k
Lines of code
Six booking verticals, one platform
A Cameroon-first super-app putting hotels, ride-hailing, parcel delivery, intercity bus, car rental and errands into one customer app — with a driver app, hotel-staff app and a large admin console behind them.
1,276
Python tests
874
API endpoints
3
Flutter apps
Rescuing an unversioned production service
A B2B trade-intelligence service where importers search real customs records — a background worker scrapes the provider, builds an encrypted Excel report, uploads it and emails the customer.
4→1
Services consolidated
1
Service had no VCS at all
112k
Lines of code
Trade intelligence, best SSR ratio in the fleet
A supply-chain and trade-intelligence platform for Indian importers and exporters — search customs shipment records, analyse trade flows, export reports — with a companion directory product sharing its backend.
24/31
Pages server-rendered
155
Flask routes
6 mo
Longest-running project
Agency site, HRMS and a Flutter attendance app
The whole digital surface of a Jaipur software agency — the public marketing site that sells three SaaS products, the internal HR and employee portal behind it, and a Flutter app staff clock in with.
104
App Router pages
52
Server-rendered
87k
Lines of code
Reverse-engineering milk-collection firmware
Recovering the behaviour of a commercial milk-collection terminal from its encrypted firmware — decrypting the image, mapping the hardware, and reconstructing the pricing maths that decides what a farmer is paid.
117,936
Bytes decrypted
2,116
Strings recovered
20/20
Display pins mapped
3
Pricing formulas reconstructed
7
Analysis documents
128×64
Display resolution
Food delivery, three apps, one backend
Marketplace · logistics
370k lines
02Heritage commerce, two gateways, COD
E-commerce · India
193k lines
03Corporate site + full internal business system
Corporate · internal ops
112k lines
04Show ticketing with a counter POS
Ticketing · public institution
77k lines
05Self-hosted AI, no vendor in the loop
AI platform · developer tooling
57k lines
06Multi-tenant SEO engine, six products deep
Marketing SaaS
47k lines
Six rules that survived contact with production. Every one of them cost something to learn.
A unique index is a promise the database keeps. An if already_processed branch is a promise a developer remembers. On money paths, only one of those survives a refactor.
Balances are derived from append-only entries, not stored in a mutable column. When a customer disputes a transaction eight weeks later, the entries are the evidence.
Money is held in minor units end to end, passed as strings over the wire so float precision never touches it, and formatted only at the display layer.
100% branch coverage on the ledger, escrow and fee modules — with fault-injection tests that deliberately trigger serialization failures and deadlocks.
Every project I hand over comes with its honest gaps written down. A portfolio that only lists wins is a portfolio you cannot calibrate against.
Schema to nginx config. If I did not provision the box and test the restore script, I do not really know whether it is production-ready.
The bars are counts, not confidence. Each one shows how many of the 25 projects above actually ship that tool — measured from their dependency files, not self-assessed.
App Router by default. Server components where they earn their latency, client components at the leaves.
Also TypeScript · Tailwind CSS v4 · TanStack Query · Zustand · GSAP · shadcn/ui · Radix UI · MUI · Chakra UI
Python where the data work is heavy, Node where the type contract matters most. Async everywhere.
Also Flask · Node.js · SQLAlchemy 2 async · Prisma · Kysely · BullMQ · REST · GraphQL · WebSockets
Postgres unless there is a reason. Migrations always. Backups with a restore script that has been run.
Also pgvector · PostGIS · MinIO · Firebase · Cloudflare R2 · SQLite
Double-entry ledgers, integer minor units, idempotent webhooks. Guarantees the database enforces.
Also Double-entry ledger · Escrow state machines · MTN MoMo · Orange Money · PhonePe · JWT + refresh · TOTP 2FA · WebAuthn · RBAC · Hardened CSP
Ten Flutter apps across four product families, each on a shared typed Dart SDK.
Also Dart · go_router · Dio · Drift · React Native · Biometrics · FCM push
I provision the box, write the systemd unit, wire the CI and test the restore. No one else to escalate to.
Also Docker Compose · nginx · PM2 · VPS · Vercel · Prometheus · Sentry · Playwright · pytest · Vitest · Testcontainers
Five roles, four years, and a freelance practice running alongside all of it.
Full Stack Developer
Jan 2026 — Present
Jaipur, India
Full Stack Developer
Jul 2025 — Dec 2025
Jaipur, India
Technical Support Executive
Aug 2024 — Jul 2025
Jaipur, India
Web Developer Intern
Jan 2023 — Jun 2023
Delhi, India
Web Designer Trainee
Jun 2022 — Jul 2022
Ahmedabad, India
2021 — Present
NIMS University
2020 — 2024
Prince Academy
2019 — 2020
Several client projects are not listed publicly — they are covered by non-disclosure agreements.
Payments, ledgers, marketplaces, or a platform that has outgrown the person who built it. Tell me what breaks and I will tell you honestly whether I am the right fit.