80 lines
4.2 KiB
Markdown
80 lines
4.2 KiB
Markdown
# 📱 Aplikasi Absensi Akademik Berbasis Koordinat dan Foto (Mobile)
|
|
|
|
## 📌 Deskripsi Proyek
|
|
Proyek ini merupakan **Tugas Project Akhir Mata Kuliah Pemrograman Mobile** yang bertujuan untuk membangun **aplikasi akademik berbasis mobile** dengan fokus pada **fitur absensi menggunakan data koordinat (GPS) dan pengambilan foto mahasiswa**.
|
|
|
|
Aplikasi ini dirancang untuk meningkatkan **validitas kehadiran mahasiswa**, dengan memastikan bahwa absensi hanya dapat dilakukan apabila mahasiswa:
|
|
1. Berada pada **lokasi yang telah ditentukan** (khusus status "Hadir"), dan
|
|
2. Melakukan **pengambilan foto (selfie) secara langsung saat absensi** untuk semua status kehadiran.
|
|
|
|
---
|
|
|
|
## 🎯 Tujuan Proyek
|
|
- Mengimplementasikan **Location-Based Service (LBS)** pada aplikasi mobile untuk validasi kehadiran.
|
|
- Mengintegrasikan **kamera perangkat** untuk dokumentasi dan verifikasi absensi.
|
|
- Mencegah kecurangan absensi (titip absen) dengan menggabungkan validasi lokasi dan foto.
|
|
- Mengembangkan aplikasi mobile akademik modern berbasis Android dengan Jetpack Compose.
|
|
- Melatih kemampuan perancangan dan implementasi aplikasi mobile yang andal dan mudah digunakan.
|
|
|
|
---
|
|
|
|
## 🚀 Fitur Utama
|
|
- 🔐 **Login Pengguna**: Sistem otentikasi sederhana untuk mahasiswa.
|
|
- 🏫 **Pemilihan Mata Kuliah**: Mahasiswa dapat memilih mata kuliah yang akan diikuti.
|
|
- 📊 **Pilihan Status Kehadiran**: Mahasiswa dapat memilih status "Hadir", "Sakit", atau "Izin".
|
|
- 📍 **Validasi Lokasi (Hadir)**: Saat memilih "Hadir", aplikasi akan memvalidasi lokasi mahasiswa. Absensi hanya bisa dilakukan di dalam radius yang telah ditentukan dari kampus.
|
|
- 📸 **Pengambilan Foto**: Mahasiswa diwajibkan mengambil foto (selfie) untuk semua status kehadiran sebagai bukti.
|
|
- 📝 **Input Keterangan (Sakit/Izin)**: Untuk status "Sakit" dan "Izin", mahasiswa dapat menambahkan keterangan opsional.
|
|
- 🕒 **Pencatatan Real-time**: Semua data absensi (lokasi, foto, waktu, status, keterangan) dikirim ke server secara real-time.
|
|
- 📄 **Riwayat Kehadiran**: (Fitur dalam pengembangan) Akan menampilkan riwayat absensi mahasiswa.
|
|
|
|
---
|
|
|
|
## 🗺️ Alur Kerja Aplikasi
|
|
1. Mahasiswa membuka aplikasi dan melakukan **login**.
|
|
2. Di halaman utama, mahasiswa **memilih mata kuliah**.
|
|
3. Mahasiswa **memilih status kehadiran** ("Hadir", "Sakit", atau "Izin").
|
|
4. - Jika **"Hadir"**: Aplikasi akan otomatis mengambil dan memvalidasi lokasi. Jika di luar radius, pengiriman absensi akan dinonaktifkan.
|
|
- Jika **"Sakit"** atau **"Izin"**: Aplikasi tetap mengambil data lokasi (jika tersedia) tanpa validasi radius, dan menampilkan kolom **keterangan opsional**.
|
|
5. Mahasiswa **mengambil foto (selfie)** sebagai bukti kehadiran.
|
|
6. Mahasiswa menekan tombol **"Kirim Absensi"** untuk merekam data kehadiran.
|
|
7. Data absensi dikirim ke server dan juga disimpan secara lokal di perangkat.
|
|
|
|
---
|
|
|
|
## 🛠️ Teknologi yang Digunakan
|
|
- **Platform**: Android
|
|
- **Bahasa Pemrograman**: Kotlin
|
|
- **Arsitektur UI**: Jetpack Compose
|
|
- **Manajemen State**: ViewModel dan MutableState
|
|
- **Navigasi**: Navigation Compose
|
|
- **Location Service**: Fused Location Provider (dari Google Play Services)
|
|
- **Konektivitas**: N8n Webhook untuk pengiriman data ke backend.
|
|
- **IDE**: Android Studio
|
|
|
|
---
|
|
|
|
## 🔐 Izin Aplikasi (Permissions)
|
|
Aplikasi ini memerlukan izin berikut untuk dapat berfungsi dengan baik:
|
|
- `ACCESS_FINE_LOCATION`: Untuk mendapatkan data lokasi yang akurat.
|
|
- `CAMERA`: Untuk mengambil foto saat absensi.
|
|
- `INTERNET`: Untuk mengirim data absensi ke server.
|
|
|
|
---
|
|
|
|
## 📂 Mockup
|
|

|
|
*Gambar mockup dibuat oleh AI.*
|
|
|
|
## Catatan:
|
|
- Starter project ini dibuat dengan bantuan AI.
|
|
- Kembangkan project dari starter yang sudah disediakan, jangan membuat dari awal.
|
|
- Untuk koordinat, data diambil langsung dari GPS perangkat. Pastikan GPS dalam keadaan aktif untuk fungsionalitas yang optimal.
|
|
|
|
---
|
|
|
|
## Pengecekan & Webhook
|
|
- **Pengecekan Data**: [Lihat Google Sheet](https://docs.google.com/spreadsheets/d/1jH15MfnNgpPGuGeid0hYfY7fFUHCEFbCmg8afTyyLZs/edit?gid=0#gid=0)
|
|
- **Webhook (Production)**: `https://n8n.lab.ubharajaya.ac.id/webhook/23c6993d-1792-48fb-ad1c-ffc78a3e6254`
|
|
- **Webhook (Test)**: `https://n8n.lab.ubharajaya.ac.id/webhook-test/23c6993d-1792-48fb-ad1c-ffc78a3e6254`
|