- Yusuf Hasan Nazila - 5025211225
- Radhiyan Muhammad Hisan - 5025211166
- Muhammad Arkan - 5025211236
EventSync: Aplikasi Pencatat Acara
Deskripsi
EventSync merupakan sebuah aplikasi pengelola tugas yang dikembangkan untuk platform Android. Dibangun menggunakan teknologi perangkat lunak modern, bertujuan untuk menyediakan antarmuka yang intuitif bagi pengguna untuk mengelola urusan harian mereka. Selain fungsionalitas pengelolaan tugas, aplikasi ini juga dilengkapi dengan sistem autentikasi pengguna yang lengkap, mencakup proses pendaftaran, login, dan verifikasi. Teknologi inti yang digunakan adalah bahasa pemrograman Kotlin dan Jetpack Compose untuk membangun seluruh antarmuka pengguna (UI). Pendekatan ini memastikan kode UI yang lebih ringkas, kuat, dan mudah dipelihara dibandingkan dengan sistem berbasis XML tradisional.
Desain
Struktur Program
Struktur proyek ini dirancang dengan cermat mengikuti prinsip-prinsip Clean Architecture, yang memisahkan logika aplikasi ke dalam beberapa lapisan independen. Pendekatan ini secara signifikan meningkatkan keterbacaan, skalabilitas, dan kemudahan pengujian (testability) kode.
Lapisan-lapisan utama dalam arsitektur aplikasi ini adalah:
- Lapisan Model (model/): Berisi definisi objek data inti aplikasi.
- Lapisan Data (data/): Bertanggung jawab atas persistensi data, yaitu bagaimana data disimpan dan diambil.
- Lapisan Antarmuka Pengguna (ui/): Mengelola semua aspek visual dan interaksi dengan pengguna. Di dalam lapisan ini, diterapkan pola arsitektur Model-View-ViewModel (MVVM) untuk memisahkan logika tampilan dari data.
Alur Kerja Aplikasi (User Workflow)
Secara garis besar, alur interaksi pengguna dengan aplikasi adalah sebagai berikut:
- Pengguna meluncurkan aplikasi dan akan melihat SplashScreen untuk inisialisasi.
- Aplikasi memeriksa status autentikasi pengguna.
- Jika pengguna belum login, aplikasi akan mengarahkannya ke alur autentikasi, dimulai dari WelcomeScreen atau langsung ke LoginScreen. Pengguna memiliki opsi untuk mendaftar melalui SignUpScreen.
- Jika pengguna sudah login, aplikasi akan langsung mengarahkannya ke layar utama.
- Setelah autentikasi berhasil, pengguna tiba di TaskManagerScreen.
- Di layar ini, pengguna dapat melihat, menambah, menyelesaikan, dan menghapus tugas. Setiap tindakan pengguna akan diproses oleh TaskViewModel, yang kemudian memperbarui state UI dan menyimpan perubahan data secara persisten.
- Seluruh navigasi antar layar diatur secara terpusat oleh Navigation.kt.
Dokumentasi
Deskripsi Komponen dan Fungsionalitas
Berikut adalah rincian fungsionalitas dari setiap komponen utama dalam struktur proyek:
- Lapisan Model (model/)
- Task.kt: File ini mendefinisikan data class Task, yang merupakan cetak biru (blueprint) untuk sebuah entitas tugas. Setiap objek Task memiliki atribut-atribut penting seperti ID unik, judul tugas (title), tenggat waktu (deadline), dan status penyelesaian (isDone).
- Lapisan Data (data/)
- TaskStorage.kt: Komponen ini berfungsi sebagai repository atau abstraksi untuk penyimpanan data tugas. TaskStorage menangani logika internal untuk menyimpan daftar tugas ke memori perangkat (misalnya ke dalam file atau database lokal) dan memuatnya kembali saat aplikasi dibuka. Dengan adanya lapisan ini, komponen lain seperti ViewModel tidak perlu mengetahui detail teknis dari proses penyimpanan data.
- Lapisan Antarmuka Pengguna (ui/)
- Lapisan ini berisi semua layar (screen) dan logika terkait tampilan.
- Komponen Inti UI:
- MainActivity.kt: Merupakan titik masuk utama aplikasi. Dalam arsitektur Compose, MainActivity berfungsi sebagai host yang menampung dan mengatur seluruh komponen UI, termasuk controller navigasi.
- Navigation.kt: File krusial yang mendefinisikan seluruh alur navigasi aplikasi. Di dalamnya, setiap rute (misal, "login", "home") dipetakan ke fungsi Composable (Screen) yang sesuai, memungkinkan perpindahan yang terstruktur antar layar.
- Fitur Autentikasi (auth/)
- LoginScreen.kt: Menyediakan antarmuka bagi pengguna untuk masuk ke aplikasi menggunakan kredensial yang ada.
- SignUpScreen.kt: Menyediakan formulir pendaftaran bagi pengguna baru untuk membuat akun.
- OTPScreen.kt: Menangani antarmuka untuk verifikasi menggunakan One-Time Password (OTP), yang kemungkinan digunakan untuk validasi nomor telepon saat pendaftaran atau sebagai lapisan keamanan tambahan.
- Fitur Manajemen Tugas (di bawah ui/):
- TaskManagerScreen.kt: Ini adalah layar utama aplikasi setelah pengguna berhasil login. Layar ini menampilkan daftar tugas yang dikelompokkan berdasarkan status (terlewat, aktif, selesai), menyediakan tombol untuk menambah tugas baru (Floating Action Button), serta opsi untuk mengurutkan daftar tugas.
- TaskViewModel.kt: Merupakan komponen ViewModel yang menjadi "otak" dari TaskManagerScreen. TaskViewModel mengelola UI (seperti daftar tugas dan mode urutan), menangani semua logika bisnis (menambah, menghapus, mengubah status tugas), dan berkomunikasi dengan TaskStorage untuk sinkronisasi data.
- Komponen Pendukung UI:
- /splash: Berisi SplashScreen.kt, layar pembuka yang ditampilkan saat aplikasi pertama kali dimuat. Layar ini berfungsi untuk menampilkan logo dan melakukan inisialisasi awal, seperti memeriksa status login pengguna.
- /welcome: Berisi WelcomeScreen.kt, sebuah layar perkenalan atau onboarding yang mungkin ditampilkan kepada pengguna baru.
- /theme: Paket ini mendefinisikan identitas visual aplikasi, termasuk palet warna (Color.kt), tipografi (Type.kt), dan tema keseluruhan (Theme.kt), untuk memastikan konsistensi tampilan di seluruh aplikasi.
Tautan proyek: https://github.com/hnazila71/new-ppb
Tautan gdocs: https://docs.google.com/document/d/1IrDq98EfKnj7k8CmOSMxGwBdNNWwI5FND4pCe9ULa8Q/edit?usp=sharing
Tautan youtube: https://youtu.be/mEGE0DTf-_E
Comments
Post a Comment
Kasih pengenal di komentar mu ya...