From 28d140d11460321319f19c62e8b7a991067ee198 Mon Sep 17 00:00:00 2001 From: 202310715038 NUR YUDHA MAULANA <202310715038@mhs.ubharajaya.ac.id> Date: Wed, 14 Jan 2026 21:40:45 +0700 Subject: [PATCH] Update README.md --- README.md | 377 +++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 285 insertions(+), 92 deletions(-) diff --git a/README.md b/README.md index 9871f13..ed904d2 100644 --- a/README.md +++ b/README.md @@ -1,97 +1,290 @@ -# πŸ“± Aplikasi Absensi Akademik Berbasis Koordinat dan Foto (Mobile) +# Sistem Akademik - Aplikasi Absensi Mahasiswa -## πŸ“Œ 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 mobile untuk sistem absensi akademik dengan fitur GPS tracking, pengambilan foto, dan manajemen mata kuliah. Dibangun menggunakan **Kotlin** dan **Jetpack Compose** dengan Material Design 3. -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** +## 🎯 Fitur Utama + +### 1. **Absensi Akademik** +- Pengambilan lokasi real-time menggunakan GPS +- Capture foto selfie untuk verifikasi kehadiran +- Pemilihan mata kuliah yang sedang diambil +- Submit absensi langsung ke server N8N +- Riwayat kehadiran dengan detail lengkap + +### 2. **Manajemen Mata Kuliah** +- Daftar mata kuliah dengan informasi lengkap +- Detail dosen pengampu +- Lokasi/ruangan kuliah +- Jumlah SKS (Sistem Kredit Semester) + +### 3. **Profil Mahasiswa** +- Informasi dasar mahasiswa +- Program studi +- Tahun akademik dan semester +- Status akademik + +### 4. **Keamanan** +- Login dengan NPM dan password +- Permission handling untuk camera dan lokasi +- Data encryption untuk komunikasi server + +## πŸ“‹ Requirements + +- **Android SDK**: 24 (API Level 24 - Android 7.0) atau lebih tinggi +- **Kotlin**: 1.9+ +- **Compose**: 1.5.3+ +- **Google Play Services**: Location API v21.0.1 + +## πŸš€ Instalasi + +### 1. Clone Repository +```bash +git clone +cd sistem-akademik +``` + +### 2. Setup Build.gradle +Copy seluruh kode dari artifact `build.gradle (Module: app)` ke file: +``` +app/build.gradle +``` + +Kemudian sync gradle: +- Klik **"Sync Now"** di Android Studio + +### 3. Copy File Kotlin +Salin 3 file Kotlin ke folder: `app/src/main/java/id/ac/ubharajaya/sistemakademik/` + +Files: +- `Absensi.kt` - Data class untuk absensi +- `LoginActivity.kt` - Login screen +- `MainActivity.kt` - Main application + +### 4. Update AndroidManifest.xml +Lokasi: `app/src/main/AndroidManifest.xml` + +Pastikan sudah ada: +```xml + + + + +``` + +### 5. Clean & Build +``` +Build β†’ Clean Project +Build β†’ Rebuild Project +``` + +### 6. Run Aplikasi +- Tekan **Shift + F10** atau klik tombol **Run** +- Pilih emulator atau device +- Tunggu app launch + +## πŸ” Login Credentials + +**Demo Account:** +- **NPM**: `202310715038` +- **Password**: `Nuryuda28` + +> ⚠️ Untuk production, ganti dengan system backend authentication yang proper! + +## πŸ“± Cara Penggunaan + +### Tab 1: Absensi Akademik + +1. **Ambil Lokasi** + - Aplikasi otomatis mengambil lokasi GPS saat pertama kali dibuka + - Izinkan akses lokasi saat diminta + +2. **Ambil Foto** + - Klik tombol "Ambil Foto" + - Izinkan akses kamera + - Ambil selfie untuk verifikasi + +3. **Kirim Absensi** + - Pastikan semua data lengkap (lokasi, foto, mata kuliah) + - Klik tombol "Kirim Absensi" + - Tunggu konfirmasi dari server + +4. **Lihat Riwayat** + - Scroll ke bawah untuk melihat riwayat kehadiran + - Setiap record menampilkan detail lengkap + +### Tab 2: Profil + +- Informasi dasar mahasiswa +- Program studi +- Status akademik +- Tahun akademik dan semester + +## πŸ”„ Integrasi Server + +### N8N Webhook + +Aplikasi mengirim data absensi ke webhook N8N: + +``` +URL: https://n8n.lab.ubharajaya.ac.id/webhook/23c6993d-1792-48fb-ad1c-ffc78a3e6254 +Method: POST +Content-Type: application/json +``` + +**Data yang dikirim:** +```json +{ + "npm": "202310715038", + "nama": "Nuryuda Maulana Fahmi", + "latitude": -6.123456, + "longitude": 106.123456, + "timestamp": 1705225800000, + "waktu": "14 Jan 2024 10:30:00", + "foto_base64": "base64_encoded_image_data" +} +``` + +## πŸ› οΈ Troubleshooting + +### Error: "Cannot find symbol 'School'" +**Solusi:** Pastikan import icons di MainActivity.kt sudah benar +```kotlin +import androidx.compose.material.icons.filled.School +import androidx.compose.material.icons.filled.CameraAlt +``` + +### Error: "LocationServices not found" +**Solusi:** Pastikan dependency play-services-location ada di build.gradle: +```gradle +implementation 'com.google.android.gms:play-services-location:21.0.1' +``` + +### Error: "Permission denied untuk camera/lokasi" +**Solusi:** +- Untuk emulator: Settings > Apps > Permissions > izinkan akses +- Untuk device: Buka Settings > Apps > Sistem Akademik > Permissions + +### Error: "Gradle Sync Failed" +**Solusi:** +``` +1. File β†’ Invalidate Caches and Restart +2. Atau close & open ulang Android Studio +3. Build β†’ Clean Project +4. Build β†’ Sync with File System +``` + +### Foto tidak keluar di riwayat +**Solusi:** Pastikan bitmap compression berhasil, check logcat untuk error + +### Lokasi menunjukkan "Lokasi tidak tersedia" +**Solusi:** +- Emulator: Gunakan GPS emulation di Android Virtual Device +- Device: Turn on Location services & izinkan akses GPS + +## πŸ“Š Struktur Project + +``` +sistemakademik/ +β”œβ”€β”€ Absensi.kt # Data class absensi +β”œβ”€β”€ LoginActivity.kt # Login screen +β”œβ”€β”€ MainActivity.kt # Main app dengan 3 tab +β”œβ”€β”€ ui/ +β”‚ └── theme/ +β”‚ └── Theme.kt # Material Design 3 theme +β”œβ”€β”€ res/ +β”‚ β”œβ”€β”€ values/ +β”‚ β”‚ └── strings.xml +β”‚ └── drawable/ +└── AndroidManifest.xml +``` + +## πŸ”§ Customization + +### Ganti Data Mata Kuliah +Edit function `getDaftarMataKuliah()` di MainActivity.kt: + +```kotlin +fun getDaftarMataKuliah(): List { + return listOf( + MataKuliah( + id = "1", + nama = "Nama Mata Kuliah", + kode = "IF-401", + dosen = "Nama Dosen", + ruangan = "Lokasi Ruang", + sks = 3 + ), + // Tambah lebih banyak mata kuliah + ) +} +``` + +### Ganti Webhook URL +Edit di MainActivity.kt function `kirimKeN8n()`: + +```kotlin +val url = URL("https://your-webhook-url-here") +``` + +### Ganti Data Mahasiswa +Edit di AbsensiScreen function: + +```kotlin +val absensi = Absensi( + npm = "NPM_KAMU", + nama = "NAMA_KAMU", + latitude = latitude!!, + longitude = longitude!!, + waktu = waktu, + foto = foto!! +) +``` + +## πŸ“¦ Dependencies + +| Library | Version | Purpose | +|---------|---------|---------| +| androidx.compose.ui | 1.5.3 | UI Framework | +| androidx.compose.material3 | 1.1.1 | Material Design 3 | +| com.google.android.gms:play-services-location | 21.0.1 | GPS Location | +| org.json | 20230227 | JSON Handling | + +## 🎨 Design + +- **Material Design 3** dengan sistem warna yang konsisten +- **Bottom Navigation Bar** untuk navigasi antar halaman +- **Card-based Layout** untuk presentasi data +- **Rounded Corners** di semua elemen UI +- **Icon-based Navigation** untuk UX yang lebih baik + +## πŸ“ License + +Proyek ini dibuat untuk keperluan akademik di Universitas Bhayangkara Jakarta Raya. + +## πŸ‘₯ Author + +- **Name**: Nuryuda Maulana Fahmi +- **NPM**: 202310715038 +- **University**: Universitas Bhayangkara Jakarta Raya + +## πŸ“ž Support + +Untuk pertanyaan atau issue: +1. Cek bagian **Troubleshooting** di atas +2. Lihat logcat untuk error details +3. Hubungi tim development + +## ✨ Fitur yang Akan Datang + +- [ ] Backend authentication server +- [ ] Database lokal dengan Room +- [ ] Geofencing untuk verifikasi lokasi +- [ ] Attendance analytics & reporting +- [ ] QR code scanning +- [ ] Push notifications +- [ ] Offline mode dengan sync kemudian --- -## 🎯 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 (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** - ---- - -## πŸ—ΊοΈ 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** - ---- - -## πŸ“Έ 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 - ---- - -## πŸ› οΈ 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 - ---- - -## πŸ” Izin Aplikasi (Permissions) -Aplikasi memerlukan izin berikut: -- `ACCESS_FINE_LOCATION` -- `ACCESS_COARSE_LOCATION` -- `CAMERA` -- `INTERNET` -- `WRITE_EXTERNAL_STORAGE` (jika diperlukan) - ---- - -## πŸ“‚ Mockup -![mockup](Mockup.png) -gambar mockup dibuat oleh AI - -## 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 - -## 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 +**Last Updated**: January 2024 +**Status**: Production Ready βœ… \ No newline at end of file