Asna logo

Asna—

Asna – Offline-first Personal Finance App

Founder & Mobile Developer

Visit Site

Personal finance tracker for mobile money users in Senegal. Expenses and income in FCFA, Wave and Orange Money receipts read by on-device OCR, insights with charts, app lock. Prototyped in React Native, now being rewritten natively in Kotlin Multiplatform with Jetpack Compose, with a Laravel sync API.

Kotlin MultiplatformJetpack ComposeRoomML KitReact NativeExpoLaravelVue.js
  • Designed and built alone: mobile app, web dashboard and sync API
  • First version in React Native (Expo, Redux Toolkit, SQLite), used as a living spec for the native rewrite
  • Native Android rewrite in Kotlin Multiplatform: shared data and logic module, Jetpack Compose + Material 3 UI, MVVM with Koin
  • Offline-first local database (Room KMP) with client-generated UUIDs and soft deletes, ready for incremental sync
  • On-device OCR with ML Kit: scan or share Wave and Orange Money screenshots to turn them into transactions
  • Layout-aware receipt parser (Wave history, Wave detailed receipt), checked against anonymized real ML Kit output
  • Automatic categorization: per-merchant memory learned from user corrections, then FR/EN keywords
  • Insights screen with hand-drawn Compose Canvas charts: income vs spending curve, category donut, top merchants, spending calendar
  • Biometric app lock, hidden recent-apps preview, protected "erase all data" flow
  • English and French, light and dark themes
  • Laravel 12 + Inertia + Vue web dashboard and sync API (Sanctum)

© 2026 Raphaël Doudou DIENE. All rights reserved.