diff --git a/README.md b/README.md index f8b2b19..e745b0b 100644 --- a/README.md +++ b/README.md @@ -13,64 +13,82 @@ --- -## 🌟 Fitur Utama - -- **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. +## 📝 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 - -| Sektor | Teknologi | +## 🛠️ Stack Teknologi & Tools +| Kategori | Teknologi/Tools | | :--- | :--- | | **Bahasa Pemrograman** | [Kotlin](https://kotlinlang.org/) | -| **Framework UI** | [Jetpack Compose](https://developer.android.com/jetpack/compose) | -| **Database Lokal** | SQLite (Room/OpenHelper) | -| **Layanan Lokasi** | Google Play Services Location (Fused Location) | -| **Networking** | Java HttpURLConnection & JSONObject | +| **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 | --- -## 🏗️ Arsitektur Aliran Data - -1. **Input**: Mahasiswa memasukkan Nama, NPM, Mata Kuliah, serta mengambil foto wajah dan titik lokasi. -2. **Processing**: Aplikasi mengonversi foto ke format **Base64** dan mengemas seluruh data ke dalam objek **JSON**. -3. **Transmission**: Data dikirim via jaringan Internet ke URL Webhook n8n. -4. **Storage**: Server n8n mengolah data dan memasukkannya secara rapi ke baris kolom di Google Sheets. +## 🌟 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. --- -## 📱 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. -2. **Masuk**: Gunakan NPM dan Password yang telah dibuat untuk masuk ke Dashboard. -3. **Izin Perangkat**: Berikan izin **Akses Lokasi** dan **Kamera** agar aplikasi berfungsi dengan benar. -4. **Proses Absen**: - - Pastikan koordinat lokasi muncul (Gunakan tombol **Refresh** jika perlu). - - Verifikasi nama **Mata Kuliah** yang muncul. - - Tekan **AMBIL FOTO** dan lakukan selfie. - - Tekan **KIRIM ABSENSI**. -5. **Konfirmasi**: Tunggu pesan "Absensi diterima server" muncul di layar. +### 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. --- -## 📊 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 - * **Nama Mahasiswa**: Nabila Suwandira * **NPM**: 202310715066 * **Program Studi**: Teknik Informatika