diff --git a/README.md b/README.md index f3d4497..d5275eb 100644 --- a/README.md +++ b/README.md @@ -1,47 +1,62 @@ -# 🚀 Smart-Attendance: Sistem Absensi Mahasiswa Terintegrasi Cloud +# 🚀 Smart-Attendance: Sistem Absensi Digital Terintegrasi Cloud -**Smart-Attendance** adalah aplikasi Android berbasis **Jetpack Compose** yang dirancang untuk revolusi absensi perkuliahan. Aplikasi ini menjamin integritas data kehadiran dengan menggabungkan verifikasi **Geografis (GPS)**, **Biometrik Visual (Kamera)**, dan **Identitas Digital (SQLite)** dalam satu alur kerja otomatis yang terhubung ke **Google Sheets** via **n8n Automation**. +[![Android](https://img.shields.io/badge/Platform-Android-brightgreen.svg)](https://developer.android.com/) +[![Kotlin](https://img.shields.io/badge/Language-Kotlin-blue.svg)](https://kotlinlang.org/) +[![Jetpack Compose](https://img.shields.io/badge/UI-Jetpack%20Compose-orange.svg)](https://developer.android.com/jetpack/compose) +[![SQLite](https://img.shields.io/badge/Database-SQLite-lightgrey.svg)](https://www.sqlite.org/) + +**Smart-Attendance** adalah platform absensi mahasiswa berbasis mobile yang menggabungkan keamanan database lokal dengan validasi biometrik visual dan geografis secara *real-time*. Proyek ini dirancang untuk memastikan validitas kehadiran mahasiswa dengan alur kerja yang sepenuhnya otomatis dari perangkat Android hingga ke sistem manajemen data cloud. + +--- + +## 📸 Mockup Aplikasi + +Berikut adalah pratinjau desain antarmuka pengguna (UI) dari aplikasi Smart-Attendance: + +![Mockup Aplikasi](Mockup.png) + +*Gambar di atas merupakan representasi visual dari layar Login, Registrasi, dan Dashboard Absensi.* --- ## 🌟 Fitur Utama -- **Otentikasi Ganda**: Sistem login dan registrasi berbasis database **SQLite** lokal untuk memastikan akun unik per mahasiswa (berdasarkan NPM). -- **Geo-Fencing Validation**: Mendeteksi lokasi presisi hingga 6 digit desimal menggunakan *High Accuracy Priority* dari Google Play Services. -- **Visual Identity Verification**: Pengambilan foto wajah langsung (*Real-time Camera*) yang dienkripsi ke format **Base64** untuk bukti kehadiran autentik. -- **Dashboard Akademik**: Mahasiswa dapat memilih atau memasukkan Mata Kuliah yang sedang berlangsung. -- **Sinkronisasi Instan**: Data dikirim dalam milidetik ke server cloud menggunakan protokol `HttpURLConnection` yang ringan. -- **UI Modern & Adaptif**: Antarmuka responsif dengan desain kartu modern dan tema gradasi Hijau-Kuning-Putih yang segar. +- **Otentikasi SQLite**: Pendaftaran dan masuk akun yang aman dengan validasi NPM unik langsung dari database lokal perangkat. +- **Geo-Precision Tracking**: Mendeteksi lokasi presisi (Latitude & Longitude) menggunakan *Fused Location Provider API* dengan prioritas akurasi tinggi. +- **Visual Proof Recognition**: Integrasi kamera untuk pengambilan foto wajah (selfie) secara *real-time* sebagai bukti fisik kehadiran. +- **Auto-Sync Integration**: Sinkronisasi data otomatis ke **Google Sheets** melalui jembatan **n8n Automation Webhook**. +- **Manajemen Mata Kuliah**: Fitur pemilihan atau penginputan mata kuliah yang fleksibel saat melakukan absensi. +- **Material Design 3**: UI modern dengan gradasi warna profesional (Hijau Tua, Kuning, Putih) dan komponen kartu yang intuitif. --- ## 🛠️ Stack Teknologi -| Komponen | Teknologi | +| Komponen | Teknologi yang Digunakan | | :--- | :--- | | **Framework UI** | Jetpack Compose (Modern Toolkit) | -| **Bahasa** | Kotlin (100%) | -| **Lokasi** | Google Fused Location Provider API | -| **Database** | SQLite (Manajemen User Lokal) | -| **Networking** | Java URLConnection (JSON Payload) | -| **Integrasi** | n8n Webhook & Google Sheets API | -| **Image Handling** | Android Graphics Bitmap & Base64 Encoding | +| **Bahasa Pemrograman** | Kotlin (100%) | +| **Location Services** | Google Play Services (Fused Location) | +| **Database Lokal** | SQLite (Manajemen User & Kredensial) | +| **Networking** | Java HttpURLConnection (JSON Payload) | +| **Automation Tool** | n8n.io (Webhook Workflow) | +| **Cloud Storage** | Google Sheets (Database Akhir) | --- ## 🏗️ Arsitektur Data ### 1. Database Schema (SQLite) -Tabel `users` menyimpan kredensial aman di dalam memori internal perangkat: -- `nama` (TEXT): Nama Lengkap Mahasiswa. -- `npm` (TEXT - UNIQUE): Nomor Pokok Mahasiswa sebagai identitas unik. -- `password` (TEXT): Kata sandi terenkripsi. +Tabel `users` menyimpan data profil mahasiswa di memori internal: +- `nama` (TEXT): Nama lengkap mahasiswa. +- `npm` (TEXT - UNIQUE): Identitas utama mahasiswa. +- `password` (TEXT): Kata sandi akses akun. -### 2. JSON Payload Integration -Data dikirim ke Webhook dengan struktur berikut: +### 2. Payload Data (JSON) +Setiap paket absensi yang dikirim memiliki struktur data berikut: ```json { - "npm": "2021xxxxxx", + "npm": "20210710001", "nama": "Nabila Suwandira", "latitude": -6.229728, "longitude": 106.989250, @@ -55,46 +70,36 @@ Data dikirim ke Webhook dengan struktur berikut: ## 📱 Panduan Penggunaan -1. **Registrasi**: Pengguna baru harus mendaftarkan Nama, NPM, dan Password pada layar "Daftar Akun". -2. **Login**: Masuk menggunakan NPM dan Password yang telah terdaftar. -3. **Izin Akses**: Aplikasi akan meminta izin **Kamera** dan **Lokasi Presisi** (Wajib diberikan untuk melakukan absensi). -4. **Cek Lokasi**: Pastikan koordinat muncul. Jika koordinat belum muncul atau ingin diperbarui, klik tombol **Refresh Lokasi**. -5. **Ambil Foto**: Klik "AMBIL FOTO" untuk membuka kamera. Ambil foto wajah dengan jelas. -6. **Kirim**: Klik "KIRIM ABSENSI". Notifikasi akan muncul jika data berhasil diterima oleh server cloud. +1. **Daftar Akun**: Masuk ke menu "Daftar Sekarang", isi Nama, NPM, dan Password. +2. **Login**: Masuk menggunakan NPM dan Password yang telah didaftarkan. +3. **Berikan Izin**: Berikan izin akses **Lokasi** dan **Kamera** saat diminta oleh sistem. +4. **Verifikasi Lokasi**: Pastikan koordinat GPS muncul dengan benar. Gunakan tombol **Refresh** jika posisi kurang akurat. +5. **Ambil Selfie**: Klik "AMBIL FOTO" untuk membuka kamera dan ambil foto wajah dengan jelas. +6. **Submit Absensi**: Klik "KIRIM ABSENSI". Sistem akan memberikan notifikasi jika data telah diterima oleh server. --- -## 🔧 Persyaratan Sistem +## 🔧 Instalasi & Persiapan -- **Min SDK**: API 28 (Android 9.0 Pie) -- **Target SDK**: API 34 (Android 14) -- **Hardware**: Perangkat harus memiliki sensor GPS dan Kamera belakang/depan. -- **Internet**: Diperlukan koneksi aktif untuk mengirim data absensi. +1. Clone repositori ini. +2. Buka project di **Android Studio (Ladybug 2024.2.1)** atau versi terbaru. +3. Pastikan dependensi di `build.gradle.kts` sudah tersinkronisasi. +4. Lakukan *Build & Run* ke perangkat fisik Android (Min API 28 / Android 9.0). --- -## 🔐 Keamanan & Izin (Permissions) +## 📡 Monitoring Real-Time -Aplikasi mengimplementasikan standar keamanan Android: -- `ACCESS_FINE_LOCATION`: Untuk mendapatkan akurasi GPS terbaik. -- `CAMERA`: Digunakan hanya saat proses pengambilan foto bukti hadir. -- `INTERNET`: Untuk sinkronisasi data ke database cloud Universitas. +Admin dapat memantau status absensi secara langsung melalui: +* **Live Notification**: [ntfy.ubharajaya.ac.id/EAS](https://ntfy.ubharajaya.ac.id/EAS) +* **Database Sheets**: [Sheet Kehadiran Mahasiswa](https://docs.google.com/spreadsheets/d/1jH15MfnNgpPGuGeid0hYfY7fFUHCEFbCmg8afTyyLZs/edit?gid=0#gid=0) --- -## 📊 Monitoring Real-Time +## 🎓 Informasi Project -Admin dan Mahasiswa dapat memverifikasi status pengiriman secara langsung: -- **NTFY Channel**: [Live Notification EAS](https://ntfy.ubharajaya.ac.id/EAS) -- **Google Sheets Database**: [Sheet Kehadiran Mahasiswa](https://docs.google.com/spreadsheets/d/1jH15MfnNgpPGuGeid0hYfY7fFUHCEFbCmg8afTyyLZs/edit?gid=0#gid=0) - ---- - -## 🎓 Identitas Mahasiswa - -**Nabila Suwandira** -**NPM**: [Input NPM Anda Disini] -**Prodi**: Teknik Informatika +**Nama**: Nabila Suwandira +**Program Studi**: Teknik Informatika **Instansi**: Universitas Bhayangkara Jakarta Raya **Mata Kuliah**: Pemrograman Perangkat Bergerak **Project**: Evaluasi Akhir Semester (EAS) 2025-2026