Type above and press Enter to search. Press Close to cancel.
## Analisis sistem aplikasi absensi guru
### 1. Fitur
#### A. Fitur untuk user (guru)
1. Dashboard
- Menampilkan informasi pengguna
- Informasi sekolah (SMP N 2 Telukjambe Barat)
- Galeri foto sekolah
2. Absensi masuk dan pulang
- Check-in/check-out
- Validasi lokasi GPS (harus dalam radius yang ditentukan)
- Selfie wajib saat absen
- Rekam koordinat (latitude, longitude)
- Simpan foto selfie dengan timestamp
- Validasi di client-side (JavaScript): pengecekan posisi dalam radius
3. Pengajuan izin
- Form pengajuan izin/sakit
- Upload surat keterangan (suket)
- Catatan pengajuan
- Riwayat pengajuan
4. Riwayat absensi
- Riwayat per bulan (filter bulan/tahun)
- Menampilkan:
- Tanggal
- Status (kerja/libur)
- Jam masuk/pulang
- Foto selfie masuk/pulang
- Koordinat lokasi
- Keterangan (Hadir, Tidak Absen Masuk, Tidak Absen Pulang, dll)
5. Profil
- Lihat dan edit profil
- Nama, email, jenis kelamin, alamat, nomor HP
#### B. Fitur untuk admin
1. Dashboard
- Statistik jumlah guru (USER)
- Statistik absensi masuk hari ini
2. Manajemen data guru
- Daftar semua guru
- Tambah guru baru
- Edit data guru (nama, email, password, alamat, HP, jenis kelamin)
- Hapus guru
- Detail guru
3. Manajemen data absensi
- Lihat semua absensi
- Filter berdasarkan:
- Tanggal
- Jenis (Masuk/Pulang/Semua)
- Informasi per absensi:
- Nama guru
- Tanggal & waktu
- Jenis absensi
- Foto selfie
- Koordinat lokasi (dengan peta)
- Export Excel per bulan
4. Manajemen data izin
- Daftar pengajuan izin
- Filter status: belum disetujui, sudah disetujui, ditolak
- Approve/reject pengajuan
- Lihat detail: tanggal, keterangan (izin/sakit), surat keterangan, catatan
5. Manajemen lokasi
- Atur lokasi absensi (titik pusat)
- Set radius (meter)
- Koordinat latitude & longitude
- Peta interaktif
#### C. Fitur umum
1. Autentikasi
- Login (email & password)
- Logout
- Register (pendaftaran akun baru)
- Reset password (forgot password)
2. Keamanan
- Middleware autentikasi
- Pemisahan akses: admin vs user
- CSRF protection
---
### 2. User/peran pengguna
#### A. Admin
- Role: `ADMIN`
- Akses:
- Dashboard admin
- Manajemen guru (CRUD)
- Manajemen absensi (lihat & export)
- Manajemen izin (approve/reject)
- Manajemen lokasi absensi
#### B. User (Guru)
- Role: `USER`
- Akses:
- Dashboard user
- Absensi masuk/pulang
- Pengajuan izin
- Lihat riwayat absensi sendiri
- Edit profil sendiri
#### C. Struktur tabel users
```
- id
- name (username)
- full_name (nama lengkap)
- email (unique)
- password (hashed)
- jenis_kelamin (L/P)
- alamat
- no_hp
- role (ADMIN/USER) - default: USER
- profile_photo_path (nullable)
- created_at, updated_at
```
---
### 3. Flow bisnis
#### A. Flow autentikasi
1. Register → user membuat akun (role default: USER)
2. Login → email & password
3. Redirect berdasarkan role:
- ADMIN → `/dashboard`
- USER → `/home`
#### B. Flow absensi (guru)
1. User login → redirect ke `/home`
2. Klik "Absen Masuk" atau "Absen Pulang"
3. Sistem:
- Ambil lokasi yang diizinkan (dari tabel `locations`)
- Buka halaman absen dengan peta
4. Validasi lokasi (client-side):
- Ambil GPS user
- Cek apakah dalam radius
- Tampilkan marker di peta
- Update setiap 2 detik
5. Ambil foto:
- User ambil selfie
- Preview foto
6. Submit absensi:
- Simpan foto (base64 → file, disimpan di `storage/app/public/images/`)
- Simpan: user_id, jenis (MASUK/PULANG), photo_path, lat, lng
- Redirect ke halaman sukses
7. Tampilkan konfirmasi sukses dengan waktu absen
#### C. Flow pengajuan izin
1. User klik menu "Izin"
2. Lihat riwayat pengajuan sebelumnya
3. Buat pengajuan baru:
- Pilih tanggal
- Pilih keterangan (Izin/Sakit)
- Upload surat keterangan (file)
- Isi catatan
- Submit
4. Status: `belum` → `sudah` (jika approve) atau `tolak` (jika reject)
5. Admin approve/reject di halaman "Data Izin"
#### D. Flow manajemen absensi (admin)
1. Admin akses "Data Absensi"
2. Filter:
- Pilih tanggal (default: hari ini)
- Pilih jenis (Masuk/Pulang/Semua)
3. Sistem menampilkan:
- Daftar absensi sesuai filter
- Informasi: nama guru, tanggal, jam, jenis, foto, lokasi
4. Export Excel:
- Pilih bulan & tahun
- Generate file Excel dengan data:
- No, Nama, Tanggal, Waktu, Jenis, Latitude, Longitude
#### E. Flow manajemen guru (admin)
1. Admin akses "Data Guru"
2. Lihat daftar semua user dengan role `USER`
3. Aksi:
- Tambah: form nama, email, password, jenis kelamin, alamat, HP
- Edit: ubah data (termasuk password)
- Hapus: hapus guru dari sistem
- Detail: lihat & edit data guru
#### F. Flow manajemen lokasi (admin)
1. Admin akses "Data Lokasi"
2. Sistem menampilkan:
- Peta dengan marker lokasi saat ini
- Form: Latitude, Longitude, Radius (meter)
3. Admin set lokasi:
- Klik/geser marker di peta
- Atau input manual koordinat
- Set radius (default: 50 meter)
- Save
4. Lokasi tersimpan (hanya 1 lokasi aktif, diambil record pertama)
#### G. Flow riwayat absensi (guru)
1. User akses "Riwayat"
2. Filter bulan/tahun (default: bulan ini)
3. Sistem:
- Generate daftar tanggal dalam bulan tersebut
- Tandai weekend sebagai "libur", weekday sebagai "kerja"
- Ambil data absensi user dalam bulan tersebut
- Match absensi dengan tanggal
4. Tampilan:
- Kalender bulanan
- Setiap tanggal menampilkan:
- Jam masuk (jika ada)
- Jam pulang (jika ada)
- Foto selfie masuk/pulang
- Status: "Hadir (Dalam Lokasi)", "Tidak Absen Masuk", "Tidak Absen Pulang"
---
### 5. Teknologi yang digunakan
- Framework: Laravel 11 (PHP 8.x)
- Frontend: Blade, Tailwind CSS, JavaScript, Leaflet (maps), Moment.js
- Database: MySQL/MariaDB
- File Storage: Laravel Storage
- Export: Maatwebsite Excel (PhpSpreadsheet)
---
### 6. Catatan teknis
1. Validasi lokasi dilakukan di client-side (JavaScript), tidak ada validasi server-side
2. Foto disimpan sebagai base64 lalu dikonversi ke file
3. Sistem hanya mendukung 1 lokasi absensi aktif
4. Export Excel hanya tersedia untuk admin
5. Password di-hash menggunakan bcrypt (Laravel default)
---
Kesimpulan: Sistem absensi guru berbasis web dengan GPS, selfie, pengajuan izin, manajemen data, dan export laporan untuk admin.