README.md

This commit is contained in:
202310715066 NABILA SUWANDIRA 2026-01-14 18:26:47 +07:00
parent 5ba8853bda
commit 789ea5ccae

View File

@ -13,64 +13,82 @@
--- ---
## 🌟 Fitur Utama ## 📝 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.
- **Otentikasi SQLite Lokal**: Sistem pendaftaran dan masuk yang mandiri, menyimpan data kredensial secara aman di memori internal perangkat.
- **Presisi Lokasi GPS**: Mengintegrasikan *Google Fused Location Provider* untuk mendapatkan koordinat Latitude & Longitude dengan akurasi tinggi (6 digit desimal).
- **Verifikasi Visual (Selfie)**: Mengambil foto wajah secara langsung sebagai bukti kehadiran fisik yang tidak dapat dimanipulasi dari galeri.
- **Sinkronisasi Cloud Otomatis**: Pengiriman data menggunakan protokol JSON melalui Webhook n8n yang langsung terhubung ke database Google Sheets.
- **Antarmuka Modern (Material 3)**: Desain UI responsif menggunakan Jetpack Compose dengan tema gradasi warna profesional (Hijau, Kuning, Putih).
- **Fitur Refresh Lokasi**: Memungkinkan pengguna memperbarui koordinat GPS secara manual untuk akurasi maksimal sebelum melakukan absensi.
--- ---
## 🛠️ Stack Teknologi ## 🛠️ Stack Teknologi & Tools
| Kategori | Teknologi/Tools |
| Sektor | Teknologi |
| :--- | :--- | | :--- | :--- |
| **Bahasa Pemrograman** | [Kotlin](https://kotlinlang.org/) | | **Bahasa Pemrograman** | [Kotlin](https://kotlinlang.org/) |
| **Framework UI** | [Jetpack Compose](https://developer.android.com/jetpack/compose) | | **UI Framework** | [Jetpack Compose](https://developer.android.com/jetpack/compose) (Material 3) |
| **Database Lokal** | SQLite (Room/OpenHelper) | | **Database Lokal** | SQLite (`SQLiteOpenHelper`) |
| **Layanan Lokasi** | Google Play Services Location (Fused Location) | | **Layanan Lokasi** | Google Play Services Location (Fused Location Provider) |
| **Networking** | Java HttpURLConnection & JSONObject | | **Networking** | Java `HttpURLConnection` & `JSONObject` |
| **Backend/Automation** | n8n.io Webhook Workflow | | **Backend/Automation** | n8n.io Webhook Workflow |
| **Database Cloud** | Google Sheets | | **Database Cloud** | Google Sheets |
| **IDE** | Android Studio Ladybug |
--- ---
## 🏗️ Arsitektur Aliran Data ## 🌟 Fitur Utama Aplikasi
1. **Sistem Registrasi & Login**: Manajemen user lokal menggunakan SQLite dengan NPM sebagai *unique key*.
1. **Input**: Mahasiswa memasukkan Nama, NPM, Mata Kuliah, serta mengambil foto wajah dan titik lokasi. 2. **Verifikasi Lokasi Real-time**: Pengambilan koordinat otomatis dengan akurasi tinggi dan fitur *Manual Refresh*.
2. **Processing**: Aplikasi mengonversi foto ke format **Base64** dan mengemas seluruh data ke dalam objek **JSON**. 3. **Bukti Visual (Selfie)**: Integrasi kamera internal untuk pengambilan foto wajah sebagai syarat mutlak absensi.
3. **Transmission**: Data dikirim via jaringan Internet ke URL Webhook n8n. 4. **Input Mata Kuliah**: Fleksibilitas bagi mahasiswa untuk mengisi mata kuliah yang sedang diikuti.
4. **Storage**: Server n8n mengolah data dan memasukkannya secara rapi ke baris kolom di Google Sheets. 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.
--- ---
## 📱 Panduan Penggunaan ## 🔄 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.
1. **Pendaftaran**: Buka aplikasi, pilih "Daftar Sekarang", masukkan Nama Lengkap, NPM, dan Password Anda. ### Perbaikan Kode Utama (Summary Perubahan)
2. **Masuk**: Gunakan NPM dan Password yang telah dibuat untuk masuk ke Dashboard. - **API Compatibility**: Mengatasi error API 33 dengan menggunakan `BundleCompat` untuk pengambilan data parcelable (foto).
3. **Izin Perangkat**: Berikan izin **Akses Lokasi** dan **Kamera** agar aplikasi berfungsi dengan benar. - **Presisi Lokasi**: Migrasi dari `lastLocation` ke `getCurrentLocation` dengan `Priority.PRIORITY_HIGH_ACCURACY` untuk akurasi GPS maksimal.
4. **Proses Absen**: - **Data Synchronization**: Sinkronisasi fungsi login agar benar-benar menangkap Nama Asli dari database untuk dikirim ke server (sebelumnya hanya NPM).
- Pastikan koordinat lokasi muncul (Gunakan tombol **Refresh** jika perlu). - **String Formatting**: Perbaikan format koordinat menggunakan `Locale.US` untuk mencegah error sistem pada pengaturan bahasa yang berbeda.
- Verifikasi nama **Mata Kuliah** yang muncul. - **Error Handling**: Penambahan blok *try-catch* pada networking dan validasi input kosong pada form registrasi.
- Tekan **AMBIL FOTO** dan lakukan selfie.
- Tekan **KIRIM ABSENSI**.
5. **Konfirmasi**: Tunggu pesan "Absensi diterima server" muncul di layar.
--- ---
## 📊 Monitoring & Validasi ## 🤖 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.
Data kehadiran dapat dipantau langsung oleh Admin/Dosen melalui: ---
* **Live Log**: [ntfy.ubharajaya.ac.id/EAS](https://ntfy.ubharajaya.ac.id/EAS)
* **Database Kehadiran**: [Link Spreadsheet Google Sheets](https://docs.google.com/spreadsheets/d/1jH15MfnNgpPGuGeid0hYfY7fFUHCEFbCmg8afTyyLZs/edit?gid=0#gid=0) ## ☁️ 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 ## 🎓 Informasi Akademik
* **Nama Mahasiswa**: Nabila Suwandira * **Nama Mahasiswa**: Nabila Suwandira
* **NPM**: 202310715066 * **NPM**: 202310715066
* **Program Studi**: Teknik Informatika * **Program Studi**: Teknik Informatika