Self-taught developer · Durban, KwaZulu-Natal, South Africa
HR & payroll · fintech · retail systems · a civic platform · client sites
I've been building software since 2017, starting in grades 10 to 12 at high school, all of it self-taught. Most of what I ship is for South African businesses and communities: a WhatsApp-native HR and payroll platform, a credit-builder fintech, a grocery shop's point-of-sale and prepaid wallet, a missing-persons platform for a church pilgrimage that draws tens of thousands of people, and a run of client websites through the agency I built and exited.
WhatsApp shows up in a lot of it, and that's deliberate. It's the app people here already have open, so putting clocking, leave, payslips or birthday reminders inside a chat thread beats asking anyone to install one more thing.
The source for client work and live products stays private, so each project below links to a public write-up instead: what it is, why it's built that way, and the stack. Two things are open with full source — whatsapp-bot-template and webapp-template, both pulled out of production apps.
- 📍 Based — Durban, KwaZulu-Natal
- 🗓️ Building since — 2017, from grade 10
- 🧱 Built — 10+ products, and worked on 15+
- 🤖 AI coding agents — Claude Code, GitHub Copilot, Codex (expert level, daily)
- 🧠 Also runs — self-hosted LLMs, on-device and on self-managed cloud
| Domain | Technologies |
|---|---|
| 🌐 Web apps | Next.js, React, TypeScript, Tailwind CSS, shadcn/ui |
| 💬 WhatsApp systems | Twilio, Meta WhatsApp Cloud API, Kapso |
| 💳 Payments | Paystack, Yoco |
| 🗄️ Data | Postgres (Neon, Supabase), Prisma, Drizzle ORM, Firebase, IndexedDB / Dexie |
| ☁️ Infrastructure | Vercel, AWS (S3, EC2), VPS hosting, Cloudflare |
| 🔐 Domains & mail | DirectAdmin, cPanel, GoDaddy, DNS, SPF / DKIM / DMARC, Google Workspace |
| 📱 Mobile | Flutter, progressive web apps |
| 🤖 AI | Gemini, Claude (Opus / Sonnet), self-hosted models |
| Project | What it is | Stack |
|---|---|---|
| BeGivvy | WhatsApp-native birthday reminders and gifting, built as a social graph rather than a calendar bot. Multi-timezone scheduling, AI wishlist parsing, ranked gift suggestions. | TypeScript, Prisma, Neon Postgres, Twilio, Gemini, Vercel |
| Kept In Print | Turns a WhatsApp chat export into a printed keepsake book. Pixel-accurate WhatsApp rendering in both themes, A5 two-column pagination, imposed PDF export. | Next.js 16, Firebase, Paystack, Puppeteer, pdf-lib |
| KwaMnquhe | Grocery storefront, offline-first POS and the Mnquhe Card prepaid wallet, built for a shop starting from a shipping container. | Next.js, Preact PWA, Supabase, Dexie / IndexedDB |
| EazyHR | Multi-tenant HR and payroll platform. Clocking, leave and payslips over one WhatsApp contact, with an employer dashboard. SARS PAYE brackets, UIF, BCEA leave rules. | React, Vite, Express, Supabase, Paystack, Twilio |
| Riverrr | A credit-builder design project: twelve bureau stamps toward a credit record, an itemised monthly slip, and a journey map. A concept build, not a licensed product. | Next.js 16, Drizzle ORM, Neon Postgres |
| Tholakala | Missing-persons and lost-property platform for the Ebuhleni pilgrimage. Steward console, offline-tolerant PWA, Flutter field app, and a found-child flow that never publishes a child's details. | Next.js, Neon Postgres, Twilio, signed-URL storage, magic-link / OTP auth |
Live and maintained by me day to day, build work plus the hosting, DNS and Google Workspace behind each one: BeGivvy, Kept In Print, Tholakala, KwaMnquhe and Kwandengezi Medical Centre. EazyHR is no longer maintained; Riverrr is a design project.
| Project | What it is | Stack |
|---|---|---|
| Kwandengezi Medical Centre | Practice website with local SEO, plus a one-question-at-a-time patient form builder. | Next.js 14, Neon Postgres |
| Practice mail console | A usable front end over DirectAdmin so staff manage mailboxes without touching Roundcube. | Next.js, IMAP / SMTP, DirectAdmin API |
| Konvrg | Marketing site for WhatsApp-based business systems. | Next.js 16, Tailwind |
| Citi Ad Agency | Web design agency, since exited. Priced per project rather than by page count. Sites for Zerny Experiential, Nova College, Harmattan Renewables, WindAC (SAWEA / Windaba), Boston Private, Hamptons, Hartford House Preparatory and Harrington Primary — built there, no longer maintained by me. | WordPress, HTML / CSS / JS |
| Project | What it is | Stack |
|---|---|---|
| llm-from-scratch | A GPT built twice. Stage 1 is NumPy with hand-written reverse-mode autodiff; stage 2 is the same model on PyTorch tensors. Copy stage 1's weights across and the logits agree to 9e-08. | NumPy, PyTorch |
| aviator-rng-lab | A falsifiable experiment on whether a live crash game's outcome sequence carries any structure. Set up so that a negative result is believable. | Python, pandas |
| whatsapp-bot-template | Provider-agnostic WhatsApp bot skeleton pulled out of a production system: 16-step webhook pipeline, Prisma session store, numbered-menu UX. | TypeScript, Express, Prisma |
Next.js is the default, with Tailwind and shadcn/ui almost every time. Auth is one of the few things I'd rather write myself than plug in, so I stay away from Clerk and providers like it. Prices, copy and config go in JSON as a single source of truth rather than being scattered through pages. Anything meant to run at a till or in a crowd gets built offline-first.
Open to client work and collaboration. WhatsApp is the fastest way to reach me.
- 💬 +27 68 081 5781 — WhatsApp
- ✉️ iamshaunmadondo@gmail.com
- 💼 linkedin.com/in/khulekani-shaun-mpanza1
Durban, KwaZulu-Natal.


