Co-founded OurAfrica, an offline-first learning platform (LMS) for low-bandwidth learners and organisations across Africa. I built and run all of it: the Spring Boot API, a Next.js web app that also ships as a Windows desktop app, a native Android app, and the AI tooling that produces the courses. Learners download a course, study for days without a connection and sync their progress, quizzes and certificates when they are back online.
>Built the backend as a Spring Boot 4 / Java 21 modular monolith (Spring Modulith): courses, curriculum, assessments, enrolments, programs, certificates, gamification, notifications, organisations and billing, on PostgreSQL with Flyway, AWS Cognito, S3 and CloudFront
>Shipped one Next.js 16 / React 19 codebase as two products: a web app on Vercel and a Tauri 2 Windows desktop app with a Rust backend for encrypted (AES-GCM) offline downloads, decrypt-on-read media streaming and OS-keystore sign-in
>Built the native Android app in Kotlin and Jetpack Compose: a multi-module clean architecture with boundaries enforced in CI by Konsist, an encrypted Room/SQLCipher database, WorkManager batch sync and screenshot regression tests
>Signed offline course packages and app updates with Ed25519, so the desktop and Android apps can verify content and updates without reaching the server
>Built an automatic video pipeline on AWS: every uploaded lesson video is transcoded by AWS Lambda and Elemental MediaConvert into 480p, 720p and 1080p renditions (never upscaled), and learners pick the quality they stream or download, with the size of each option shown first
>Added automatic closed captions with Amazon Transcribe: it reads each video straight from S3 (the bytes never pass through the API), detects South African, British or US English, and attaches the subtitles to the lesson
>Made course downloads faster on African mobile networks, measured from Harare: delivery moved to the CloudFront edge, smaller renditions (720p about 6.5× smaller than the source), parallel chunked downloads, resume and Wi-Fi-only controls
>Sped up instructor video uploads with browser-to-S3 multipart uploads and S3 Transfer Acceleration
>Designed the AWS infrastructure: PostgreSQL on Amazon RDS, the API on EC2 in a VPC with NAT for private outbound traffic, Route 53 DNS for ourafrica.co.zw, Cognito for sign-in, S3 + CloudFront for media, and SES for email
>Built the AI layer: a learner tutor, RAG search over lessons (Gemini embeddings + pgvector), translation, spaced-repetition flashcards, per-user token metering, and a local ONNX embedder so private student submissions never leave the server
>Built and published a course-builder MCP server (npm + hosted) so authors build, lint and publish full courses with their own Claude subscription; a publish gate refuses courses that fail quality checks
>Built Course Studio, an AI production pipeline that takes a course from outline to published, with quizzes, narrated whiteboard videos, captions, learner notes, covers and resources
>Designed and shipped a relevance engine that matches organisations and learners to courses by sector, team and skill, with onboarding that feeds it
>Run releases across three environments (dev, UAT, prod) with GitHub Actions: API deploys to AWS EC2, desktop auto-updates from GitHub Releases, and a self-hosted Android update channel