# 🚀 Smart-Attendance: Sistem Absensi Digital Terintegrasi Cloud [![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 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 yang Digunakan | | :--- | :--- | | **Framework UI** | Jetpack Compose (Modern Toolkit) | | **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 data profil mahasiswa di memori internal: - `nama` (TEXT): Nama lengkap mahasiswa. - `npm` (TEXT - UNIQUE): Identitas utama mahasiswa. - `password` (TEXT): Kata sandi akses akun. ### 2. Payload Data (JSON) Setiap paket absensi yang dikirim memiliki struktur data berikut: ```json { "npm": "20210710001", "nama": "Nabila Suwandira", "latitude": -6.229728, "longitude": 106.989250, "mata_kuliah": "Pemrograman Perangkat Bergerak", "timestamp": 1739456789000, "foto_base64": "/9j/4AAQSkZJRg..." } ``` --- ## 📱 Panduan Penggunaan 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. --- ## 🔧 Instalasi & Persiapan 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). --- ## 📡 Monitoring Real-Time 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) --- ## 🎓 Informasi Project **Nama**: Nabila Suwandira **Program Studi**: Teknik Informatika **Instansi**: Universitas Bhayangkara Jakarta Raya **Mata Kuliah**: Pemrograman Perangkat Bergerak **Project**: Evaluasi Akhir Semester (EAS) 2025-2026