FIELD INDEX15 Sheets

Things I've
Built & Shipped

15 projects: SaaS products, mobile apps, backend services and geospatial systems.

15 projects

Fundi POS
Full-stack2026

Fundi POS

Multi-tenant, offline-first point of sale for Kenyan shops: an Android till, a Windows/macOS desktop till and a web dashboard on one API, with M-Pesa, multi-store stock and an audit trail.

TypeScriptExpo / React NativeTauriNext.js+8
Dadaab Climate Risk Dashboard
Geospatial2026

Dadaab Climate Risk Dashboard

Hazard and displacement dashboard for the Dadaab refugee complex in Garissa County, Kenya. Combines UNHCR population figures, NASA FIRMS fires, Open-Meteo rainfall and drought indicators, USGS earthquakes and OpenStreetMap facilities on one map.

SvelteKitSvelte 5MapLibre GL JSTypeScript+6
PharmaTrack
Full-stack2026

PharmaTrack

Multi-tenant pharmacy management SaaS for Kenya: offline-capable POS with M-Pesa, batch- and expiry-aware inventory, a controlled-substances register, appointment reminders and Paystack billing.

Next.js 16React 19TypeScriptPostgreSQL+8
Geospatial2026

geospatial-stack

Docker-first platform for publishing geographic data: uploads are validated, run through a Celery ETL into PostGIS and GeoParquet, and served as vector tiles behind a FastAPI, with dataset governance and an audit trail.

PostGISDuckDBGeoParquetFastAPI+10
geo-stack
Geospatial2026

geo-stack

Reusable spatial data stack: PostGIS for writes, DuckDB + GeoParquet for analytics, Martin and PMTiles for vector tiles, TiTiler for cloud-optimised rasters, and a STAC catalogue behind one FastAPI. Runs locally, on free cloud tiers or on a VPS.

PostGISDuckDBGeoParquetFastAPI+8
Backend2026

BrokerOS

Quotes, policies, renewals and commissions for Kenyan insurance agents, plus a standalone quotation and invoicing product. Typed FastAPI backend with a generated client for the Next.js frontend.

PythonFastAPISQLAlchemy (async)Pydantic+5
Backend2025

Go gRPC Microservices

Account and order services in Go behind a Fiber API gateway, communicating over gRPC with Protocol Buffers, each with its own repository layer and database.

GogRPCProtocol BuffersFiber+1
Mobile2026

Luxe Collections POS: Mobile

iOS and Android POS and inventory app for a Kenyan fashion retailer: barcode scanning, search, layaway with partial payments, loyalty points, multi-location stock and offline storage.

ExpoReact NativeTypeScriptSupabase+4
Luxe Collections POS: Web
Full-stack2026

Luxe Collections POS: Web

Point of sale and inventory system for the same retailer, with a checkout interface, analytics dashboard, multi-location stock and an e-commerce landing page, backed by Supabase with row-level security.

Next.jsSupabaseTypeScriptTailwind CSS+2
Geospatial2022–now

Ardhisasa QGIS Plugin

The QGIS plugin State Department of Lands surveyors use to check and certify parcel jobs: overlap and gap detection, centroid checks against gazetted boundaries, Cassini-to-UTM transformation, survey plans and compliance reports. Government code, not public.

PythonPyQGISPyQtPostGIS+1
Geospatial2026

GIS Backend Stack

Self-hosted spatial backend: PostGIS, GeoServer for OGC WMS/WFS/WCS/WMTS, Martin vector tiles and a Rust + GDAL ingest service with a browser upload UI, all behind one Nginx entry point.

PostGISGeoServerOGC WMS/WFSMartin+4
Route Explorer
Geospatial2026

Route Explorer

Routing app on OpenRouteService: multi-waypoint directions with nine travel profiles, alternative routes, isochrones, travel-time matrices, POI search, multi-stop route optimisation, elevation profiles and GPX/GeoJSON export.

ReactMapLibre GLOpenRouteServiceZustand+3
Urban Heat Island Explorer
Geospatial2026

Urban Heat Island Explorer

Compares live temperature in a city centre with points progressively further out to show the urban heat island effect for 25 cities, with a 7-day history and an hour-by-day heat grid.

ReactMapLibre GLRechartsZustand+3
GeoJSON Studio
Geospatial2026

GeoJSON Studio

Browser-based GeoJSON editor with multi-layer support, Turf.js geometry operations (buffer, simplify, dissolve), styling and shareable URLs. No backend, no API keys.

SvelteKitMapLibre GL JSTurf.jsLZ-String
JobHunter AI
Full-stack2026

JobHunter AI

Job search and application tracker: parses a CV, uses Claude with web search to find matching roles, and manages the application pipeline in kanban and table views.

SvelteKitSvelte 5SupabaseAnthropic Claude+2