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)
  • Target SDK: 34
  • Package: com.omahcitra.loginvault

Fitur

  • Autentikasi lokal — registrasi/login pertama kali via email + password aplikasi, atau Google Sign-In. Email disimpan di local storage sebagai identitas.
  • 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
    • Ganti tema: Gelap (Dark) atau Sistem (System)
  • Menu Exit — keluar dari aplikasi

Arsitektur & Keamanan

lib/
├── constants.dart          # AppConstants: encryptionKey (constant), db name
├── encryptor.dart          # XOR + base64 obfuscation (constant key)
├── database_helper.dart    # sqflite: tabel 'vault' (id PK, content)
├── auth_service.dart       # register/login, simpan email + app password (secure storage)
├── theme_provider.dart     # theme mode (system/dark), persist via SharedPreferences
├── auth_screen.dart        # registrasi/login (email atau Google)
├── dashboard_screen.dart   # search live, list, expand, swipe-delete, edit
├── settings_screen.dart    # ubah password, tema, 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).


Cara build APK

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

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, targetSdk = 36, applicationId = com.omahcitra.loginvault
  • android/local.properties: sdk.dir=/path/to/android-sdk
  • AndroidManifest.xml: permission INTERNET (untuk Google Sign-In)

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, atau "Lanjut dengan Google".
  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, ganti tema, atau Exit.

Dependencies utama

Paket Fungsi
sqflite local database SQLite
flutter_secure_storage simpan email & password aplikasi (Keystore)
google_sign_in login dengan Google
provider state management (theme)
shared_preferences persist tema
crypto utilitas (tidak wajib, tersedia)

© OmahCitra — aplikasi vault login lokal.

Description
Flutter Android app: local login/private data vault (min Android 10). Search-as-you-type, swipe-delete, edit, Google/email auth, dark/system theme.
Readme 56 MiB
Languages
Dart 46.5%
C++ 27%
CMake 20.6%
Swift 2.6%
HTML 1.6%
Other 1.7%