V 2.0 — Production Ready

Report Maintenance System

Sistem manajemen laporan maintenance berbasis web — dibangun ulang dari CodeIgniter 3 ke CodeIgniter 4 dengan arsitektur modern, performa lebih tinggi, dan keamanan yang diperkuat.

PHP 8.2 MariaDB Shared Hosting cPanel WA Gateway Google Drive Backup
Riwayat Versi
V 1.0 Legacy
CodeIgniter 3 · PHP 7.4
  • MVC manual tanpa namespace
  • Session native CI3 + HMVC-style loader
  • Query Builder CI3 ($this->db->get())
  • Auth via $this->session->userdata()
  • View: $this->load->view() — header/footer manual
  • Pagination: library bawaan CI3
  • Upload: $this->upload->initialize()
  • Tidak ada Filter/Middleware resmi
  • Tidak ada CLI built-in (spark)
  • Belum ada ORM modern
⚠️ EOL — tidak ada update keamanan dari EllisLab/BCit
Migrasi penuh · 14 sesi development
V 2.0 Current
CodeIgniter 4.7 · PHP 8.2
  • Namespace PSR-4 + Autoloading modern
  • Filter/Middleware resmi (AuthFilter, AdminFilter)
  • Entity & Model ORM dengan $returnType = 'array'
  • Template Engine: extend() + section()
  • Pager terpusat dengan template Bootstrap
  • CLI: php spark untuk generate, migrate, serve
  • CSRF protection built-in di setiap form
  • ID enkripsi di URL (EncryptHelper)
  • WebP auto-convert saat upload foto
  • Google Drive Backup via OAuth 2.0
✅ Aktif dipakai — fully migrated & production ready
Perbandingan CI3 vs CI4
Aspek CI3 (V1) CI4 (V2)
PHP Support PHP 5.6 – 7.4 PHP 7.4 – 8.3 ✅
Namespace Tidak ada — global class PSR-4 penuh (App\Controllers\...)
Autoloader CI3 custom loader Composer PSR-4 / built-in CI4
Middleware/Filter Tidak ada resmi — pakai hook/MY_Controller Filter resmi (app/Filters/)
Routing Manual di routes.php tanpa group Group routes, named routes, RESTful
View Engine $this->load->view('header') manual extend() + section() template inheritance
Model MY_Model atau manual query CodeIgniter Model ORM dengan allowedFields
Query Builder $this->db->get('tabel') $this->db->table('tabel')->get() + chaining
CSRF Manual — sering dinonaktifkan Built-in, wajib di semua POST form
Auth $this->session->userdata('logged_in') Filter + session()->get('logged_in')
Upload File $this->upload->initialize([...]) $this->request->getFile() + custom helper
Pagination Library CI3 + konfigurasi verbose Terpusat di BaseController, template Bootstrap
CLI Tool Tidak ada php spark — generate, migrate, serve, cron
Error Handling CI3 error page sederhana Exception-based, environment-aware (dev/production)
Testing Tidak ada framework testing resmi PHPUnit terintegrasi via spark
Performance Baseline CI3 ~40% lebih cepat (benchmark resmi)
Security EOL — tidak ada patch Aktif diupdate + OWASP practices
Fitur Baru di V2.0
ID Enkripsi di URL
Semua ID di URL dienkripsi via EncryptHelper. Tidak ada angka mentah seperti /edit/5 — cegah IDOR attack.
Auto WebP Convert
Setiap foto yang diupload otomatis dikonversi ke format WebP via GD Library. Ukuran file lebih kecil, load halaman lebih cepat.
WhatsApp Bot Integration
Notifikasi otomatis via WA Gateway. Bot dapat menjawab pesan masuk. Konfigurasi per-user melalui menu WhatsApp Config.
Google Drive Backup
Backup database & file otomatis ke Google Drive via OAuth 2.0. Jadwal otomatis (cron), retensi configurable, log per backup.
Offline-First Checksheet
Form checksheet bisa diisi saat offline. Data disimpan lokal dan otomatis di-sync saat koneksi pulih via checksheet_offline.js.
Export PDF via dompdf
Semua laporan, checksheet, dan PM record dapat diekspor ke PDF langsung dari browser. dompdf di-bundle di app/Libraries/.
Activity Log
Setiap aksi penting (login, create, update, delete) tercatat otomatis di tabel activity_log lengkap dengan timestamp dan user.
System Settings Terpusat
Konfigurasi sistem (OTP, timeout, notifikasi, backup, GDrive) dikelola dari satu halaman tanpa perlu edit file kode.
Arsitektur Teknis
Filter (Middleware)
AuthFilter — cek session('logged_in')
AdminFilter — cek session('level') == admin
AdminFilter independen dari AuthFilter — semua route admin wajib didaftarkan ulang di group admin.
BaseController
paginate() — pagination terpusat
uploadFoto() — WebP via GD
uploadFile() — validasi + simpan
render() — shorthand view render
logActivity() / flashSuccess() / flashError()
EncryptHelper
encrypt_id(int $id) → URL-safe string
decrypt_id(string $enc) → int|false
decode_id_or_404(string $enc) → int atau abort
Semua ID di URL dienkripsi. MasterData & Maintenance pakai ID plain (admin-only).
Model Convention
$returnType = 'array' — semua model
insert() bukan create()
allowedFields wajib sesuai kolom fisik DB
WHERE IS NULL: ->where('col IS NULL', null, false)
View Template Engine
Setiap view diawali $this->extend('layouts/main')
Konten dibungkus section('content') / endSection()
Tidak ada load->view() style CI3
Array syntax: $r['id'] bukan $r->id
Pagination
Template: bootstrap_pagination (terdaftar di Config/Pager.php)
View: $pager->links('group', 'bootstrap_pagination')
3 cara: paginate(), makeLinks(), store()
Group name konsisten antara controller & view
Modul Sistem
Dashboard
Statistik, grafik, aktivitas terbaru
Report Harian
Laporan harian maintenance per user
Surat Lembur
SPL + approval + export PDF
Kas
Kas masuk/keluar, saldo real-time
Inventaris MID
Daftar dan tracking aset MID
Check Sheet
Genset, MDP, SDP, Trafo, Roof Fan, Penerangan
Maintenance PM
Annual PM Trafo, Genset; Oil PM Trafo
Master Data
Genset, MDP, SDP, Trafo, Roof Fan, Motor
User Management
CRUD user, level, status aktif, WA ID
WhatsApp Config
Konfigurasi gateway, device, API key
System Settings
OTP, notif, backup, GDrive, session
Backup Manager
Lokal + GDrive, otomatis & manual
Activity Log
Audit trail semua aksi penting
Tech Stack
CodeIgniter 4.7
Framework PHP backend
PHP 8.2
JIT, enums, fibers, readonly
MariaDB
DB relasional utama
Bootstrap 5.3
CSS framework + grid system
Bootstrap Icons
Icon library utama UI
Font Awesome 6
Icon pelengkap
dompdf
Generate PDF server-side
jQuery 3.7
DOM + AJAX offline handler
Plus Jakarta Sans
Typeface utama UI
DM Mono
Typeface monospaced
GD Library
WebP convert & resize
Google OAuth 2.0
GDrive backup auth
WA Gateway API
Notifikasi & bot responder
cPanel / NataNet
Shared hosting environment