# πŸ“± Aplikasi Absensi Akademik UBHARA Jaya ### Mobile (Kotlin) & Backend (Python Flask) ![Kotlin](https://img.shields.io/badge/Kotlin-20232A?style=for-the-badge&logo=kotlin&logoColor=7F52FF) ![Jetpack Compose](https://img.shields.io/badge/Jetpack%20Compose-4285F4?style=for-the-badge&logo=android&logoColor=white) ![Python](https://img.shields.io/badge/Python-3776AB?style=for-the-badge&logo=python&logoColor=white) ![Flask](https://img.shields.io/badge/Flask-000000?style=for-the-badge&logo=flask&logoColor=white) ![MySQL](https://img.shields.io/badge/MySQL-00000F?style=for-the-badge&logo=mysql&logoColor=white) ![n8n](https://img.shields.io/badge/n8n-EA4B71?style=for-the-badge&logo=n8n&logoColor=white) [πŸ“‹ Lihat Changelog](./CHANGELOG.md)
--- ## πŸ“Œ Deskripsi Proyek Proyek ini merupakan **Tugas Project Akhir Mata Kuliah Pemrograman Mobile** yang mengimplementasikan sistem absensi akademik berbasis **Client-Server**. Sistem ini dirancang untuk validitas tinggi dengan mengintegrasikan: * βœ… **Geofencing (GPS)** untuk validasi lokasi kampus. * βœ… **Face Detection (CameraX)** untuk validasi biometrik kehadiran. * βœ… **Anti-Fraud** untuk mendeteksi penggunaan *Fake GPS*. * βœ… **Otomatisasi** pelaporan real-time ke **N8N Webhook**. --- ## πŸ“Έ Tampilan Aplikasi (Mockup)
Mockup Aplikasi Absensi
--- ## 🎯 Tujuan & Capaian Proyek ini bertujuan untuk melatih kemampuan **Fullstack Mobile Development** dengan fokus pada: 1. **REST API Architecture**: Komunikasi aman antara Android dan Python Flask. 2. **Biometric Validation**: Implementasi ML Kit untuk deteksi wajah. 3. **Security Awareness**: Pencegahan kecurangan lokasi (*Mock Location*). 4. **Database Logic**: Penanganan status otomatis (*Auto-Alfa*) di sisi server. --- ## πŸš€ Fitur Utama | Fitur | Deskripsi | | :--- | :--- | | **πŸ“± Sisi Mobile** | β€’ **Smart Attendance:** Validasi radius & wajah real-time.
β€’ **Anti-Fraud:** Deteksi & blokir Fake GPS.
β€’ **Mode Izin/Sakit:** Upload bukti dokumen tanpa validasi radius.
β€’ **Riwayat:** Log kehadiran lengkap dengan foto bukti. | | **πŸ’» Sisi Backend** | β€’ **JWT Auth:** Keamanan token pada setiap request.
β€’ **Auto-Alfa:** Menandai "TIDAK HADIR" otomatis jika telat.
β€’ **N8N Integration:** Kirim data valid ke webhook untuk notifikasi.
β€’ **Image Compression:** Optimasi penyimpanan foto (Base64). | --- ## πŸ—ΊοΈ Mekanisme Alur Absensi ### 🟒 1. Status "HADIR" 1. Mahasiswa memilih Jadwal Kelas aktif. 2. **Validasi Sistem:** * πŸ“ Lokasi dalam radius **500m**? * 🚫 Tidak ada aplikasi **Fake GPS** aktif? 3. **Validasi Wajah:** Kamera terbuka, shutter hanya aktif jika wajah terdeteksi. 4. Data (Lokasi + Foto Wajah) dikirim ke server. ### 🟑 2. Status "SAKIT / IZIN" 1. Mahasiswa memilih status Sakit/Izin. 2. **Bypass Lokasi:** Validasi radius dilewati. 3. **Dokumentasi:** Kamera dokumen terbuka (Tanpa deteksi wajah). 4. Foto surat/bukti dikirim ke server. ### πŸ”΄ 3. Logika Auto-Alfa (Server Side) > *Background Process* * Server memantau jadwal kuliah. * Jika `jam_selesai < jam_sekarang` dan tidak ada data masuk βž” Input otomatis **"TIDAK HADIR"**. --- ## πŸ› οΈ Tech Stack | Komponen | Teknologi | | :--- | :--- | | **Mobile Platform** | Android (Kotlin) | | **UI Framework** | Jetpack Compose (Material3) | | **Camera & AI** | CameraX + ML Kit (Face Analysis) | | **Backend** | Python Flask | | **Database** | MySQL | | **Integrasi** | N8N Webhook | | **AI Assistant** | Gemini & Claude (Development Tools) | --- ## βš™οΈ Konfigurasi & Instalasi ### Prasyarat * Python 3.x * Android Studio (Ladybug/Latest) * Koneksi jaringan yang sama (Laptop & HP) ### 1. Setup Backend Pastikan server berjalan pada jaringan lokal: ```bash # Install dependencies pip install -r requirements.txt # Jalankan server python app.py