# 🎓 Sistem Akademik - Aplikasi Absensi Mahasiswa Pintar ## 📌 Deskripsi Proyek Aplikasi **Sistem Akademik** adalah solusi absensi mobile modern yang dirancang untuk Mata Kuliah Pemrograman Mobile. Aplikasi ini mengedepankan keamanan dan validitas data dengan menggabungkan teknologi **Geofencing**, **Liveness Detection**, dan **Pencatatan Terintegrasi** untuk mencegah kecurangan absensi. --- ## 🚀 Fitur Utama ### 🔐 Manajemen Akun & Keamanan - **Login Mahasiswa**: Autentikasi menggunakan NPM dan Nama Lengkap secara manual. - **Logout Akun**: Fitur keluar untuk membersihkan sesi dan kembali ke halaman login. - **Database Akun Lokal**: Aktivitas dan riwayat tersimpan secara privat sesuai NPM yang sedang login menggunakan Room Database. ### 📍 Validasi Lokasi (Geofencing) - **Radius Kampus**: Absensi status "Hadir" hanya dapat dilakukan jika mahasiswa berada dalam radius **50 meter** dari pusat kampus (UBHARA Jaya Bekasi). - **Masking Koordinat**: Koordinat yang dikirim ke server diberikan sedikit *offset* otomatis untuk menjaga privasi lokasi mahasiswa. ### 📸 Verifikasi Wajah (Liveness Detection) - **Deteksi Kedip**: Syarat wajib berkedip untuk memverifikasi mahasiswa adalah orang asli (bukan foto/gambar). - **Face Centering & Alignment**: Validasi posisi wajah wajib berada di **tengah layar** dan menghadap **lurus ke depan** sebelum sistem mengambil gambar. - **Brightness Override**: Layar otomatis mencerahkan cahaya hingga 100% saat verifikasi untuk hasil foto wajah yang terang dan jelas. - **Kondisional Kamera**: - Status **Hadir**: Menggunakan sensor Liveness (ML Kit). - Status **Ijin/Sakit**: Menggunakan kamera standar untuk dokumentasi bukti biasa. ### 🕒 Validasi Waktu & Jadwal - **Sistem Jadwal Ketat**: Tombol kirim hanya aktif sesuai jam perkuliahan: - **Pemrograman Perangkat Bergerak**: 13:30 - 16:00. - **Keamanan Siber**: 16:15 - 18:45. - **Input Keterangan (Opsional)**: Tersedia kolom input khusus untuk memberikan alasan tambahan jika mahasiswa memilih status **Ijin** atau **Sakit**. ### 📄 Riwayat Absensi - **Penyimpanan Permanen**: Riwayat tersimpan di database lokal sehingga tidak hilang saat aplikasi ditutup atau perangkat di-restart. - **Format Detail Per Baris**: Menampilkan informasi secara terstruktur: 1. Foto/Wajah yang diambil. 2. Waktu pengambilan absensi. 3. Nama Mata Kuliah & Ruangan. 4. Status Kehadiran. 5. **Teks Keterangan** (Muncul khusus jika Ijin/Sakit diisi). 6. Lokasi (Koordinat GPS). --- ## 🛠️ Detail Teknis ### Daftar Mata Kuliah & Ruangan 1. **Pemrograman Perangkat Bergerak** - Jadwal: 13:30 - 16:00 | Ruangan: Grha Tanoto [W-104] 2. **Keamanan Siber** - Jadwal: 16:15 - 18:45 | Ruangan: R. Said Soekanto [SS-405] ### Teknologi Utama - **UI**: Jetpack Compose (Material 3) dengan fitur **Searchbar** pada dropdown mata kuliah. - **Database**: Room Persistence Library (SQLite) untuk isolasi data per akun. - **Vision**: Google ML Kit Face Detection. - **Location**: Fused Location Provider API (GPS Presisi). --- ## 🔐 Izin Aplikasi (Permissions) Aplikasi meminta izin secara otomatis saat pertama kali dijalankan: - `ACCESS_FINE_LOCATION` (Lokasi akurat) - `CAMERA` (Verifikasi wajah & foto bukti) - `INTERNET` (Sinkronisasi ke sistem n8n) --- ## 📂 Link Terkait - **Webhook Production**: `https://n8n.lab.ubharajaya.ac.id/webhook/23c6993d-1792-48fb-ad1c-ffc78a3e6254` - **Pengecekan Excel**: [Data Absensi Google Sheets](https://docs.google.com/spreadsheets/d/1jH15MfnNgpPGuGeid0hYfY7fFUHCEFbCmg8afTyyLZs/edit?gid=0#gid=0) - **Notifikasi Sistem**: [ntfy.sh/EAS](https://ntfy.ubharajaya.ac.id/EAS) --- *Dibuat untuk Project Akhir Mata Kuliah Pemrograman Mobile 2025/2026.*