82 lines
4.0 KiB
Markdown

* Nama : Hadi Guna Prakoso
* NPM : 202310715312
# Sistem Akademik Ubhara Jaya - Absensi LBS & Foto
Sistem Akademik Ubhara Jaya adalah aplikasi mobile berbasis Android yang dirancang khusus untuk meningkatkan validitas kehadiran mahasiswa. Proyek ini merupakan **Tugas Project Akhir Mata Kuliah Pemrograman Mobile**.
Aplikasi ini mengintegrasikan teknologi **Location-Based Service (LBS)** dan **Real-time Camera** untuk memastikan mahasiswa melakukan absensi dengan data lokasi dan bukti visual yang akurat.
---
## Pengembangan Berbasis AI
Project ini dikembangkan dengan pendekatan **AI-Assisted Development**. Bantuan kecerdasan buatan digunakan dalam:
* **Transformasi UI/UX**: Merancang tampilan modern menggunakan Jetpack Compose dengan prinsip Fresh & Premium Design.
* **Optimasi Logika**: Implementasi perhitungan jarak Haversine, validasi waktu perkuliahan yang presisi, dan otomatisasi status kehadiran.
* **Integrasi Webhook**: Mempermudah sinkronisasi data antara aplikasi mobile dengan backend n8n, Google Sheets, dan sistem notifikasi ntfy.
* **Troubleshooting**: Mempercepat penyelesaian error build, penyesuaian tipe data, dan pembersihan kode (Clean Code).
---
## Fitur Utama
### 1. Keamanan Akses (NPM Based)
* **Registrasi & Login**: Mahasiswa mendaftar menggunakan NPM, Nama, dan Password.
* **Sesi Terjaga**: Menggunakan `SharedPreferences` agar user tidak perlu login ulang setiap kali membuka aplikasi.
### 2. Presensi Berbasis Lokasi (GPS)
* **Real-time Tracking**: Mengambil koordinat Latitude dan Longitude secara instan.
* **Distance Calculation**: Menghitung jarak mahasiswa ke titik koordinat kampus secara otomatis.
* **Privacy Mode (Obfuscation)**: Fitur untuk menyamarkan lokasi presisi mahasiswa demi keamanan privasi rumah saat melakukan absen jarak jauh.
### 3. Validasi Waktu & Jadwal
* **Time Blocking**: Absensi dengan status "Hadir" hanya dapat dikirim jika waktu saat ini sesuai dengan jadwal mata kuliah (dengan toleransi 15 menit).
* **Flexible Attendance**: Status "Izin" atau "Sakit" diberikan dispensasi untuk absen di luar area kampus dan di luar jam perkuliahan.
### 4. Bukti Visual (Selfie)
* **In-App Camera**: Integrasi langsung dengan kamera depan perangkat.
* **Anti-Fraud**: Foto diambil secara live saat itu juga sebagai syarat utama pengiriman data.
### 5. Riwayat Absensi Terintegrasi
* Daftar riwayat lengkap menampilkan: Nama Matkul, Waktu (WIB), Foto Selfie, Koordinat GPS, Jarak ke Kampus, dan Status (Hadir/Izin/Sakit).
---
## Teknologi yang Digunakan
* **UI Framework**: Jetpack Compose (Material 3)
* **Language**: Kotlin
* **Navigation**: Jetpack Navigation Compose
* **Location**: Google Play Services Location (Fused Location Provider)
* **Networking**: HttpURLConnection (Integration with n8n Webhook)
* **Architecture**: Clean UI Components & Preferences Management
* **Backend & Data**:
* **n8n**: Sebagai automation engine.
* **Google Sheets**: Sebagai database utama penyimpanan laporan.
* **ntfy**: Sebagai sistem notifikasi real-time.
---
## Mekanisme Kerja
1. **Pilih Jadwal**: Mahasiswa memilih mata kuliah dari menu "Jadwal Kuliah".
2. **Validasi Otomatis**: Sistem mengecek apakah jam saat ini sesuai dengan jam matkul yang dipilih (khusus status "Hadir").
3. **Identifikasi Lokasi**: GPS mendeteksi koordinat dan menghitung jarak ke kampus.
4. **Verifikasi Foto**: Mahasiswa mengambil foto selfie.
5. **Pengiriman Data**: Data dikirim ke Webhook n8n dan diteruskan ke Google Spreadsheet secara otomatis.
---
## Mockup & Audit
Aplikasi ini telah melewati audit fitur sesuai dengan starter project dan dikembangkan lebih lanjut dengan standar UI modern.
## Pengecekan Data
Seluruh data absensi yang masuk dapat dipantau melalui:
* **Spreadsheet**: [Data Absensi Mahasiswa](https://docs.google.com/spreadsheets/d/1jH15MfnNgpPGuGeid0hYfY7fFUHCEFbCmg8afTyyLZs/edit?gid=0#gid=0)
* **Notifikasi**: [ntfy.ubharajaya.ac.id/EAS](https://ntfy.ubharajaya.ac.id/EAS)
---
**© 2026 - Project Akhir Pemrograman Mobile**
*Developed with ❤️ U.*