Pada tugas kali ini, saya membuat sebuah aplikasi CRUD Registrasi Siswa menggunakan bahasa pemrograman Kotlin pada Android Studio dengan memanfaatkan Jetpack Compose untuk membangun antarmuka pengguna yang modern dan responsif. Aplikasi ini menerapkan Room Database sebagai media penyimpanan data lokal untuk menyimpan informasi mahasiswa berupa nama, NRP/NIM, email, jurusan, dan IPK, serta menggunakan arsitektur MVVM (Model-View-ViewModel) dan Repository Pattern agar struktur kode lebih terorganisir, modular, dan mudah dikembangkan. Fitur utama pada aplikasi meliputi menambahkan, menampilkan, mengubah, menghapus, serta mencari data mahasiswa secara real-time. Selain itu, aplikasi juga memanfaatkan Navigation Compose untuk navigasi antar halaman, LazyColumn untuk menampilkan daftar data secara efisien, validasi form termasuk validasi format email, serta coroutine, Flow, StateFlow, dan MutableStateFlow untuk mendukung pengelolaan data secara asynchronous dan reaktif sehingga perubahan data dapat langsung tercermin pada UI secara otomatis. Dengan penerapan teknologi dan arsitektur tersebut, aplikasi CRUD Registrasi Siswa ini dapat berjalan dengan lebih efisien, terstruktur, dan memberikan pengalaman pengguna yang lebih baik.
4. Isi konfigurasi sesuai dengan project yang dikerjakan dan pilih "Finish"
5. Buat file Student.kt pada direktori data/entities/ untuk mendefinisikan struktur entitas database. Pada file ini menggunakan anotasi @Entity(tableName = "students") agar Room mengenali kelas ini sebagai tabel, serta @PrimaryKey(autoGenerate = true) pada field id agar nilai primary key dibuat otomatis. Kelas ini merupakan data class dengan field: name, studentId, email, major, dan gpa bertipe Double.
6. Buat file StudentDao.kt pada direktori data/dao/ untuk mendefinisikan semua operasi database yang diizinkan terhadap tabel students. Pada file ini menggunakan interface dengan anotasi @Dao, dan mendefinisikan fungsi getAllStudents() serta searchStudents() yang mengembalikan Flow<List<Student>> agar UI dapat bereaksi otomatis saat data berubah. Fungsi write seperti insert, update, dan delete ditandai suspend agar berjalan di dalam coroutine.
7. Buat file AppDatabase.kt pada direktori data/ untuk mengonfigurasi Room Database dan memastikan hanya ada satu instance database di seluruh siklus hidup aplikasi. Pada file ini menggunakan anotasi @Database(entities = [Student::class], version = 1) serta pola singleton dengan @Volatile dan blok synchronized(this) untuk menjamin thread-safety (double-checked locking).
8. Buat file StudentRepository.kt pada direktori data/repositories/ untuk menjadi lapisan abstraksi antara ViewModel dan DAO. Pada file ini, repository menerima StudentDao melalui constructor dan meneruskan semua operasi ke DAO, sehingga ViewModel tidak perlu mengetahui secara langsung dari mana data berasal. Pola ini juga mempermudah unit testing karena repository dapat di-mock.
9. Buat file StudentViewModel.kt pada direktori viewmodels/ untuk mengelola state UI dan logika bisnis aplikasi. Pada file ini menggunakan MutableStateFlow<StudentUiState> yang di-expose sebagai StateFlow (immutable) ke UI, serta menerapkan debounce(300ms) dan flatMapLatest pada fitur pencarian agar query lama dibatalkan otomatis ketika query baru masuk. File ini juga mendefinisikan StudentViewModelFactory untuk menyuntikkan repository ke ViewModel.
10. Buat file NavGraph.kt pada direktori ui/screens/ untuk mendefinisikan struktur navigasi antar screen menggunakan Navigation Compose. Pada file ini menggunakan object Routes yang menyimpan semua konstanta rute (STUDENT_LIST, STUDENT_ADD, STUDENT_EDIT/{studentId}) serta fungsi helper studentEdit(id) untuk membangun rute edit secara type-safe, menghindari penggunaan string literal langsung.
11. Buat file StudentListScreen.kt pada direktori ui/screens/ untuk menampilkan daftar seluruh data mahasiswa beserta fitur pencarian dan aksi CRUD. Pada file ini menggunakan LazyColumn agar hanya item yang terlihat di layar yang dirender, serta collectAsState() untuk mengkonversi StateFlow dari ViewModel menjadi State<T> Compose sehingga UI otomatis recompose setiap kali data berubah.
12. Buat file StudentFormScreen.kt pada direktori ui/screens/ untuk menangani formulir tambah dan edit mahasiswa dalam satu screen (dual-purpose form). Pada file ini menggunakan LaunchedEffect(studentId) untuk memuat data eksisting saat mode edit, validasi real-time pada setiap field termasuk validasi format email menggunakan android.util.Patterns.EMAIL_ADDRESS, serta komponen OutlinedTextField dengan isError dan supportingText untuk menampilkan pesan error di bawah field.
13. Buat file MainActivity.kt pada direktori root package sebagai entry point aplikasi yang bertanggung jawab menginisialisasi seluruh dependency dan memulai UI. Pada file ini menggunakan delegasi by viewModels { factory } agar ViewModel bersifat lifecycle-aware dan tetap hidup saat terjadi rotasi layar, serta memanggil setContent { CRUDSiswaTheme { StudentNavGraph(viewModel) } } untuk merender UI root aplikasi.
5025221103 | Hilmi Fawwaz Sa'ad | Pertemuan 12 | PPB C Login App Pada tugas kali ini, saya membuat sebuah aplikasi login sederhana menggunakan bahasa pemrograman Kotlin pada Android Studio dengan memanfaatkan Jetpack Compose untuk membangun antarmuka pengguna yang modern dan responsif. Aplikasi ini menerapkan Room Database sebagai media penyimpanan data lokal untuk menyimpan informasi pengguna berupa username dan password, serta menggunakan arsitektur MVVM (Model-View-ViewModel) agar struktur kode lebih terorganisir dan mudah dikembangkan. Fitur utama pada aplikasi meliputi input username dan password, proses autentikasi login, validasi data pengguna, serta pemberian feedback menggunakan Toast. Selain itu, aplikasi juga memanfaatkan coroutine, Flow, dan SharedFlow untuk mendukung pengelolaan data secara asynchronous dan reaktif sehingga proses login dapat berjalan dengan lebih efisien dan terstruktur. Repository Github: Login App 1. Buka Android Studio 2. Pilih "Project Baru...
5025221103 | Hilmi Fawwaz Sa'ad | Pertemuan 7 | PPB C Halaman Login Sederhana Pada tugas kali ini, saya membuat sebuah aplikasi halaman login sederhana menggunakan bahasa pemrograman Kotlin pada aplikasi Android Studio dengan memanfaatkan Jetpack Compose untuk membangun tampilan antarmuka pengguna. Halaman login ini dirancang untuk menampilkan tampilan awal yang terdiri dari gambar latar belakang, input email, input password, tombol login, serta opsi login menggunakan akun sosial media seperti Google dan Facebook. Repository Github: Halaman Login Sederhana 1. Buka Android Studio 2. Pilih "Project Baru" 3. Pilih "Empty Activity" dan pilih "Next" 4. Isi konfigurasi sesuai dengan project yang dikerjakan dan pilih "Finish" 5. Konfigurasi yang dibuat akan menghasilkan file MainActivity yang berfungsi sebagai tempat utama untuk menjalankan aplikasi serta mengatur tampilan awal yang akan ditampilkan kepada pengguna 6. Hapus Composable dan sisaka...
5025221103 | Hilmi Fawwaz Sa'ad | Pertemuan 11 | PPB C Marketplace Siswa Pada tugas kali ini, saya membuat sebuah aplikasi manajemen produk marketplace siswa sederhana bernama MarketKu menggunakan bahasa pemrograman Kotlin pada aplikasi Android Studio dengan memanfaatkan Jetpack Compose untuk membangun tampilan antarmuka pengguna. Aplikasi ini dirancang untuk membantu pengelolaan produk secara digital, yang mencakup fitur splash screen dengan animasi, onboarding tiga halaman, serta halaman utama yang memungkinkan pengguna untuk menambah, mengubah, menghapus, mencari, dan memfilter produk berdasarkan kategori. Data produk disimpan secara lokal menggunakan Room Database, sementara status onboarding disimpan menggunakan DataStore Preferences agar aplikasi mengingat apakah pengguna sudah melewati onboarding sebelumnya. Repository Github: Marketplace Siswa 1. Buka Android Studio 2. Pilih "Project Baru" 3. Pilih "Empty Activity" dan pilih "Next" 4. Isi ko...
Komentar
Posting Komentar