# RIETS — RKA Employee Tracking & Indoor Positioning System

RIETS adalah aplikasi PHP Native MVC untuk tracking karyawan melalui QR Area dan GPS browser, dengan location engine modular untuk BLE Beacon, UWB, RFID, dan gateway di tahap berikutnya.

## Fitur yang tersedia

- Flow karyawan: scan QR → verifikasi NIK/nama → izin GPS → tracking → stop.
- PWA responsif dengan IndexedDB offline queue, batch sync, retry, dan idempotency key.
- GPS dikirim default setiap 1 detik dan dapat diatur dari menu Setting.
- Live map GPS serta denah indoor BLE/UWB, pencarian, filter, status online/offline, dan detail marker.
- Replay GPS/indoor: rentang jam, timeline, Play/Pause/Stop, 1x/2x/5x.
- Heatmap GPS, dashboard analitik, laporan, QR Area, notifikasi, audit, dan user management.
- RBAC, Argon2id, CSRF, PDO prepared statements, rate limit, secure cookie, security headers, dan audit log.
- REST API JSON untuk browser, aplikasi native, BLE gateway, dan perangkat berikutnya.

## Persyaratan

- PHP 8.2+ (`PDO MySQL`, `mbstring`, `json`, `openssl`, `fileinfo`); PHP 8.3 direkomendasikan.
- MySQL 8 atau MariaDB 10.6+.
- Apache/LiteSpeed dengan rewrite aktif dan HTTPS untuk Geolocation API.

## Instalasi XAMPP

1. Letakkan proyek di `C:\xampp\htdocs\maprka`.
2. Buat database `riets`, pilih database itu, lalu impor `database/schema.sql` kemudian `database/seed.sql` melalui phpMyAdmin.
3. Salin `config/app.example.json` menjadi `config/app.json` dan isi koneksi database.
4. Ubah `app.base_url` menjadi `http://localhost/maprka/public`.
5. Buka URL tersebut.

## Instalasi cPanel

1. Buat database dan user MySQL, tambahkan user ke database dengan `ALL PRIVILEGES`.
2. Pilih database di phpMyAdmin, impor `database/schema.sql` kemudian `database/seed.sql`.
3. Isi koneksi database pada `config/app.json`; gunakan host `localhost` kecuali hosting menentukan lain.
4. Jika domain boleh memakai folder root, upload seluruh isi proyek ke `public_html/mapsgedungrka.rahmatkurniaabadi.com/`. File `.htaccess` root akan meneruskan request ke folder `public`.
5. Jika domain harus tetap memakai subfolder `rahmatku`, upload proyek ke `public_html/mapsgedungrka.rahmatkurniaabadi.com/rahmatku`, lalu atur Document Root domain ke `public_html/mapsgedungrka.rahmatkurniaabadi.com/rahmatku/public`.
6. Set `app.base_url` ke `https://mapsgedungrka.rahmatkurniaabadi.com` untuk root domain, atau ke URL subfolder bila tidak mengubah Document Root. Pastikan `secure_cookie=true`, `debug=false`.
7. Folder `storage` dan `public/uploads` harus dapat ditulis oleh PHP.

Saat update, pertahankan `config/app.json`, `public/uploads/`, dan data database.

## Akun development

- Admin: `admin@riets.local` / `Admin@12345`
- Uji karyawan: NIK `RKA-0001`, nama `Samsul`

Ganti password admin dan hapus/ganti seluruh akun contoh sebelum produksi.

## URL utama

- Admin: `/login`
- QR Area: `/qr-areas`
- Link hasil QR: `/track/{kode-acak}`
- Tracking aktif: `/tracking/live`
- Monitoring: `/monitoring`
- Replay: `/replay`
- Heatmap: `/heatmap`

## Catatan browser

Geolocation hanya berjalan pada HTTPS dan izin harus diberikan karyawan. PWA menyimpan titik ketika internet putus, tetapi browser Android/iPhone tidak menjamin tracking terus berjalan saat layar mati atau aplikasi ditutup. Gunakan aplikasi native/hybrid bila background tracking penuh merupakan syarat operasional.

Browser tidak dapat membaca aplikasi lain yang sedang dibuka, ID hardware permanen HP, atau memblokir kamera/sosmed. Untuk kebutuhan tersebut gunakan Android Enterprise MDM, iOS Supervised MDM, firewall/proxy kantor, dan persetujuan/kebijakan tertulis; tabel kebijakan perangkat sudah tersedia di `database/schema.sql` untuk menyimpan laporan resmi dari sistem tersebut.

Dokumentasi lanjutan tersedia di `docs/API.md`, `docs/ARCHITECTURE.md`, dan `docs/ERD.md`.
