skip to content
ian@nairobi:~$

Daremit

Two Flutter apps moving real money, live on both stores — plus the Spring Boot APIs, payment integrations, and KYC/KYB behind them.

Client
Dadanada Group
Role
Senior Full-Stack Engineer
Period
Dec 2023 — Present
  • iOS + Android

    live in production

  • 2

    payment providers integrated

  • KYC + KYB

    Onfido compliance flows

  • 2FA + biometrics

    authentication layers

Problem

Dadanada needed two apps: Daremit for people sending money home, and Daremit Agent for the agents who serve them, plus a web platform. Money crossing borders means regulation — identity checks for individuals, and for businesses the Principals and ultimate beneficial owners behind them. Payments run through two outside providers, Vi Americas and Money International, each with its own integration. I own both sides: the Flutter apps and the Spring Boot services they talk to.

Approach

The apps never talk to a payment provider directly. They call internal Spring Boot APIs I wrote in Java — wallet, transactions, onboarding — and those services own the provider integrations. Where a flow has to finish on a provider's own page, the app opens it in an in-app browser instead of reimplementing it.

Compliance splits the same way. The Onfido SDK handles identity verification on the device; the KYC and KYB flows for Principals and UBOs live on the server. Sign-in is layered: email, identity providers, PIN, biometrics, 2FA. Onboarding works across regions and languages. The release path is deliberately dull — Jenkins and Bitbucket, SonarQube, tests, Sentry.

The apps never talk to a payment provider directly.

Outcome

Both apps are live on the App Store and Google Play, and I have owned the stack since December 2023. It is regulated fintech, so I don't publish user or volume numbers. What I can show is the surface area: two apps handling real money, both provider integrations, the compliance flows behind onboarding, and a release path with static analysis, tests, and monitoring in it.