76 lines
3.7 KiB
Markdown

# 🎓 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.*