# πŸ“± Aplikasi Absensi Akademik Berbasis Koordinat dan Foto (Mobile) ## πŸ“Œ Deskripsi Proyek Proyek ini merupakan **Tugas Akhir / Project Akhir Mata Kuliah Pemrograman Mobile** oleh: * Nama: Rafi Fattan Fitriardi * NPM: 202310715002 Aplikasi ini adalah **aplikasi mobile akademik berbasis Android** yang memungkinkan mahasiswa melakukan **absensi dengan validasi lokasi GPS dan pengambilan foto selfie**. Aplikasi dirancang untuk meningkatkan **validitas kehadiran mahasiswa**, sehingga absensi hanya dapat dilakukan apabila mahasiswa: 1. Berada di **lokasi yang telah ditentukan** 2. Mengambil **foto selfie secara langsung** saat absensi --- ## 🎯 Tujuan Proyek * Mengimplementasikan **Location-Based Service (LBS)** pada aplikasi mobile * Mengintegrasikan **kamera perangkat** untuk dokumentasi absensi * Mencegah kecurangan absensi (titip absen) * Mengembangkan aplikasi mobile akademik berbasis Android * Melatih kemampuan perancangan dan implementasi aplikasi mobile --- ## πŸš€ Fitur Utama * πŸ” **Login Pengguna (Mahasiswa)** * πŸ“ **Pengambilan Koordinat Lokasi (Latitude & Longitude)** * 🏫 **Validasi Lokasi Absensi (Radius Area)** * πŸ“Έ **Pengambilan Foto Mahasiswa Saat Absensi** * πŸ•’ **Pencatatan Waktu Absensi** * πŸ“„ **Riwayat Kehadiran Mahasiswa** * ⚠️ **Notifikasi Absensi Ditolak jika Tidak Valid** * πŸŽ“ **Pemilihan Mata Kuliah** sebelum absensi --- ## πŸ—ΊοΈ Mekanisme Absensi Berbasis Lokasi dan Foto 1. Mahasiswa melakukan **login** 2. Memilih menu **Absensi** 3. Sistem meminta izin: * **akses lokasi** * **akses kamera** 4. Aplikasi mengambil: * πŸ“ **Koordinat lokasi mahasiswa** * πŸ“Έ **Foto mahasiswa secara real-time** 5. Sistem melakukan validasi: * Lokasi berada dalam **radius absensi** * Foto berhasil diambil * Mata kuliah yang dipilih valid 6. Jika valid β†’ **Absensi berhasil** 7. Jika tidak valid β†’ **Absensi ditolak** --- ## πŸ“Έ Pengambilan Foto Saat Absensi * Foto diambil menggunakan **kamera depan (selfie)** * Foto hanya dapat diambil **saat proses absensi** * Foto disimpan sebagai **bukti kehadiran** * Foto dapat digunakan untuk: * Verifikasi manual oleh dosen * Dokumentasi akademik --- ## πŸ› οΈ Teknologi yang Digunakan * **Platform** : Android * **Bahasa Pemrograman** : Kotlin * **Location Service** : Google Fused Location Provider * **Camera API** : CameraX / Camera2 * **Database** : Google Sheets (via n8n) * **Storage** : Local / Base64 dikirim ke server * **IDE** : Android Studio --- ## πŸ” Izin Aplikasi (Permissions) Aplikasi memerlukan izin berikut: * `ACCESS_FINE_LOCATION` * `ACCESS_COARSE_LOCATION` * `CAMERA` * `INTERNET` --- ## πŸ—οΈ Struktur Aplikasi MainActivity.kt β†’ Activity utama dan entry point aplikasi AbsensiScreen Composable β†’ UI absensi termasuk dropdown mata kuliah, tombol foto, dan tombol kirim absensi bitmapToBase64() β†’ Utility konversi foto ke Base64 kirimKeN8n() β†’ Fungsi kirim data absensi ke server n8n Absensi data class β†’ Model untuk riwayat absensi --- ## πŸ“Change Log (Dari Kode Dasar β†’ Versi Final) Menambahkan dropdown mata kuliah agar user bisa memilih mata kuliah sebelum absensi. Mengirim selectedMatkul ke server sehingga Google Sheet menerima mata kuliah yang dipilih. Menampilkan riwayat absensi di layar menggunakan LazyColumn. Menambahkan preview foto sebelum dikirim ke server. Memodifikasi UI dengan gradient background, card, dan tombol berwarna hijau agar lebih modern. --- ## πŸ“‚ Mockup ![dash ](Dashboard.jpeg) ![prev ](Preview.jpeg) ![piih ](Pilih.jpeg) ![riwaya ](Riwayat.jpeg) --- ## ⚑ Pengecekan & Data * Absensi dapat dicek di: [ntfy.ubharajaya.ac.id/EAS](https://ntfy.ubharajaya.ac.id/EAS) * Data absensi tersimpan di Google Sheet: [Spreadsheet](https://docs.google.com/spreadsheets/d/1jH15MfnNgpPGuGeid0hYfY7fFUHCEFbCmg8afTyyLZs/edit?gid=0#gid=0) --- ## πŸ”— Webhook * **Test**: [https://n8n.lab.ubharajaya.ac.id/webhook-test/23c6993d-1792-48fb-ad1c-ffc78a3e6254](https://n8n.lab.ubharajaya.ac.id/webhook-test/23c6993d-1792-48fb-ad1c-ffc78a3e6254) * **Production**: [https://n8n.lab.ubharajaya.ac.id/webhook/23c6993d-1792-48fb-ad1c-ffc78a3e6254](https://n8n.lab.ubharajaya.ac.id/webhook/23c6993d-1792-48fb-ad1c-ffc78a3e6254) --- ## πŸ“ Catatan * Starter project dibuat **menggunakan bantuan AI** * Kembangkan aplikasi dari starter yang sudah disediakan, **tidak membuat dari awal** * Untuk koordinat, bisa ditambah/kurangi angka tertentu agar tidak menampilkan koordinat rumah mahasiswa; data awal tetap dari GPS --- ## βš–οΈ Lisensi Aplikasi ini dirilis di bawah **FOSS License (MIT)**. Bebas **menggunakan, memodifikasi, dan mendistribusikan** selama menyertakan kredit: * 2026 Rafi Fattan Fitriardi (NPM 202310715002) * AI assistance: ChatGPT (OpenAI) * Lisensi mengikuti [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). ---