Kembali ke Portofolio
PROYEK 03 / REKAYASA APLIKASI MOBILE / Personal Project • Offline-First Personal Finance & On-Device ML OCR

Keuangan App — Personal Finance Monitoring & Offline-First Architecture

Aplikasi pencatatan dan monitoring keuangan pribadi berbasis Flutter dengan arsitektur offline-first, pemindaian struk otomatis berbasis on-device OCR (Google ML Kit), pencadangan privat ke Google Drive Hidden AppData, dan enkripsi lokal SQLite AES-256.

Konteks Proyek: Proyek independen / personal exploration yang dibangun untuk mengeksplorasi arsitektur mobile offline-first berstandar produksi, pemrosesan citra on-device ML tanpa server eksternal, enkripsi data-at-rest tingkat lanjut, dan sinkronisasi awan tersembunyi.
Peran Mobile Application Engineer Arsitek Mobile & Pengembang Flutter (Personal Exploration)
Waktu Pengerjaan 4 Minggu Clean Architecture, Drift SQLite, ML Kit OCR, BLoC & Testing
Konteks Proyek Personal Project (Eksplorasi Mandiri) Studi Kasus Mobile App Finansial Offline-First & Keamanan Data
Hasil Kerja Aplikasi Android Lengkap (APK) + Source Code Clean Architecture Modular BLoC, SQLite AES-256 Drift, Google Drive AppData Cloud Sync, On-Device OCR
Semua Layar Bedah Arsitektur
Teknologi Inti: Flutter, Dart, Drift (SQLite AES-256), Google ML Kit OCR, Google Drive API, Flutter BLoC, Material 3, fl_chart, WorkManager
Android Native / Flutter App
8 Gambar Review Lengkap
Keuangan App — Personal Finance Monitoring mobile interface showcase
Buka Ukuran Penuh (Zoom)
Dashboard Finansial & Kuota Belanja Harian Arsitektur offline-first dengan Drift SQLite AES-256, kuota aman harian dinamis, dan kalkulasi proyeksi saldo surplus akhir bulan.
Pilih Tangkapan Layar (8 Gambar):
Tangkapan layar resolusi tinggi ponsel (1080×2400) • Review antarmuka Flutter Fitur Zoom & Pan 360° Aktif
Keamanan Data
AES-256

Data-at-rest SQLite terenkripsi penuh dengan SQLCipher & Android Keystore.

On-Device OCR
0 Server

Pemindaian struk belanja 100% lokal berbasis Google ML Kit tanpa biaya server.

Cloud Backup
Serverless

Pencadangan awan privat terisolasi ke Google Drive Hidden AppData Folder.

Clean Architecture
100%

Pemisahan Domain, Data, & Presentation layer dengan BLoC State Management.

Konteks & Tantangan Rekayasa Mobile

Menghadirkan Privasi Mutlak Finansial dengan Arsitektur Offline-First & AI On-Device

Banyak aplikasi keuangan modern yang mewajibkan pengguna mengunggah data transaksi sensitif mereka ke server cloud komersial. Pendekatan ini rentan terhadap risiko privasi dan kebocoran data, serta membuat aplikasi tidak dapat digunakan saat koneksi internet terputus.

Tantangan rekayasa utama dalam proyek ini adalah bagaimana membangun sistem pencatatan keuangan berfitur lengkap yang 100% mandiri di perangkat lokal, mampu mengekstrak struk belanja fisik secara instan tanpa API cloud eksternal, dan tetap menyediakan mekanisme backup awan yang aman tanpa perlu memelihara infrastruktur server backend berbayar.

Kendala & Tantangan Awal:
  • Risiko keamanan dan privasi data finansial pengguna jika tersimpan tanpa enkripsi lokal kuat pada media penyimpanan ponsel
  • Kompleksitas pemindaian struk belanja fisik (kemiringan teks, pencahayaan minim, variasi format kasir) pada resource komputasi mobile yang terbatas
  • Kebutuhan pencadangan data ke awan tanpa adanya server API perantara guna menjaga biaya operasional nol (zero server cost)
  • Potensi frame drop atau UI stuttering saat database lokal mengeksekusi agregasi analitik grafis ribuan mutasi data secara simultan
Solusi Arsitektur & Rekayasa

Clean Architecture, Drift Background Isolate, On-Device ML Kit & Google Drive AppData

Saya merancang dan membangun arsitektur aplikasi mobile berbasis Flutter dengan pola Clean Architecture (Feature-First) yang memisahkan secara ketat antara Domain, Data, dan Presentation layer menggunakan BLoC State Management.

Sistem ini menggabungkan database lokal Drift SQLite dengan enkripsi data-at-rest SQLCipher AES-256 pada background isolate terpisah, engine pemindai struk cerdas Google ML Kit on-device, serta sinkronisasi serverless langsung ke Google Drive Hidden AppData folder.

Enkripsi AES-256 & Background Isolate

Drift ORM berjalan di Dart isolate terpisah dengan enkripsi SQLCipher berbasis Android Keystore untuk fluiditas 60/120 FPS.

On-Device Text Recognition ML Kit

Pemindaian struk belanja lokal 100% offline dengan regex parser bertingkat untuk ekstraksi nominal dan tanggal instan.

Serverless Google Drive AppData Sync

Pencadangan privat terenkripsi langsung ke folder tersembunyi Google Drive tanpa memerlukan infrastruktur server perantara.

Algoritma Kas "Aman Dibelanjakan"

Kalkulasi plafon belanja adaptif per hari berdasarkan sisa waktu kalender dan pembagian pos anggaran 3 pilar.

Arsitektur Sistem

Teknologi & Perangkat Rekayasa Web

Dipilih untuk performa maksimal, keamanan kode, dan kemudahan pemeliharaan.

Flutter & Dart UI Material 3 Native 120 FPS
Drift & SQLCipher Database SQLite Isolate AES-256
Google ML Kit OCR Struk On-Device Tanpa Server
Google Drive API Sync Cloud Hidden AppData Folder
Flutter BLoC Clean Architecture & Reaktif State
fl_chart & Worker Grafik Analitik & Background Task
Pemecahan Masalah

Tantangan Arsitektur & Solusi Teknis

01

Isolasi Query Database Berat untuk Mencegah UI Stutter

Kendala Performa

Kalkulasi agregasi pengeluaran bulanan dan filtering ribuan mutasi transaksi pada SQLite reguler berisiko memblokir main UI thread sehingga memicu frame drop.

Terselesaikan

Mengonfigurasi Drift ORM untuk berjalan pada Dart Background Isolate terpisah, memanfaatkan NativeDatabase.createInBackground() sehingga seluruh operasi I/O dan enkripsi berjalan paralel tanpa mengganggu fluiditas animasi UI.

02

Normalisasi & Ekstraksi Akurat Teks Struk Belanja Kasir

Akurasi OCR

Karakter struk belanja kasir sering kali pudar, teks miring, serta memiliki format penulisan angka desimal dan tanggal yang sangat beragam antara satu minimarket dengan yang lain.

Terselesaikan

Menerapkan pipeline pra-pemrosesan citra dengan kompresi proporsional (flutter_image_compress) dan engine regex parser bertingkat yang mencari kata kunci "Total / Bayar / Subtotal" serta format mata uang Rupiah untuk mengisolasi nominal valid secara akurat.

03

Sinkronisasi Cadangan Serverless Tanpa Konflik Versi

Integritas Data Cloud

Pencadangan langsung ke Google Drive AppData berisiko menimpa berkas cadangan jika terjadi pemulihan tidak terduga atau file korup saat koneksi terputus di tengah proses.

Terselesaikan

Membangun protokol rotasi cadangan otomatis yang memverifikasi integritas checksum SHA-256 file sebelum penimpaan, serta mempertahankan riwayat 5 versi cadangan terbaru dengan timestamp terisolasi.

Langkah Selanjutnya & Kolaborasi