106 lines
3.9 KiB
Markdown
106 lines
3.9 KiB
Markdown
<div align="center">
|
|
|
|
# 📱 Aplikasi Absensi Akademik UBHARA Jaya
|
|
### Mobile (Kotlin) & Backend (Python Flask)
|
|
|
|

|
|

|
|

|
|

|
|

|
|

|
|
|
|
[📋 Lihat Changelog](./CHANGELOG.md)
|
|
|
|
</div>
|
|
|
|
---
|
|
|
|
## 📌 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)
|
|
<div align="center">
|
|
<img src="Mockup.png" alt="Mockup Aplikasi Absensi" width="800">
|
|
</div>
|
|
|
|
---
|
|
|
|
## 🎯 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.<br>• **Anti-Fraud:** Deteksi & blokir Fake GPS.<br>• **Mode Izin/Sakit:** Upload bukti dokumen tanpa validasi radius.<br>• **Riwayat:** Log kehadiran lengkap dengan foto bukti. |
|
|
| **💻 Sisi Backend** | • **JWT Auth:** Keamanan token pada setiap request.<br>• **Auto-Alfa:** Menandai "TIDAK HADIR" otomatis jika telat.<br>• **N8N Integration:** Kirim data valid ke webhook untuk notifikasi.<br>• **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 |