4.5 KiB
4.5 KiB
📱 Aplikasi Absensi Akademik UBHARA Jaya (Mobile & Backend)
📌 Deskripsi Proyek
Proyek ini merupakan Tugas Project Akhir Mata Kuliah Pemrograman Mobile yang mengimplementasikan sistem absensi akademik berbasis Client-Server. Aplikasi mobile dibangun menggunakan Kotlin (Jetpack Compose), sedangkan sisi server menggunakan Python Flask dengan database MySQL.
Sistem ini dirancang dengan validasi ketat menggunakan Geofencing (GPS) dan Deteksi Wajah (Face Detection) untuk status kehadiran "Hadir", serta mendukung pengiriman bukti dokumen untuk status "Sakit/Izin". Seluruh data terintegrasi secara real-time ke N8N Webhook untuk pelaporan otomatis.
🎯 Tujuan Proyek
- Mengimplementasikan arsitektur REST API antara Android dan Python Flask.
- Menerapkan Face Detection menggunakan CameraX untuk memvalidasi kehadiran fisik mahasiswa.
- Mencegah kecurangan absensi dengan fitur deteksi Fake GPS.
- Mengelola status kehadiran otomatis (Auto-Alfa) pada server jika mahasiswa lupa absen.
- Melatih kemampuan Fullstack Mobile Development (Backend, Database, & Mobile UI).
🚀 Fitur Utama
📱 Sisi Mobile (Android - Jetpack Compose)
- Modern UI: Antarmuka modern menggunakan Material3 & Jetpack Compose.
- Smart Attendance:
- Hadir: Wajib berada di radius kampus & Wajib deteksi wajah (Real-time).
- Sakit/Izin: Wajib upload foto surat dokter/bukti (Tanpa validasi radius).
- Anti-Fraud: Sistem mendeteksi dan menolak jika pengguna mengaktifkan Fake GPS/Mock Location.
- Riwayat & Bukti: Mahasiswa dapat melihat riwayat kehadiran beserta foto bukti yang tersimpan di server.
- Profil Mahasiswa: Menampilkan data akademik dan fitur logout.
💻 Sisi Backend (Python Flask)
- JWT Authentication: Keamanan berbasis token untuk setiap request.
- Auto-Alfa Trigger: Sistem otomatis menandai "TIDAK HADIR" jika jam kuliah berakhir dan mahasiswa belum absen.
- N8N Integration: Data absensi yang valid dikirim otomatis ke webhook N8N untuk notifikasi/reporting.
- Image Handling: Kompresi foto (Base64) otomatis untuk efisiensi penyimpanan database.
🗺️ Mekanisme Absensi
1. Absensi Status "HADIR"
- Mahasiswa memilih Jadwal Kelas yang aktif.
- Sistem mengecek GPS:
- Apakah di dalam radius 500m dari kampus?
- Apakah terdeteksi aplikasi Fake GPS?
- Sistem membuka Kamera Deteksi Wajah:
- Tombol shutter hanya aktif jika wajah terdeteksi.
- Data (Lokasi + Foto Wajah) dikirim ke server.
2. Absensi Status "SAKIT / IZIN"
- Mahasiswa memilih status Sakit atau Izin.
- Validasi lokasi dilewati (bisa absen dari rumah/RS).
- Sistem membuka Kamera Dokumen (Tanpa deteksi wajah).
- Mahasiswa memfoto surat keterangan.
- Data dikirim ke server.
3. Logika Auto-Alfa (Server)
- Setiap kali jadwal dimuat, server mengecek jadwal yang
jam_selesai < jam_sekarang. - Jika mahasiswa belum ada record absensi pada jam tersebut, server otomatis menginput status "TIDAK HADIR".
🛠️ Teknologi yang Digunakan
- Mobile Platform: Android (Kotlin)
- UI Framework: Jetpack Compose
- Camera Engine: CameraX + ML Kit (Face Analysis)
- Backend Framework: Python Flask
- Database: MySQL
- Integrasi: N8N Webhook
- Protocol: HTTP/REST (JSON)
- AI: Gemini & Claude (Sebagai Tools dalam Membantu Pengembangan)
🔐 Izin Aplikasi (Permissions)
Aplikasi memerlukan izin berikut:
INTERNET: Koneksi ke Server API.ACCESS_FINE_LOCATION: Validasi koordinat presisi tinggi.ACCESS_COARSE_LOCATION: Validasi koordinat jaringan.CAMERA: Pengambilan foto bukti kehadiran & deteksi wajah.
📂 Mockup
Catatan Konfigurasi:
- Server: Pastikan
app.pyberjalan (python app.py) pada jaringan yang sama dengan HP. - Endpoint: Sesuaikan
BASE_URLpada fileMainActivity.kt(ObjectAppConstants) dengan IP Laptop Anda.const val BASE_URL = "[http://192.168.](http://192.168.)x.x:5000" - Fake GPS: Pastikan mematikan aplikasi Mock Location saat pengujian fitur Hadir.
Pengecekan & Monitoring:
- Monitoring: https://ntfy.ubharajaya.ac.id/EAS
- Data Spreadsheet: https://docs.google.com/spreadsheets/d/1jH15MfnNgpPGuGeid0hYfY7fFUHCEFbCmg8afTyyLZs/edit?gid=0#gid=0
