# πŸ“± Aplikasi Absensi Akademik Berbasis Koordinat dan Foto (Mobile) ## πŸ“Œ Deskripsi Proyek Proyek ini merupakan **Tugas Project Akhir Mata Kuliah Pemrograman Mobile** yang bertujuan untuk membangun **aplikasi akademik berbasis mobile** dengan fokus pada **fitur absensi menggunakan data koordinat (GPS) dan pengambilan foto mahasiswa**. Aplikasi ini dirancang untuk meningkatkan **validitas kehadiran mahasiswa**, dengan memastikan bahwa absensi hanya dapat dilakukan apabila mahasiswa: 1. Berada pada **lokasi yang telah ditentukan** (khusus status "Hadir"), dan 2. Melakukan **pengambilan foto (selfie) secara langsung saat absensi** untuk semua status kehadiran. --- ## 🎯 Tujuan Proyek - Mengimplementasikan **Location-Based Service (LBS)** pada aplikasi mobile untuk validasi kehadiran. - Mengintegrasikan **kamera perangkat** untuk dokumentasi dan verifikasi absensi. - Mencegah kecurangan absensi (titip absen) dengan menggabungkan validasi lokasi dan foto. - Mengembangkan aplikasi mobile akademik modern berbasis Android dengan Jetpack Compose. - Melatih kemampuan perancangan dan implementasi aplikasi mobile yang andal dan mudah digunakan. --- ## πŸš€ Fitur Utama - πŸ” **Login Pengguna**: Sistem otentikasi sederhana untuk mahasiswa. - 🏫 **Pemilihan Mata Kuliah**: Mahasiswa dapat memilih mata kuliah yang akan diikuti. - πŸ“Š **Pilihan Status Kehadiran**: Mahasiswa dapat memilih status "Hadir", "Sakit", atau "Izin". - πŸ“ **Validasi Lokasi (Hadir)**: Saat memilih "Hadir", aplikasi akan memvalidasi lokasi mahasiswa. Absensi hanya bisa dilakukan di dalam radius yang telah ditentukan dari kampus. - πŸ“Έ **Pengambilan Foto**: Mahasiswa diwajibkan mengambil foto (selfie) untuk semua status kehadiran sebagai bukti. - πŸ“ **Input Keterangan (Sakit/Izin)**: Untuk status "Sakit" dan "Izin", mahasiswa dapat menambahkan keterangan opsional. - πŸ•’ **Pencatatan Real-time**: Semua data absensi (lokasi, foto, waktu, status, keterangan) dikirim ke server secara real-time. - πŸ“„ **Riwayat Kehadiran**: (Fitur dalam pengembangan) Akan menampilkan riwayat absensi mahasiswa. --- ## πŸ—ΊοΈ Alur Kerja Aplikasi 1. Mahasiswa membuka aplikasi dan melakukan **login**. 2. Di halaman utama, mahasiswa **memilih mata kuliah**. 3. Mahasiswa **memilih status kehadiran** ("Hadir", "Sakit", atau "Izin"). 4. - Jika **"Hadir"**: Aplikasi akan otomatis mengambil dan memvalidasi lokasi. Jika di luar radius, pengiriman absensi akan dinonaktifkan. - Jika **"Sakit"** atau **"Izin"**: Aplikasi tetap mengambil data lokasi (jika tersedia) tanpa validasi radius, dan menampilkan kolom **keterangan opsional**. 5. Mahasiswa **mengambil foto (selfie)** sebagai bukti kehadiran. 6. Mahasiswa menekan tombol **"Kirim Absensi"** untuk merekam data kehadiran. 7. Data absensi dikirim ke server dan juga disimpan secara lokal di perangkat. --- ## πŸ› οΈ Teknologi yang Digunakan - **Platform**: Android - **Bahasa Pemrograman**: Kotlin - **Arsitektur UI**: Jetpack Compose - **Manajemen State**: ViewModel dan MutableState - **Navigasi**: Navigation Compose - **Location Service**: Fused Location Provider (dari Google Play Services) - **Konektivitas**: N8n Webhook untuk pengiriman data ke backend. - **IDE**: Android Studio --- ## πŸ” Izin Aplikasi (Permissions) Aplikasi ini memerlukan izin berikut untuk dapat berfungsi dengan baik: - `ACCESS_FINE_LOCATION`: Untuk mendapatkan data lokasi yang akurat. - `CAMERA`: Untuk mengambil foto saat absensi. - `INTERNET`: Untuk mengirim data absensi ke server. --- ## πŸ“‚ Mockup ![mockup](Mockup.png) *Gambar mockup dibuat oleh AI.* ## Catatan: - Starter project ini dibuat dengan bantuan AI. - Kembangkan project dari starter yang sudah disediakan, jangan membuat dari awal. - Untuk koordinat, data diambil langsung dari GPS perangkat. Pastikan GPS dalam keadaan aktif untuk fungsionalitas yang optimal. --- ## Pengecekan & Webhook - **Pengecekan Data**: [Lihat Google Sheet](https://docs.google.com/spreadsheets/d/1jH15MfnNgpPGuGeid0hYfY7fFUHCEFbCmg8afTyyLZs/edit?gid=0#gid=0) - **Webhook (Production)**: `https://n8n.lab.ubharajaya.ac.id/webhook/23c6993d-1792-48fb-ad1c-ffc78a3e6254` - **Webhook (Test)**: `https://n8n.lab.ubharajaya.ac.id/webhook-test/23c6993d-1792-48fb-ad1c-ffc78a3e6254`