Case study
IqamaPrint
Production · Sole engineer · Saudi Arabia
Problem
Workers in Saudi Arabia needed government-related documents (iqama prints, passport data, visas, insurance checks) without physical queues. The workflow had to be online, fast, trustworthy, and mobile-friendly — with sensitive document handling.
My role
Sole engineer: product design, frontend, backend, database schema, auth, payments, admin tooling, deployment, and ongoing operations. No separate DevOps or design team — full ownership from zero to production traffic.
Architecture (high level)
- React 18 + TypeScript SPA on Vercel for the customer and admin experience
- Supabase (PostgreSQL) as the system of record with Row-Level Security on user data
- Server-side payment verification before order fulfillment
- Signed, time-limited URLs for document delivery — no permanent public links
- Razorpay integration with webhook-style verification flows
Key engineering decisions
- RLS-first data model so client queries cannot cross tenant boundaries even if the UI has a bug
- Separate admin roles enforced at the database policy layer, not only in the UI
- Optimistic UI only where rollback is safe; payment and document states stay server-authoritative
- Mobile-first layout — 70%+ traffic is mobile, so performance and touch targets were prioritized early
Security & trust
- SSL everywhere; expiring links for delivered documents
- Row-Level Security (RLS) on Supabase tables
- Server-side payment verification before marking orders complete
- Minimal PII surface in logs and client storage
Impact
- 15,000+ document services delivered
- 8,500+ registered users
- ~98% reported satisfaction
- ~24 hour average delivery turnaround
- 70%+ mobile traffic sustained in production
What I would improve next
Formal observability (structured logging, alerting on payment failures), automated integration tests on critical checkout paths, and clearer incident runbooks as volume grows. These are the natural next steps at current scale.
Stack
React 18TypeScriptViteTailwindshadcn/uiSupabasePostgreSQLVercelRazorpay