Kitandwe Arthur · Full-stack engineer · Kampala, Uganda

Thoughtful interfaces. Dependable systems.

I design and build the screens people use and the systems behind them — from a captive portal on a cheap phone to the payment, router session and ledger entry it triggers.

Open to remote contract or full-time work.

Black-and-white portrait of Kitandwe Arthur wearing glasses and a face mask

Selected work

Production systems, products and concepts

Each project is labelled for what it is: a platform running for real businesses, a product or client build, or an independent concept.

PesaFii public website: hotspot billing and mobile money for Wi-Fi businesses
PesaFii website on a phone
Production platformIn production since February 2026 · sole engineer

PesaFii

A multi-tenant platform for people who sell Wi-Fi: hotspot routers, vouchers, customer payments by mobile money, and the ledger underneath.

  • Business owners connect MikroTik routers, set prices and sell access from a captive portal.
  • Customers pay with MTN or Airtel mobile money and are let through by the router.
  • Owners run sales, vouchers, agents, wallet and live sessions from a web dashboard or the React Native operator app (16 feature areas).

Pearl Trails homepage
Own productMVP v1.0 · live

Pearl Trails

Lodges, campsites and experiences across Uganda: travellers discover a stay and request a booking; staff review and act on it in an operations console.

Built: Live availability, a planner, and an ops console where only legal booking moves are offered and every change is recorded.

Kafeero Motors homepage
Client projectClient preview · awaiting the client’s domain

Kafeero Motors

A car-hire website for Kafeero Motors in Kampala: customers browse the fleet, add trip details and send a prepared quotation request on WhatsApp.

Built: One fleet list powers cards, filters, vehicle pages and the quotation form.

Agrinal Enterprises homepage
Company websiteLive

Agrinal Enterprises

The website for Agrinal Enterprises, which builds managed digital-access systems for communities.

Built: Services, coverage and how it works, in a clear company site.

Stridehelm homepage
Company websiteLive

Stridehelm

A product-engineering studio site: services, process and how a project is run, from planning to launch.

Built: Static-first Next.js on Cloudflare Workers with a release script that verifies, deploys and smoke-tests.

TrendTitan Academy homepage
Own productIn development · live preview

TrendTitan Academy

An original trading-education site with step-by-step lessons, practice and sign-in.

Built: Course and module administration behind authenticated roles.

Nook Kampala homepage
Independent conceptFictional brand and properties

Nook Kampala

An apartment discovery and booking platform for Kampala, with search, galleries, saved stays, comparison and a demo reservation flow.

Built: URL-driven filters, date-only booking logic, a demo availability calendar and integer UGX pricing.

TMT Supermarket homepage
Independent conceptNot commissioned by TMT

TMT Supermarket

A supermarket website concept with a working shop: browse departments, build a basket and complete a demo checkout for delivery or collection.

Built: Basket state, delivery and collection fees, branch choice and a three-step demo checkout.

Mumu Ice homepage
Independent conceptNot an official Mumu Ice site

Mumu Ice

A bold brand website for an ice business with delivery, business and contact journeys that end in local previews.

Built: A multi-step delivery request with validation, review and reset.

Dama Consultants homepage
Independent conceptNot affiliated with Dama Consultants Ltd

Dama Consultants

A website concept for a Kampala recruitment and advisory firm, with employer, candidate, advisory and training journeys.

Built: Seven forms on one declarative engine: validation, review and confirmation from field specs.

Project stories

Walk through a journey

Real screens from the live sites, one step at a time. Choose a step, or open the project to try it yourself.

Independent concept

TMT Supermarket

A supermarket website concept with a working shop: browse departments, build a basket and complete a demo checkout for delivery or collection.

TMT Supermarket: discover products
TMT Supermarket: build a basket
TMT Supermarket: review the basket
TMT Supermarket: complete a demo checkout
Independent concept

Nook Kampala

An apartment discovery and booking platform for Kampala, with search, galleries, saved stays, comparison and a demo reservation flow.

Nook Kampala: start with a search
Nook Kampala: filter the collection
Nook Kampala: inspect a home
Nook Kampala: prepare a demo reservation
Independent concept

Mumu Ice

A bold brand website for an ice business with delivery, business and contact journeys that end in local previews.

Mumu Ice: discover the product
Mumu Ice: explore delivery
Mumu Ice: preview a request

Engineering depth · PesaFii

What happens when someone buys an hour of internet

A customer’s phone reaches a MikroTik router, which talks over a WireGuard tunnel to the API and FreeRADIUS. PostgreSQL holds the sessions and the wallet ledger; MTN and Airtel settle the money.

Wi-Fi WireGuard RADIUS accounting mobile money Customer phone captive portal MikroTik router hotspot Server API · FreeRADIUS · workers PostgreSQL ledger · sessions Online MTN · Airtel

Customers could be charged twice

Problem
If the captive portal lost its payment-intent ID mid-flow, initiation could run again and take a second payment.
Decision
Made payment initiation idempotent against the intent, so a retry settles onto the same charge.
Result
A repeated request can no longer create a second charge.

The portal was slow where it mattered most

Problem
Customers on cheap phones and thin signal waited for a package request that started 83.9 KB into the document.
Decision
Moved the request to 2.3 KB into the document and opened DNS, TCP and TLS at parse time with preconnect.
Result
About 330 ms of handshake removed from the critical path, and returning devices paint from cache.

A revoked session could come back

Problem
Caching session validity in Redis makes the hot path fast, and lets a stale “yes” outlive a revocation.
Decision
Fenced revocation so a cached positive can never resurrect a dead session, and reconciled fences at startup.
Result
PostgreSQL stays the only authority on whether a session is valid.

One RADIUS site was a single point of failure

Problem
Every login authorised through one site.
Decision
Brought up a second site and made disconnects site-aware, so a router is reached over the tunnel it is attached to.
Result
Failover verified by taking the primary away, not by reading the configuration.

Capabilities

What I deliver

  1. 01

    Web interfaces and customer journeys

    Responsive, accessible front ends with motion that serves the content — search, galleries, baskets, multi-step forms.

    React · Next.js · TypeScript · GSAP

  2. 02

    Full-stack products

    From the data model to the screen: APIs, authentication, roles and the operational tools staff actually use.

    Node · Express · PostgreSQL · Drizzle

  3. 03

    Mobile applications

    Operator apps that carry the whole business, built on the same API and rules as the web.

    React Native · Expo

  4. 04

    Payments and data integrity

    Idempotent payment flows, wallet ledgers, PIN and OTP authorisation, and audit trails that explain every balance.

    Mobile money · ledgers · idempotency

  5. 05

    Infrastructure and integrations

    Routers, RADIUS, tunnels and edge deployments, verified by failure rather than by configuration.

    FreeRADIUS · MikroTik · WireGuard · Cloudflare

About

How I work

I’m a full-stack engineer in Kampala. Most of my last two years went into one large system: PesaFii put me in the same week across a React dashboard, a React Native app, an Express API, a PostgreSQL ledger, RADIUS accounting and a router’s own configuration.

  • Understand the system first. I read the code and data before changing either.
  • Protect the invariants. I decide what must never break — a balance, a session, a charge — before writing anything.
  • Test the critical flows. Focused tests on the paths that move money or access, and verification by taking things away.
  • Refine the experience. Then the interface: fast on cheap phones, clear on every screen size, honest about what it does.
Based
Kampala, Uganda · UTC+3
Education
Certificate in Computer Science, YMCA Comprehensive Institute (2026)
Certified
freeCodeCamp: Relational Databases; Responsive Web Design

Contact

Let’s build something dependable.

Open to remote engineering work. Email is the fastest way to reach me.

Download CV (PDF)