~/work · 31 projects

All projects

Libraries, SDKs, apps and tools. Most are open source. Client work stays in summary.

Grimaldi

Aug 2022 to now · internal apps for PTML terminal ops · no public repos

Releasing App

Compose Multiplatform · in production

Cargo-releasing app for PTML terminal operators. Owned since 2022: printing, GPS and terminal maps, camera capture, encrypted traffic, one build per company and server. Then moved it to Compose Multiplatform: one codebase on Android (production), desktop, web (Wasm) and a native CLI.

Kotlin Multiplatform · Compose Multiplatform · Ktor · Room

PTML Launcher

Android · Device Owner kiosk

Kiosk launcher that replaced paid MDM on a ~100-device fleet. Policy lockdown, remote config and fleet-wide remote commands.

Kotlin · Jetpack Compose · DevicePolicyManager · Firebase

Helm

Backend · admin dashboard

Self-hosted backend and admin dashboard for the launcher fleet. Replaces its Firebase dependency with a config store, device pulse history and WebSocket commands.

C# · .NET 10 · Blazor · ASP.NET Core

PTML Releases

Release tooling · whole stack

Release tooling for every app in the stack: generates per-app and shared build values, renames APKs by application ID and version, and writes the final release output.

Python

Driver App

Android · delivery orders

Terminal Delivery Order acceptance for truck drivers, one build per environment. Native Android, now moving to Kotlin Multiplatform on the Releasing App's shared modules.

Kotlin · Android · Kotlin Multiplatform

Management App

Android · operations dashboards

Terminal operations for management: vessel schedule and line-up, discharge progress, delivery, stock and barge reports, bill-of-lading search with barcode scanning and lock/unlock, push notifications. Modules shown per user from server-side permissions. Later redesigned every screen.

Kotlin · Jetpack Compose · CameraX + ML Kit · Retrofit

2026

bankstract

Live SaaS · open-source engine

Parses Nigerian bank statements (FBN, Opay, PalmPay, Zenith) in memory, no disk writes. Python engine on PyPI, hosted SaaS with Paystack subscriptions.

Python · FastAPI · Next.js · Better Auth · HetznerCase study →Live ↗GitHub ↗

agent-bridge

Open-source tool · MIT · npm

Live messaging between agent CLI sessions as named peers. Claude Code, Antigravity and opencode.

TypeScript · MCP · Unix socketCase study →GitHub ↗

Retrostash

Library · Maven Central + SPM

Annotation-driven caching for Retrofit, OkHttp and Ktor. POST query caching and tag-based invalidation on mutation.

Kotlin Multiplatform · Ktor · OkHttpCase study →GitHub ↗

Zedu review infrastructure

HNG Zedu · reviewer and org admin

Shared GitHub Actions for four intern repos, safe for fork PRs, with security scans and a reviewer queue. A /test comment boots an Android emulator or Linux desktop with the PR's build and streams it to the reviewer's browser.

GitHub Actions · Docker · Coolify · noVNC · KVMCase study →GitHub ↗

Wallet importer

Open-source CLI · npm

Imports bank transactions into BudgetBakers Wallet, straight from bankstract output. Keeps the time of day, handles several accounts per run, pairs transfers, and rolls a batch back.

TypeScript · Node.jsCase study →GitHub ↗

Danfo

Web app · launching soon

Turns a Nigerian bank statement into an import file for your budgeting app: YNAB, Cashew, or any of 12 apps through OFX. Free, no account, nothing stored.

Next.js 16 · Cloudflare Workers · bankstract

Knock

App · Compose Multiplatform

Local-first calendar alarms. Turns events into full-screen alarms that ring until dismissed.

Kotlin Multiplatform · Room (KMP) · KtorCase study →

Nag

App · on hold until Knock ships

Persistent reminders with an escalation ladder. Only an explicit "I did it" stops the loop.

Kotlin Multiplatform · AlarmManagerCase study →

Redactly

PWA · client-side

Anonymizes WhatsApp chat exports before you share them with AI models. Runs 100% in the browser.

React 19 · TypeScript · Web Worker · IndexedDBCase study →Live ↗GitHub ↗

Medscape & Univadis

WebMD · contract via Tight Line

Main work: Native Articles, the module that moved article screens from WebViews to native. One Compose module on strict MVI feeds both apps, with the Swift side on iOS and shared logic in KMM; product reported higher retention after launch. Also work on other modules, analytics and session tracking, and fixes across the core Medscape and Univadis apps.

Jetpack Compose · MVI · Swift · Kotlin MultiplatformMedscape · Play ↗Medscape · App Store ↗Univadis · Play ↗Univadis · App Store ↗

StudyPal

Wekoya · contract

Rebuilt the study app into vertical slices and ran it as sole engineer: streaming AI agent chat over a custom SSE client, an AI quiz engine with multimodal grading, six real-time multiplayer game modes over Socket.IO.

React Native · Expo · TypeScript · Socket.IOPlay ↗App Store ↗

MasseMarket

Kylzion Labs · contract

Mobile and web clients for a live prediction-markets platform on one design-token system. Real-time trading over SignalR, multi-outcome markets, signup, KYC and market creation in production.

Flutter · Next.js · SignalR

Ecompliance

ConsultLink (NL) · contract

Accounting and compliance app with role-gated portals for admins, bookkeepers and clients. OCR receipt reading and spreadsheet import, over a Laravel API.

Next.js 16 · React 19 · TypeScript · TanStack Query · tesseract.js

2025

ConsultLink

ConsultLink (NL) · contract · 2024–2025

Platform that connects clients with consultants for legal, tax and administrative work. Real-time chat, invoices and quotations with tax, two-factor sign-in. Team of three.

Next.js 16 · TypeScript · Redux Toolkit · TanStack Query · Laravel EchoLive ↗

AppStorys SDK

Appversal · SDK

UI analytics SDK that walks XML View and Compose SemanticsNode trees at runtime.

Android · Flutter · React Native · ReflectionCase study →Site ↗

Keyguarde

App · Google Play

Watches notifications for keywords you pick and alerts you on a match.

Jetpack Compose · AndroidPlay ↗GitHub ↗

Firebase App Distribution Action

GitHub Action · open source

Drop-in CI delivery to Firebase App Distribution. The internal-build pipeline across several engagements.

TypeScript · GitHub Actions · Node.jsCase study →GitHub ↗

Farmex Agent & Vendor

Extension Africa · contract

Two React Native apps: a field-agent app with an offline sync engine and OTA updates, and a vendor app for stock, orders and payouts.

React Native · TypeScript · TanStack Query · MMKV

Android VPN app · 16 KB pages

Upwork client · contract

Made an OpenVPN-based Android app work on 16 KB page-size devices after the client's own rebuild broke it. Rebuilt the native OpenVPN libraries from the latest upstream, updated the app's loader code, confirmed 16 KB alignment on every arm64 library, and handed over a fork plus a recorded build guide.

Android NDK · CMake · C/C++ · OpenVPN

Pay with Mona SDK

Mona · SDK contract

Payment SDK for the Mona platform across native and cross-platform apps.

Android · Flutter · React NativeGitHub ↗

2024

InCrop

Web app

Crops and shares conversation screenshots, focused on the main content.

React · TypeScript · Tailwind CSSLive ↗GitHub ↗

FuelCheck

App · Google Play

Fuel prices, availability and queue lengths in Abuja.

FlutterPlay ↗

Transact

App · kiosk

Multi-tenant kiosk app for customer transactions and visit tracking.

Kotlin Multiplatform · Jetpack Compose

iKooK

iKooK · lead frontend

Chef booking platform: customer apps, web portal and admin dashboard.

React · FlutterLive ↗

2023

YieldMax

App · agritech

Farm yield management app for Android. Same problem space as Farmex, two years earlier.

Java · Android