Files
login-vault-android/README.md

5.2 KiB

Login Vault (Android)

Aplikasi Flutter untuk menyimpan login & data pribadi di database lokal Android. Semua data tersimpan di perangkat (offline-first, tanpa server).

  • Minimum Android: 10 (API 29)
  • Compile / Target SDK: 36
  • Package: com.omahcitra.loginvault

Fitur

  • Autentikasi lokal — registrasi/login via email + password aplikasi. Email disimpan di secure storage sebagai identitas.
  • Login dengan sidik jari (biometric) — setelah registrasi, kamu dapat mengaktifkan fingerprint di Pengaturan. Saat membuka aplikasi, dialog sidik jari muncul otomatis dan mem-bypass form email/password bila verifikasi sukses. Bila dibatalkan, tetap bisa login manual.
  • Session timeout — login otomatis logout setelah periode tanpa aktivitas (default 3 menit, bisa diubah: 5/10/15/30/60 menit atau Selamanya).
  • Penyimpanan lokal terenkripsi — tiap entri punya:
    • id : String, unik (primary key)
    • content : String, disimpan terenkripsi (XOR + base64) menggunakan constant key (AppConstants.encryptionKey)
  • Dashboard:
    1. Text search yang mencari id di local DB setiap kali pengetikan (live filter, tampil sebagai list id)
    2. Klik item list → konten ditampilkan di bawahnya (expandable)
    3. Swipe ke kiri untuk hapus → muncul dialog konfirmasi
    4. Tombol edit di tiap list untuk ubah konten
  • Menu Pengaturan:
    • Ubah password aplikasi
    • Aktifkan/nonaktifkan login sidik jari (dengan dialog konfirmasi)
    • Atur session timeout
    • Ganti tema: Gelap (Dark) atau Sistem (System)
  • Menu Exit — keluar dari aplikasi

Arsitektur & Keamanan

lib/
├── constants.dart          # AppConstants: encryptionKey (constant), session keys
├── encryptor.dart          # XOR + base64 obfuscation (constant key)
├── database_helper.dart    # sqflite: tabel 'vault' (id PK, content)
├── auth_service.dart       # register/login, secure storage, biometric, session
├── theme_provider.dart     # theme mode (system/dark), persist via SharedPreferences
├── auth_screen.dart        # login/registrasi adaptif (email+password, bypass fingerprint)
├── dashboard_screen.dart   # search live, list, expand, swipe-delete, edit
├── settings_screen.dart    # ubah password, tema, fingerprint, timeout, exit
├── vault_entry_dialogs.dart# dialog add/edit/confirm
└── main.dart               # entrypoint + routing + ThemeProvider

Catatan keamanan penting: Enkripsi konten menggunakan constant key (AppConstants.encryptionKey) — ini obfuscation ringan, bukan kriptografi yang aman. Sesuai permintaan ("encrypt base64 dengan key sebagai constant"), konten di-database tidak dapat dibaca langsung tanpa key tersebut. Untuk proteksi produksi, ganti Encryptor dengan AES menggunakan key yang diturunkan dari password aplikasi + flutter_secure_storage (Android Keystore).

Email & password aplikasi disimpan via flutter_secure_storage (ter-enkripsi di Android Keystore). Sidik jari menggunakan plugin local_auth (dialog biometric bawaan Android, memerlukan FlutterFragmentActivity).


Cara build APK

Prasyarat: Flutter SDK (stable), JDK 17, Android SDK (build-tools 34+, platforms 29 & 36).

flutter pub get
flutter build apk --release
# hasil: build/app/outputs/flutter-apk/app-release.apk

Konfigurasi Android

  • android/app/build.gradle.kts: minSdk = 29, compileSdk = 36, targetSdk = 36, applicationId = com.omahcitra.loginvault
  • android/local.properties: sdk.dir=/path/to/android-sdk
  • android/app/src/main/kotlin/.../MainActivity.kt: extends FlutterFragmentActivity (wajib untuk local_auth)
  • AndroidManifest.xml: permission INTERNET (tidak wajib untuk fitur inti, aman dihapus bila tidak ada panggilan jaringan)

APK release di-build dengan debug keystore (signingConfig debug) agar bisa dihasilkan tanpa upload key. Untuk distribusi Play Store, ganti dengan keystore rilis milik Anda.


Instal & jalankan

# mode debug di device/emulator
flutter run

# atau install APK hasil build
adb install build/app/outputs/flutter-apk/app-release.apk

Alur penggunaan

  1. Pertama install → layar registrasi: isi email + password aplikasi.
  2. Setelah login → Dashboard:
    • Ketik di kolom pencarian untuk filter id secara live.
    • Tap sebuah id → kontennya muncul di bawah.
    • Swipe kiri pada item → konfirmasi hapus.
    • Tap ikon edit → ubah konten.
    • Tombol + (FAB) → tambah entri baru (id unik + konten).
  3. Pengaturan (ikon gear):
    • Ubah password aplikasi
    • Aktifkan "Login dengan sidik jari" (muncul dialog konfirmasi; batal = tetap off)
    • Atur session timeout
    • Ganti tema, atau Exit.

Dependencies utama

Paket Fungsi
sqflite local database SQLite
flutter_secure_storage simpan email & password aplikasi (Keystore)
local_auth login dengan sidik jari (biometric Android)
provider state management (theme)
shared_preferences persist tema & session timeout
crypto utilitas (tidak wajib, tersedia)

© OmahCitra — aplikasi vault login lokal.