From 242cd76fa2882180e003cd80366cb5f6c5816fae Mon Sep 17 00:00:00 2001 From: 202310715043 MUHAMMAD RAFLY AL FATHIR <202310715043@mhs.ubharajaya.ac.id> Date: Wed, 14 Jan 2026 21:35:43 +0700 Subject: [PATCH] Update README.md --- README.md | 239 +++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 166 insertions(+), 73 deletions(-) diff --git a/README.md b/README.md index 9871f13..9979774 100644 --- a/README.md +++ b/README.md @@ -1,97 +1,190 @@ -# πŸ“± Aplikasi Absensi Akademik Berbasis Koordinat dan Foto (Mobile) +# πŸ“± Sistem Absensi Akademik -## πŸ“Œ 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**, dan -2. Melakukan **pengambilan foto (selfie) secara langsung saat absensi** +Aplikasi mobile berbasis Android untuk sistem absensi mahasiswa dengan validasi lokasi GPS dan pengambilan foto. --- -## 🎯 Tujuan Proyek -- Mengimplementasikan **Location-Based Service (LBS)** pada aplikasi mobile -- Mengintegrasikan **kamera perangkat** untuk dokumentasi absensi -- Mencegah kecurangan absensi (titip absen) -- Mengembangkan aplikasi mobile akademik berbasis Android -- Melatih kemampuan perancangan dan implementasi aplikasi mobile +## 🎯 Fitur Utama + +- πŸ” **Login Pengguna** - Autentikasi dengan NPM dan Password +- πŸ“ **Pengambilan Lokasi** - Deteksi GPS real-time (Latitude & Longitude) +- 🏫 **Validasi Radius** - Validasi lokasi dalam radius 100m dari kampus +- πŸ“Έ **Foto Mahasiswa** - Pengambilan foto saat absensi +- πŸ•’ **Pencatatan Waktu** - Timestamp otomatis setiap absensi +- πŸ“„ **Riwayat Kehadiran** - History absensi tersimpan lokal +- ⚠️ **Notifikasi** - Alert jika absensi ditolak (lokasi tidak valid) +- 🌐 **Integrasi Server** - Kirim data ke webhook n8n --- -## πŸš€ Fitur Utama -- πŸ” **Login Pengguna (Mahasiswa)** -- πŸ“ **Pengambilan Koordinat Lokasi (Latitude & Longitude)** -- 🏫 **Validasi Lokasi Absensi (Radius Area)** -- πŸ“Έ **Pengambilan Foto Mahasiswa Saat Absensi** -- πŸ•’ **Pencatatan Waktu Absensi** -- πŸ“„ **Riwayat Kehadiran Mahasiswa** -- ⚠️ **Notifikasi Absensi Ditolak jika Tidak Valid** +## πŸ› οΈ Tech Stack + +- **Language:** Kotlin +- **UI Framework:** Jetpack Compose +- **Design:** Material Design 3 +- **Location:** Google Play Services (Fused Location Provider) +- **Storage:** SharedPreferences +- **Network:** HttpURLConnection +- **Min SDK:** API 24 (Android 7.0) +- **Target SDK:** API 34 (Android 14) --- -## πŸ—ΊοΈ Mekanisme Absensi Berbasis Lokasi dan Foto -1. Mahasiswa melakukan **login** -2. Memilih menu **Absensi** -3. Sistem meminta: - - Izin **akses lokasi** - - Izin **akses kamera** -4. Aplikasi mengambil: - - πŸ“ **Koordinat lokasi mahasiswa** - - πŸ“Έ **Foto mahasiswa secara real-time** -5. Sistem melakukan validasi: - - Lokasi berada dalam **radius absensi** - - Foto berhasil diambil -6. Jika valid β†’ **Absensi berhasil** -7. Jika tidak valid β†’ **Absensi ditolak** +## πŸ“ Struktur Project + +``` +app/src/main/java/id/ac/ubharajaya/sistemakademik/ +β”‚ +β”œβ”€β”€ MainActivity.kt # Entry point & navigation +β”‚ +β”œβ”€β”€ models/ +β”‚ └── DataModels.kt # Data class (User, AbsensiRecord) +β”‚ +β”œβ”€β”€ utils/ +β”‚ β”œβ”€β”€ SessionManager.kt # Manajemen sesi login +β”‚ β”œβ”€β”€ LocationUtils.kt # Validasi lokasi & radius +β”‚ β”œβ”€β”€ NetworkUtils.kt # HTTP request ke server +β”‚ └── Constants.kt # Konstanta (dummy users) +β”‚ +└── ui/ + └── screens/ + β”œβ”€β”€ LoginScreen.kt # Halaman login + β”œβ”€β”€ AbsensiScreen.kt # Halaman absensi utama + β”œβ”€β”€ RiwayatScreen.kt # Halaman riwayat + └── ProfilScreen.kt # Halaman profil & logout +``` --- -## πŸ“Έ Pengambilan Foto Saat Absensi -- Foto diambil menggunakan **kamera depan (selfie)** -- Foto hanya dapat diambil **saat proses absensi** -- Foto disimpan sebagai **bukti kehadiran** -- Foto dapat digunakan untuk: - - Verifikasi manual oleh dosen - - Dokumentasi akademik +## πŸš€ Instalasi & Setup + +### 1. Clone Repository +```bash +git clone https://github.com/username/sistem-absensi-akademik.git +cd sistem-absensi-akademik +``` + +### 2. Buka di Android Studio +- Buka Android Studio +- File β†’ Open β†’ Pilih folder project +- Tunggu Gradle sync selesai + +### 3. Konfigurasi +Edit file `utils/LocationUtils.kt`: +```kotlin +const val KAMPUS_LAT = -6.175392 // Koordinat kampus Anda +const val KAMPUS_LON = 106.827153 // Koordinat kampus Anda +const val RADIUS_METER = 100.0 // Radius dalam meter +``` + +Edit file `utils/NetworkUtils.kt`: +```kotlin +private const val WEBHOOK_URL = "https://your-webhook-url.com" +``` + +### 4. Build & Run +- Sambungkan device Android atau jalankan emulator +- Run β†’ Run 'app' --- -## πŸ› οΈ Teknologi yang Digunakan -- **Platform** : Android -- **Bahasa Pemrograman** : Kotlin / Java -- **Location Service** : - - Google Maps API - - Fused Location Provider -- **Camera API** : CameraX / Camera2 -- **Database** : Firebase / SQLite / MySQL -- **Storage** : Firebase Storage / Local Storage -- **IDE** : Android Studio +## πŸ“± Cara Penggunaan + +### Login +1. Buka aplikasi +2. Masukkan NPM dan Password +3. Tekan **Login** + +**Demo Account:** +- NPM: `2024001` | Password: `password123` +- NPM: `2024002` | Password: `password123` +- NPM: `2024003` | Password: `password123` + +### Absensi +1. Izinkan akses **Lokasi** (GPS) +2. Tunggu hingga lokasi **Valid** (hijau) +3. Tekan **Ambil Foto** +4. Izinkan akses **Kamera** +5. Ambil foto selfie +6. Tekan **Kirim Absensi** + +### Riwayat & Profil +- Tab **Riwayat**: Lihat history absensi +- Tab **Profil**: Info user & logout --- -## πŸ” Izin Aplikasi (Permissions) -Aplikasi memerlukan izin berikut: -- `ACCESS_FINE_LOCATION` -- `ACCESS_COARSE_LOCATION` -- `CAMERA` -- `INTERNET` -- `WRITE_EXTERNAL_STORAGE` (jika diperlukan) +## πŸ”‘ Permissions + +Aplikasi memerlukan permission berikut: +- βœ… `INTERNET` - Kirim data ke server +- βœ… `ACCESS_FINE_LOCATION` - GPS akurasi tinggi +- βœ… `ACCESS_COARSE_LOCATION` - GPS fallback +- βœ… `CAMERA` - Ambil foto mahasiswa --- -## πŸ“‚ Mockup -![mockup](Mockup.png) -gambar mockup dibuat oleh AI +## πŸ“Š Data Format (Server) -## Catatan: -- Starter project ini dibuat berbantukan AI -- Kembangkan project dari starter yang sudah disediakan, jangan membuat dari awal. -- Untuk koordinat bisa ditambah/kurangi angka tertentu agar tidak memunculkan koordinat rumah masing-masing, data awal tetap dari GPS. - -## Pengecekan: -- https://ntfy.ubharajaya.ac.id/EAS -- https://docs.google.com/spreadsheets/d/1jH15MfnNgpPGuGeid0hYfY7fFUHCEFbCmg8afTyyLZs/edit?gid=0#gid=0 +JSON yang dikirim ke webhook: +```json +{ + "npm": "202310715043", + "nama": "Muhammad Rafly Al Fathir", + "latitude": -6.175392, + "longitude": 106.827153, + "timestamp": 1705244400000, + "foto_base64": "base64_encoded_image...", + "jarak_meter": 45 +} +``` -## Webhook: -- test: https://n8n.lab.ubharajaya.ac.id/webhook-test/23c6993d-1792-48fb-ad1c-ffc78a3e6254 -- production: https://n8n.lab.ubharajaya.ac.id/webhook/23c6993d-1792-48fb-ad1c-ffc78a3e6254 \ No newline at end of file +--- + +## πŸ“ Changelog + +### Version 1.0.0 (14 Januari 2026) +- ✨ Implementasi sistem login +- ✨ Validasi lokasi dengan radius +- ✨ Pengambilan foto mahasiswa +- ✨ Riwayat absensi lokal +- ✨ Integrasi webhook n8n +- πŸ› Fixed Android 13+ compatibility + +--- + +## 🀝 Contributing + +1. Fork repository +2. Buat branch baru (`git checkout -b feature/AmazingFeature`) +3. Commit changes (`git commit -m 'Add some AmazingFeature'`) +4. Push ke branch (`git push origin feature/AmazingFeature`) +5. Buat Pull Request + +--- + +## πŸ“„ License + +Distributed under the MIT License. See `LICENSE` for more information. +gemini chatgpt claude + +--- + +## πŸ‘¨β€πŸ’» Developer + +**Universitas Bhayangkara Jakarta Raya** +- Website: https://ubharajaya.ac.id +- Email: admin@ubharajaya.ac.id + +--- + +## πŸ™ Acknowledgments + +- [Jetpack Compose](https://developer.android.com/jetpack/compose) +- [Material Design 3](https://m3.material.io/) +- [Google Play Services](https://developers.google.com/android/guides/overview) +- [n8n Workflow Automation](https://n8n.io/) + +--- + +**Made with ❀️ for Academic Attendance System** \ No newline at end of file