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:
- Text search yang mencari
iddi local DB setiap kali pengetikan (live filter, tampil sebagai list id) - Klik item list → konten ditampilkan di bawahnya (expandable)
- Swipe ke kiri untuk hapus → muncul dialog konfirmasi
- Tombol edit di tiap list untuk ubah konten
- Text search yang mencari
- 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, gantiEncryptordengan 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 = 34,applicationId = com.omahcitra.loginvaultandroid/local.properties:sdk.dir=/path/to/android-sdkAndroidManifest.xml: permissionINTERNET(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
- Pertama install → layar registrasi: isi email + password aplikasi, atau "Lanjut dengan Google".
- Setelah login → Dashboard:
- Ketik di kolom pencarian untuk filter
idsecara 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).
- Ketik di kolom pencarian untuk filter
- 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.