Lewati ke konten

2026SendiriMobile

Finance Tracker Mobile

Klien Flutter untuk tracker di atas — sepuluh modul fitur, 10.856 baris, token disimpan di keystore OS.

Finance Tracker Mobile

Ringkasan

Klien mobile Personal Finance Tracker, memakai API Go yang sama dengan versi web. 10.856 baris di 101 file Dart, disusun feature-first jadi sepuluh modul mandiri: auth, dashboard, transaksi, kalender, laporan, tabungan, cicilan, kelompok, pengaturan, dan lainnya. Batasnya ditegakkan, bukan cuma dicita-citakan — core dan shared tidak pernah mengimpor dari features, dan tidak ada fitur yang menjangkau layer data fitur lain. Navigasi pakai go_router, HTTP pakai dio, grafik pakai fl_chart, dan token autentikasi disimpan di keychain atau keystore OS lewat flutter_secure_storage, bukan di preferensi biasa.

Masalahnya

Menjaga satu produk tetap konsisten di web dan mobile padahal keduanya memakai paradigma state yang sama sekali berbeda — Redux Toolkit di satu sisi, Riverpod di sisi lain — sambil tetap merilis fitur ke keduanya serentak tanpa perilaku yang melenceng.

Yang saya kerjakan

Saya menetapkan batas arsitektur yang tegas di sisi mobile supaya kesepuluh fitur bisa bergerak mandiri, lalu mengoordinasikan rilis per fitur, bukan per platform: modul tabungan dirilis dengan perubahan yang setara di Go, React, dan Flutter dalam satu siklus. Ada satu bug rilis yang layak diingat — app-nya jalan di debug tapi gagal di release, karena Android memberi izin INTERNET otomatis di build debug tapi tidak di build release.

Isi pengerjaannya

  • Arsitektur feature-first dengan sepuluh batas modul yang ditegakkan
  • State management Riverpod dengan code generation
  • Navigasi deklaratif go_router dengan route guard
  • Token disimpan di keychain atau keystore OS, bukan di preferensi
  • Grafik interaktif dengan fl_chart
  • Format mata uang dan tanggal Indonesia lewat intl
  • Build untuk Android, iOS, dan target desktop

Stack

  • Flutter
  • Dart 3.10
  • Riverpod
  • go_router
  • dio
  • fl_chart