# 1. System Analysis - BellOn Attendance System

## 1.1 Deskripsi Singkat
BellOn adalah sistem absensi modern sekolah & perusahaan murni dikerjakan dengan arsitektur **PHP Native 8.3+ MVC** dipadukan dengan database MySQL.

## 1.2 Tujuan
1. Integrasi presensi QR-Code statis berlapis keamanan (GPS Haversine, Anti-Fake GPS, Anti-Emulator).
2. Perekaman data analitik (Device, IP, Lat, Long).
3. Pengajuan cuti/izin/sakit dengan bukti jepretan kamera device langsung (`capture="environment"`).
4. Penanganan role kompleks (RBAC).

## 1.3 Arsitektur Keamanan
- **Brute Force Protection** (Account Lockout pada `users` table).
- **CSRF Tokens** pada seluruh operasi form POST (lihat `Security::generateCSRF()`).
- **Session Security** via HttpOnly & SameSite strict flags.
- **XSS Protection** memanfaatkan escaping ketat (`htmlspecialchars`).
- **Geofencing** jarak diukur dengan Haversine formulary. Radius default: 20 meter.

---

# 2. Arsitektur Pola Desain (MVC Structure)
Sistem memisahkan logika ke dalam 3 entitas utama untuk memudahkan skalabilitas:
- **/app/controllers**: Menjembatani request HTTP pengguna dan model interaksi database. 
- **/app/models**: Komunikasi murni via eksekusi `PDO` Prepared Statement (No Object Injection).
- **/app/views**: Lapisan presentasi UI menggunakan Bootstrap 5 dan manipulasi jQuery.
