2026-01-14 21:06:42 +07:00

98 lines
5.1 KiB
Markdown

# 📱 Aplikasi Absensi Akademik Berbasis Koordinat dan Foto (Mobile)
**Smart-Attendance** adalah aplikasi Android inovatif yang dirancang untuk mengotomatisasi proses absensi mahasiswa. Aplikasi ini memastikan validitas data kehadiran dengan menggabungkan tiga pilar verifikasi: **Identitas Digital (SQLite)**, **Geografis (GPS)**, dan **Biometrik Visual (Kamera)**. Seluruh data disinkronkan secara *real-time* ke **Google Sheets** melalui sistem automasi **n8n**.
---
## 📸 Pratinjau Antarmuka (Mockup)
| Layar Registrasi | Layar Login | Dashboard Absensi |
| :---: | :---: | :---: |
| ![Register](./register.png) | ![Login](./login.png) | ![Dashboard](./dashboard.png) |
| *Registrasi Akun Baru (Nama, NPM, Password)* | *Autentikasi Aman Berbasis NPM* | *Validasi Lokasi, Foto & Mata Kuliah* |
---
## 📝 Ringkasan Proyek
Proyek ini dikembangkan untuk mendigitalisasi sistem absensi konvensional menjadi sistem yang lebih aman dan transparan. Dengan memanfaatkan sensor pada smartphone (GPS dan Kamera), aplikasi ini meminimalisir kemungkinan kecurangan absensi. Data yang dikirim mencakup identitas mahasiswa, posisi geografis yang presisi, serta bukti foto wajah yang diambil pada saat absensi dilakukan.
---
## 🛠️ Stack Teknologi & Tools
| Kategori | Teknologi/Tools |
| :--- | :--- |
| **Bahasa Pemrograman** | [Kotlin](https://kotlinlang.org/) |
| **UI Framework** | [Jetpack Compose](https://developer.android.com/jetpack/compose) (Material 3) |
| **Database Lokal** | SQLite (`SQLiteOpenHelper`) |
| **Layanan Lokasi** | Google Play Services Location (Fused Location Provider) |
| **Networking** | Java `HttpURLConnection` & `JSONObject` |
| **Backend/Automation** | n8n.io Webhook Workflow |
| **Database Cloud** | Google Sheets |
| **IDE** | Android Studio Ladybug |
---
## 🌟 Fitur Utama Aplikasi
1. **Sistem Registrasi & Login**: Manajemen user lokal menggunakan SQLite dengan NPM sebagai *unique key*.
2. **Verifikasi Lokasi Real-time**: Pengambilan koordinat otomatis dengan akurasi tinggi dan fitur *Manual Refresh*.
3. **Bukti Visual (Selfie)**: Integrasi kamera internal untuk pengambilan foto wajah sebagai syarat mutlak absensi.
4. **Input Mata Kuliah**: Fleksibilitas bagi mahasiswa untuk mengisi mata kuliah yang sedang diikuti.
5. **Status Pengiriman**: Notifikasi instan jika data berhasil atau gagal terkirim ke server n8n.
6. **Desain UI Modern**: Menggunakan gradasi warna profesional dan komponen *Material Design 3* yang responsif.
---
## 🔄 Evolusi Database & Kode
### Database Schema Evolution
Database berkembang melalui 3 fase versi:
- **v1 & v2**: Fokus pada username dan password sederhana.
- **v3 (Final)**: Penambahan kolom `nama` dan `npm` (sebagai ID unik) untuk sinkronisasi data yang lebih akurat sesuai data akademik asli.
### Perbaikan Kode Utama (Summary Perubahan)
- **API Compatibility**: Mengatasi error API 33 dengan menggunakan `BundleCompat` untuk pengambilan data parcelable (foto).
- **Presisi Lokasi**: Migrasi dari `lastLocation` ke `getCurrentLocation` dengan `Priority.PRIORITY_HIGH_ACCURACY` untuk akurasi GPS maksimal.
- **Data Synchronization**: Sinkronisasi fungsi login agar benar-benar menangkap Nama Asli dari database untuk dikirim ke server (sebelumnya hanya NPM).
- **String Formatting**: Perbaikan format koordinat menggunakan `Locale.US` untuk mencegah error sistem pada pengaturan bahasa yang berbeda.
- **Error Handling**: Penambahan blok *try-catch* pada networking dan validasi input kosong pada form registrasi.
---
## 🤖 AI-Assisted Development
Proyek ini dikembangkan dengan bantuan **AI (Artificial Intelligence)** untuk:
- Optimasi logika pengambilan lokasi GPS yang efisien.
- Perbaikan bug sintaksis dan referensi ikon yang hilang.
- Pembuatan desain antarmuka yang estetis menggunakan Jetpack Compose.
- Dokumentasi teknis dan penyusunan arsitektur data.
---
## ☁️ Integrasi Cloud (Backend)
Data dikirim ke endpoint **Webhook n8n** dalam format JSON. Workflow di n8n kemudian melakukan:
1. **Parsing Data**: Memecah objek JSON (NPM, Nama, Koordinat, Base64 Foto).
2. **Formatting**: Mengatur urutan data sesuai kolom.
3. **Storage**: Memasukkan data ke baris terbaru di **Google Sheets** secara otomatis.
---
## 📊 Monitoring & Dokumentasi Lainnya
Data kehadiran dapat dipantau langsung melalui:
* **Live Log System**: [ntfy.ubharajaya.ac.id/EAS](https://ntfy.ubharajaya.ac.id/EAS)
* **Spreadsheet Database**: [Sheet Kehadiran Mahasiswa](https://docs.google.com/spreadsheets/d/1jH15MfnNgpPGuGeid0hYfY7fFUHCEFbCmg8afTyyLZs/edit?gid=0#gid=0)
---
## 💡 Key Takeaways & Catatan Penting
- **Integritas Data**: Foto dienkripsi ke **Base64** untuk memudahkan transmisi data gambar melalui JSON.
- **Privacy**: Pastikan izin lokasi hanya digunakan saat aplikasi aktif demi privasi pengguna.
- **Refresh GPS**: Sangat disarankan menekan tombol *refresh* lokasi jika berada di dalam ruangan agar mendapatkan sinyal GPS yang stabil.
---
## 🎓 Informasi Akademik
* **Nama Mahasiswa**: Nabila Suwandira
* **NPM**: 202310715066
* **Program Studi**: Teknik Informatika
* **Instansi**: Universitas Bhayangkara Jakarta Raya
* **Mata Kuliah**: Pemrograman Perangkat Bergerak
* **Tujuan**: Proyek Evaluasi Akhir Semester (EAS) TA 2025-2026