theo.okafor()

// portfolio — v2026.09 · Lagos, Nigeria (UTC+1) · open to remote

Theo
Okafor.

Full-stack developer. I build fast, and I ship.

01

Selected work

Four things I've built and shipped — every one live, every one with the source public. The writeups focus on the technical decision that actually moved the needle, not the pitch deck.

Driftline interface screenshot

Driftline

2025

Real-time fleet dispatch dashboard · Full-stack lead

A mid-size courier company was running dispatch off a whiteboard and a shared spreadsheet — drivers got assignments by phone call, and the office had no idea where any of the 140 vans actually were. Driftline replaced all of that with a live map, drag-to-reassign routing, and per-driver mobile views. The decision that mattered most was choosing WebSockets over polling for position updates: at 140 vehicles pinging every 3 seconds, polling would have meant ~47 requests/second of mostly-redundant traffic, so we built a single WS gateway backed by Redis pub/sub, with Postgres as the durable store and a reconciliation job that replays missed frames on reconnect. Dispatch latency dropped from "whenever someone called" to under 400ms end-to-end.

  • React
  • TypeScript
  • Node.js
  • PostgreSQL
  • WebSockets
  • Redis
Kiln interface screenshot

Kiln

2024

Fast static-site build service · Creator / maintainer

Kiln is a build-and-deploy service for static sites and docs — push a repo, get a URL in seconds instead of minutes. It exists because the free tiers of the big CI platforms queue small builds behind enterprise jobs, and a 40-page docs site should not wait eight minutes to ship. The key technical decision was writing the build orchestrator in Go with a warm pool of pre-started Docker executors instead of cold-booting containers per job: cold starts dominated everything else, so keeping 20 warm sandboxes in rotation cut median build time from 96s to 11s. Output is shipped straight to Cloudflare Workers assets, and a Redis-backed job queue keeps the whole thing to a single $40/mo VPS for the first 400 users.

  • Go
  • Redis
  • Docker
  • Cloudflare Workers
  • esbuild
Ledgerlite interface screenshot

Ledgerlite

2024

Double-entry accounting API for SaaS · Backend architect

Ledgerlite gives subscription businesses a hosted double-entry ledger — every invoice, refund, and payout lands as balanced journal entries instead of mutable balance columns, so you can always answer "why is this number what it is." Two SaaS teams I'd worked with had both hand-rolled (and both broken) their own revenue tracking, and the API is the extraction of that lesson. The decision that mattered most was refusing to store balances at all: balances are computed on read from an append-only entries table with covering indexes, which makes drift between "the number" and "the history" structurally impossible. It costs a few milliseconds per read and buys an audit trail that reconciles to the cent — the right trade for money data.

  • Node.js
  • Fastify
  • PostgreSQL
  • Prisma
  • Docker
Trailhead interface screenshot

Trailhead

2023

Offline-first hiking companion PWA · Solo build

Trailhead is a progressive web app for day hikers: save a trail at home, and the map tiles, elevation profile, and gear checklist all work at the trailhead with zero bars of signal. It came out of losing a downloaded PDF map on a phone that had frozen in the cold — a native app would have solved it, but the pitch was that a web page could do the same job without an app store. The critical decision was treating IndexedDB as the source of truth rather than a cache: map tiles and GPX routes are versioned and pinned per-saved-trail, so a sync failure can never evict data you're relying on in the backcountry. Service worker updates are deferred until the app is closed, which keeps a mid-hike refresh from swapping the shell out under you.

  • React
  • Vite
  • Workbox
  • IndexedDB
  • MapLibre GL
  • Tailwind CSS
02

Stack

No skill bars — these are things I've shipped to production, grouped by where they live.

Frontend

  • React
  • TypeScript
  • Astro
  • Next.js
  • Tailwind CSS
  • Vite
  • React Query
  • Accessibility (WCAG 2.2)
  • Core Web Vitals tuning

Backend

  • Node.js
  • Go
  • Rust
  • PostgreSQL
  • Redis
  • ClickHouse
  • Prisma
  • WebSockets
  • REST & event-driven APIs

Infrastructure

  • Docker
  • Cloudflare Workers
  • GitHub Actions
  • Terraform
  • Fly.io
  • Observability (OpenTelemetry, Grafana)
  • Load testing (k6)
03

Contact

I take on contract work and short engagements — performance rescues, greenfield builds, or filling the backend gap on a small team. The fastest way to reach me is email; I reply within a day, usually with questions before a quote.

$ whoami → theo okafor, full-stack, 9 yrs shipping