Tugas Pertemuan 12 - MVVM & Room Login Page

Nama: Dewa Putu Ananda Taurean Mahesa

NRP: 5025231158

Kelas: Pemrograman Perangkat Bergerak C


Link Github Proyek

1. Penjelasan Singkat Proyek

Sebuah aplikasi login sederhana yang mengimplementasikan teknologi pengembangan Android modern. Fitur utama mencakup:
  • Penyediaan input username dan password
  • Proses validasi login
  • Menampilkan indikator status berhasil atau gagal login
  • Penyimpanan data kredensial secara lokal dengan Room database
Aplikasi dikembangkan dengan Android Studio yang memanfaatkan Jetpack Compose, arsitektur MVVM, Room database, dan SQLite.

2. Arsitektur Aplikasi

MVVM (Model-View-ViewModel) digunakan untuk memisahkan UI dan logika bisnis. Hal ini membuat kode lebih rapi, memudahkan maintenance dan pengembangan fitur lanjutan.
Room database bertindak sebagai lapisan abstraksi di atas SQLite untuk mengelola database lokal. Room memberikan keamanan dalam penulisan query dan mendukung eksekusi secara asinkron.

3. Implementasi

a. Konfigurasi & Struktur Proyek

Dependensi perlu ditambahkan pada file build-gradle terlebih dahulu. Pengaturan tambahan juga perlu di-set pada gradle.properties.
Pemisahan modul dilakukan dengan membuat package di dalam direktori mvvmloginpage, yang meliputi:
  • data: meliputi local (dao, database, entity) dan repository
  • ui: meliputi screen dan theme
  • viewmodel: menyimpan logika dan state aplikasi

b. Lapisan Data (Room Database)

  • Entity (User.kt): Dideklarasikan sebagai tabel users dengan atribut berupa id (primary key yang di-generate otomatis), username, dan password.
  • Data Access Object / DAO (UserDao.kt): Menyediakan operasi interaksi ke database, yaitu fungsi @Insert untuk menambahkan data pengguna, serta @Query untuk memvalidasi pencocokan username dan password.
  • Database (AppDatabase.kt): Kelas utama konfigurasi Room yang mengimplementasikan pola Singleton (INSTANCE) agar aplikasi hanya membentuk satu instansi database secara global dengan nama login_db.

c. Lapisan Logika (Repository & ViewModel)

  • Repository (UserRepository.kt): Berperan sebagai perantara yang memanggil fungsi dari UserDao.
  • ViewModel (LoginViewModel.kt): Memproses logika bisnis, seperti mengeksekusi operasi asinkron dengan Coroutine (viewModelScope.launch) untuk memvalidasi query dari repositori. ViewModel juga memperbarui state UI menjadi "Login Berhasil" atau "Username atau Password Salah" berdasarkan hasil query. Disertakan pula fungsi tambahan untuk menyisipkan data dummy pengguna ke dalam database.

d. UI (Jetpack Compose)

UI dikembangkan pada LoginScreen.kt di dalam direktori screen. Pengembangan UI ini menggunakan komponen Material Design 3, yang mencakup:
  • OutlinedTextField untuk memasukkan username dan password
  • Penambahan icon visual (profil dan kunci)
  • Implementasi PasswordVisualTrasnformation untuk menutupi karakter password demi keamanan visual

e. Integrasi Komponen

Seluruh komponen disatukan pada MainActivity.kt. Di dalam onCreate, sistem melakukan inisiasi terhadap AppDatabase, UserRepository, dan LoginViewModelFactory. Database menggunakan satu fungsi penyisipan pengguna dummy dan diteruskan dengan pemanggilan UI (LoginScreen).

4. Hasil Akhir




Comments

Popular posts from this blog

Tugas Pertemuan 7 - LoginPage

Tugas 1 - Eksplorasi Perkembangan Teknologi

Tugas Pertemuan 6 - Kalkulator