Skip to projects
FN

01 / Mobile Software Engineer · Nairobi

FrancisNgunjiri

Ten years shipping Android, iOS, and Dart/Flutter products, with C++ firmware alongside Flask APIs, CI/CD, and AWS. Production reliability and offline-first field work across education, point of sale and e-commerce, agriculture, telecommunications, social and professional networking, logistics, and clean energy.

Francis Ngunjiri

Projects

02

01 / Consumer Android, end to end

Trots

Problem
Consumer commerce was still add-to-cart then checkout. Trots needed a social Android product that could ship and stay live on Play.
Owned
End-to-end Android (Kotlin/Java, Compose, Navigation, ARCore, Firebase) from design through Play release and its partner app.
Outcome
Live on Google Play at trots.buzz, with M-Pesa in-app and Crashlytics above 98% crash-free users.
  • Kotlin
  • Java
  • Firebase
  • Jetpack Compose
  • ARCore
  • Navigation Component
trots.buzz ↗
Get it on Google Play

02 / Compose POS, phone and desktop

Berry POS

Problem
Shop-floor checkout on real hardware (printers, card readers, M-Pesa) that also has to post to accounting.
Owned
Jetpack Compose POS on Android and a Compose Multiplatform desktop client on KMP, covering catalogue, inventory, activity, and checkout, plus the Node.js multi-tenant platform behind it (MySQL, M-Pesa), including BLE printers and card-reader APIs.
Outcome
Production POS on store hardware and desktop, with BLE printers, a card reader, and M-Pesa. Product site at berry-pos.com.
  • Kotlin
  • KMP
  • Compose Multiplatform
  • Jetpack Compose
  • Hilt
  • Room
  • Navigation Component
  • Node.js
  • MySQL
berry-pos.com ↗

Desktop / Compose Multiplatform

03 / LPG delivery on iOS

Gas4U

Problem
LPG ordering across customer, vendor, and rider, with live dispatch on the map.
Owned
Three iOS apps from Figma to Swift, with maps and live rider tracking in the product surface.
Outcome
Consumer app on the App Store.
  • Swift
  • iOS
  • Maps
gas4u.com.ng ↗
Download on the App Store

04 / Market intel, offline-first

RATIN

Problem
Grain prices and farmer/trader surveys across five countries where the network often drops.
Owned
Offline-first Kotlin/Compose client with Room, LiveData, and ViewModel so capture continues without connectivity.
Outcome
Field use across Kenya, Uganda, Tanzania, Burundi, and Rwanda, with Room-backed capture that syncs when the network returns.
  • Kotlin
  • Compose
  • Flows
  • Room
  • ViewModel
ratin.net ↗

05 / Community for African founders

H4A

Problem
African women in tech needed events, directories, and conversation in one product, without a team behind it.
Owned
Sole developer. Flutter (Dart) on Firebase (Auth, Firestore, Storage, Cloud Functions): events, directories, realtime chat, file uploads.
Outcome
Live on Google Play.
  • Dart
  • Flutter
  • Firebase
Get it on Google Play

06 / Ukikam! Tunakusort!

1026

Problem
A small Kenyan community needed a place to talk, with a voice that was not generic social.
Owned
Android client with social sign-in and forum threads (Firebase Auth, LiveData).
Outcome
A shipped community app.
  • Android
  • Firebase Auth
  • LiveData

Experience

03

  1. Mar 2022 – Feb 2026

    Senior Software Engineer (Android & Firmware)

    KOKO Networks

    • Designed and maintained offline-first Kotlin clients for field operators, with retry queues, idempotent sync, and Coroutines/Flows, plus Flask APIs and MQTT under degraded networks.
    • Active development of myKOKO, the customer app, in Flutter: Figma translated into a responsive UI, with screen architecture in MVVM.
    • On-device diagnostics in Room, with LiveData and ViewModel, so field engineers can read structured debug logs offline.
    • Multi-module Android clients and shared libraries published through CircleCI to AWS S3, keeping platform behaviour consistent as backend contracts evolved.
    • Crashlytics and Sentry above 98% crash-free users; more than 90% coverage with Kover, MockK, JUnit, and Mockito, and SonarQube in CI.
    • ODM Android tablets for component compatibility, and C++ firmware on Arduino Mega aligned with the Android clients.
  2. May 2021 – Mar 2022

    Software Engineer

    KOKO Networks

    • Android clients, the myKOKO Flutter app, and Flask services for the KOKOPoint stack; promoted to Senior Engineer within one year.
  3. Feb 2020 – Apr 2021

    Senior Software Engineer

    XOKO

    • Led the production Kotlin POS on Sunmi devices, with BLE and onboard printers and Interswitch on the card reader, using MVVM, Material Components, and a Room plus LiveData/ViewModel queue that syncs when connectivity returns.
    • Bitbucket CI with JUnit and Mockito; Node.js/TypeScript APIs and Xero; Sunmi firmware, targeted OTA updates, and device SDKs across hardware variants.
    • Technical docs and style guidelines; Mixpanel, Crashlytics, and Play Store analytics; QA before release and product reviews in Zoho Projects.
  4. May 2019 – Feb 2020

    Senior Software Developer

    Trots Technologies

    • Owned Trots and Trots Partner (Kotlin, Java, Swift) from design through store release and ongoing maintenance; Crashlytics above 98% crash-free users.
    • M-Pesa and Firebase (auth, push, analytics); BLE beacons and ARCore as product features; UI regression with Espresso and XCTest.
  5. Oct 2017 – May 2019

    Mobile Application Developer

    Shimba Technologies

    • Consumer Android and iOS apps for Safaricom, Telkom, and JTL; Faiba 4G, shipped in Dart and Flutter, reached tens of thousands of users shortly after launch.
    • Android Memory Profiler to cut ANRs and leaks; RxJava and Jetpack; JUnit, Mockito, and JaCoCo; crash-free users above 95%.
    • Backlog refinement and sprint planning with product managers: estimates, dependencies, and delivery commitments.
  6. Dec 2015 – Jan 2017

    Lead User Interface Designer

    Trots Technologies

    • Android, iOS, and Windows Phone front-ends in XML, Storyboards, and XAML; mockups in Adobe XD; performance work in Android Studio Profiler.

BSc. Information Technology, Second Class Honours, Upper Division · Jomo Kenyatta University of Agriculture and Technology · Sept 2012 – Dec 2015

Capabilities

04

Flutter

  • Dart
  • Responsive UI
  • MVVM
  • Dart tests
  • Figma to UI

Android

  • Kotlin & Java
  • Jetpack Compose
  • Coroutines & Flows
  • Multi-module, Hilt, Room
  • Play releases

iOS

  • Swift
  • UIKit
  • XCTest
  • Maps & dispatch
  • App Store releases

Device and field

  • Offline-first sync
  • MQTT & BLE
  • POS printers & SDKs
  • Low-connectivity ops
  • C++ on Arduino Mega

Delivery and quality

  • Flask, Node, AWS S3
  • CircleCI / Bitbucket
  • Crashlytics, Sentry, Mixpanel
  • Kover, JUnit, Mockito, JaCoCo
  • M-Pesa & Xero

05 / Contact

Building mobile products that hold up, wherever they run.

Open to senior mobile roles in Android and iOS, with the fullstack and platform work those products need.

ngunjiri.k.francis@gmail.com