Kelvin Warui Kiondo

I build production web systems, and the hardware they talk to.

Full-stack developer and mechatronics engineer. I ship platforms that take payments, hold confidential records and stay up — and I came to them from PLCs, PCB layout and control theory, which is why I tend to ask what happens when the connection drops.

ROLEFull-stack developer
Mechatronics engineer
STACKNext.js, TypeScript
Postgres, Supabase, Flutter
BASEDNairobi, Kenya
UTC+3, remote worldwide
STATUSOpen to full-time remote
and contract work

Selected work

4 OF 12

E-commerce and membership platform for a UK health brand. Live, taking payments, still shipping.

A rebuild with a launch date attached. First commit on 9 June; Stripe subscriptions were taking real payments on 20 June. Eleven days from empty repository to revenue.

What went in during that window: tiered memberships billed as Stripe subscriptions, a member dashboard on Supabase, transactional confirmations through Resend, Calendly and Zoom for consultation booking, and a clinical article library rendered from markdown with proper table support. British English throughout — the brand is UK, and American spellings were the first thing the client caught.

The bug that cost a day was environment variables. The Supabase client worked locally and failed in production with credentials that looked byte-identical in both places. They weren't: the values carried trailing whitespace, and Vercel's build cache was serving stale copies on top of that. It's the kind of bug where everything looks correct in both places and only the behaviour disagrees.

  • PERIODJune 2026 — present
  • TO FIRST PAYMENT11 days
  • STACKNext.js, Supabase, Stripe, Resend
  • ROLESole developer

White-label digital loyalty platform for Caribbean merchants. Merchant dashboard, staff scanner, customer wallet.

Paper punch cards cost money to print, get lost, and tell the business nothing. JamLoyalty replaces them with three connected surfaces: a merchant dashboard for building campaigns and branding, a staff terminal that scans, and a customer wallet that saves to the phone's home screen and tracks stamps live over database subscriptions.

The problem worth solving was fraud. A loyalty stamp has cash value, so a static QR code is an open invitation — photograph it once and self-stamp forever. Codes are signed with HMAC-SHA256, rotate every fifteen seconds, and are checked server-side against replay, so a screenshot is worthless almost immediately. Staff reach the scanner through a per-location code issued from the merchant dashboard, so a leaked link doesn't become a leaked till.

Customers sign in by phone OTP through Twilio rather than email, because email isn't the default identity in this market. Passes can be added to Google Wallet, generated by a serverless function. Each merchant carries their own branding and is isolated from every other merchant by Postgres row-level security.

  • PERIODJan — Mar 2026
  • USERSMerchant, staff, customer
  • STACKReact, Supabase, Firebase, Twilio
  • NOTABLEHMAC-SHA256 rotating QR, anti-replay
03

Muchemi Law Portal

Practice management system for a law firm. Paired web and Android clients.

Legal case files are the kind of data where a permissions bug is a professional liability, not a bug report. Access control lives in Postgres row-level security rather than in application code, so a mistake in a React component cannot expose another member's matters.

Two pieces removed real manual work. Scheduled jobs fire a staged reminder cascade three days, one day and one hour before every court date and deadline. A docket generator compiles current database state into a print-ready PDF on demand, replacing a copy-and-paste ritual that used to happen before every hearing.

  • PERIODJan — Feb 2026
  • CLIENTCounty Attorney, Laikipia
  • STACKNext.js 14, Supabase, cron, Resend
  • NOTABLERLS access control, staged alerts
04

KINAP Lab Inventory

Offline-first inventory and point of sale for the mechatronics laboratory I run.

The lab tracked components and consumables on paper, which meant nobody knew what was in stock until they went looking for something and didn't find it. I built the replacement, and I'm also the person who uses it every week — the fastest feedback loop I've had on anything I've written.

Campus connectivity drops constantly, so the app writes locally first and reconciles on reconnect rather than blocking on the network. Students check equipment in and out by QR scan.

  • PERIODFeb — Mar 2026
  • USERSMechatronics dept., KIST
  • STACKFlutter, Supabase
  • NOTABLEOffline write, reconcile on reconnect

Before the web

MECHATRONICS

A self-piloting octocopter, built from nothing

Final year engineering project, Dedan Kimathi University of Technology, 2021–22

Eight rotors, an airframe machined by hand, and two circuit boards laid out from scratch in KiCad — a flight controller carrying GPS, compass, sonar and barometer on an 80 × 49.5 mm board, and a power distribution board tying eight ESCs together.

The control work came first. I derived the six-degree-of-freedom equations of motion in Simulink, linearised the model about hover, and designed a Linear Quadratic Regulator that commands twelve states through a 4 × 12 gain matrix. In simulation it tracked position setpoints cleanly on all three axes. Attitude estimation used a Madgwick filter I implemented in C, and the ground station — live piloting, telemetry capture and flight logging — I wrote in C#.

Then the airframe met physics. Motor vibration through the aluminium-and-acrylic structure swamped the IMU, and hand assembly put the build 300 g over its CAD weight. Autonomous flight was never demonstrated. The honest lesson is that I designed the control system before I understood the mechanical noise floor it would have to survive, and I now start hardware projects at the vibration budget instead of the controller.

Three-person final year team. I owned the control design, the sensor fusion and the ground-station software.

  • SPAN431.2 mm centre to motor
  • ROTORS8 × 10″, 5° dihedral
  • CONTROLLQR, 12 states
  • TOOLSMATLAB, KiCad, SolidWorks, Keil
Acrylic hub and machined aluminium arms during assembly
AIRFRAME ASSEMBLY
KiCad layout of the flight controller board
FLIGHT CONTROLLER, KICAD
Simulink six-degree-of-freedom model
6-DOF MODEL, SIMULINK
C# ground station showing live telemetry
GROUND STATION, C#

Archive

EVERYTHING ELSE
YEARPROJECTWHAT IT ISBUILT WITHLINK
2025–26Proudly LaikipianEditorial and booking site for a tourism brandNext.js, Sanity, CloudinaryLive
2026SNC HorizonNetwork topology digital twin, live telemetryFlutter CanvasKitSource
2026CklistWorkflow app with end-to-end type safetytRPC, Prisma, NextAuth, ZodLive
2026GamifyLearning app with exam-paper parserFlutter, SupabaseSource
2026Lishe YetuNutrition guidance with conversational assistantNext.js, SupabaseLive
2026Axis Home HealthcareCare provider site and enquiry flowNext.js, Framer MotionLive
2023–Brachel Jones RealtyRebuild with Georgia MLS feed integrationReact, MLS APIClient site
2026EngArchEngineering consultancy siteNext.jsLive

Currently open to remote full-stack work.

I also teach PLC programming, ladder logic, hydraulics and pneumatics part-time at Kiambu Institute of Science and Technology, and run its mechatronics laboratory. Teaching a thing is the fastest way to find out whether you actually understand it.