03 // PROJECTS / LOST & FOUND INFORMATION SYSTEM
SECURITY-HARDENED WEB APPLICATION

Lost & Found Information System

Institutional Item Discovery, Self-Reporting & State Machine Moderation Portal

Portal web modern, responsif, dan aman yang dirancang untuk mengelola publikasi barang temuan, pelaporan mandiri publik dengan anti-spam, alur moderasi klaim berjenjang berbasis state machine, serta pengujian otomatis penuh menggunakan PHPUnit.

Role:Backend & System Architect
Framework:CodeIgniter 4.7.4 (PHP 8.2+)
Test Suite:51 Passing (211 Assertions)
Status: Completed & Hardened
Public Interface
Public Discovery Portal
PREVIEW // Portal Utama Publik — Filter Kategori, Instant Search & Status Goods GridCodeIgniter 4.7.4
CORE CONTRIBUTION // MY ROLE

Backend & System Architect

Bertanggung jawab penuh atas perancangan arsitektur backend, alur moderasi state machine, sistem keamanan bertingkat, serta penulisan automated test suite menggunakan PHPUnit:

Merancang alur verifikasi state machine untuk siklus hidup laporan barang (pending -> published / rejected -> claimed)
Mengimplementasikan arsitektur proteksi multi-lapis: Honeypot anti-spam, IP Throttling rate limiting, CSRF protection, dan XSS escaping
Membangun validasi upload file ketat berbasis MIME Type dan pemeriksaan header file binary (Magic Bytes validation) untuk mencegah RCE/malware
Menulis 51 automated unit & integration test dengan 211 assertions menggunakan PHPUnit 10.5 mencakup Auth, RBAC, CRUD, Security, File Upload, & Rate Limiting
[ PROJECT SCALE METRICS ]
51
Automated Tests
PHPUnit 10.5 Suite
211
Assertions
Strict QA Coverage
4
State Machine States
Pending, Published, Rejected, Claimed
100%
Magic Bytes Checks
Binary File Integrity
2
RBAC Roles
Admin & Staff Scope
01 // THE CHALLENGE & CONTEXT

The Problem

Pengelolaan barang hilang dan temuan di institusi sering kali dilakukan secara manual atau melalui grup percakapan informal. Hal ini memicu beberapa masalah keamanan dan operasional:

1. Spam Bot & Rate Limit Exhaustion
Form pelaporan publik tanpa anti-spam mudah diserang bot untuk membanjiri database dengan entri palsu.
2. Risik Malware Upload (RCE)
Validasi file hanya berdasarkan ekstensi (misal .jpg) mudah dipalsukan untuk mengunggah web shell berisiko RCE.
3. Race Condition Klaim Barang
Tanpa alur status terstruktur, barang yang sedang diverifikasi klaimnya bisa secara tidak sengaja terpublikasi ulang.
4. Tidak Ada Akses Berjenjang (RBAC)
Staf verifikator di lapangan sering kali membutuhkan akses moderasi tanpa perlu diberi hak administratif penuh.
02 // TECHNICAL EXECUTION & PROBLEM-SOLVING

The Approach & Security Architecture

Tiga solusi utama yang diimplementasikan secara arsitektural untuk menjamin keamanan dan keandalan sistem.

EXECUTION 01

Honeypot & IP Throttling

Form laporan publik dilengkapi field tersembunyi (Honeypot) untuk menjebak bot otomatis, dipadukan dengan Throttling Filter CodeIgniter 4 berbasis IP untuk membatasi frekuensi submit request.

⚡ Impact: 100% menangkis bot spam otomatis tanpa mengganggu pengalaman pengguna manusia.
EXECUTION 02

Magic Bytes File Validation

Pengunggahan foto bukti menggunakan pemeriksaan ganda: validasi MIME type dan inspeksi Magic Bytes (header binary file asli) untuk menggagalkan ekstensi file yang dipalukan.

⚡ Impact: Memblokir ancaman Remote Code Execution (RCE) dan manipulasi jenis berkas di server.
EXECUTION 03

State Machine Workflow

Mengontrol alur moderasi dengan siklus eksplisit: pending → published / rejected → claimed. Transisi status yang tak sah akan otomatis ditolak oleh controller validator.

⚡ Impact: Mencegah race condition dan memastikan setiap klaim barang melewati audit staf.
03 // END-TO-END SECURITY & DATA FLOW

System Architecture Diagram

Alur pemrosesan request dari pelaporan publik hingga verifikasi akhir klaim barang.

Public / Staff Client
HTML5 & Bootstrap 5 UI
HTTPS POST→
Security Filter Layer
CSRF + Honeypot + IP Throttle
Magic Bytes Validator
Strict MIME & Binary Inspection
State Verification→
State Machine Controller
Pending / Published / Claimed
SQLite / MySQL DB
Relational & FK Constraint Schema
Automated QA→
PHPUnit Test Suite
51 Tests / 211 Assertions
04 // SYSTEM CAPABILITIES

Key Features

6 fitur utama yang dirancang untuk efisiensi operasional dan perlindungan keamanan maksimal.

1. Public Item Discovery

Grid barang temuan interaktif dengan filter kategori instan dan pencarian berbasis kata kunci.

2. Public Self-Reporting

Formulir pelaporan mandiri publik yang dilindungi Honeypot anti-spam dan IP Throttling.

3. State Machine Workflow

Siklus verifikasi terstruktur dari status pending, published, rejected, hingga claimed.

4. Role-Based Access (RBAC)

Pemisahan wewenang hirarkis antara Administrator (Full Access) dan Staff (Moderator).

5. Security-Hardened Architecture

Perlindungan CSRF, XSS escaping, Magic Bytes file validation, dan regex domain whitelist.

6. Automated Test Suite

51 automated unit & integration tests dengan 211 assertions mencakup Auth, Security, CRUD, & File Upload.

05 // SYSTEM INFRASTRUCTURE

Tech Stack

Teknologi modern dan standar pengujian yang digunakan dalam pembangunan proyek.

PHP 8.2+
  • • Strict Type Hinting & OOP
  • • PSR-12 Code Formatting
  • • Intervention Image 3.11
CodeIgniter 4.7.4
  • • MVC Framework Architecture
  • • Spark CLI Code Generators
  • • Middleware & Request Filters
SQLite3 / MySQL 8.0
  • • Relational Database Schema
  • • Foreign Key Integrity
  • • Dummy Data Seeders
PHPUnit 10.5
  • • 51 Automated Test Specs
  • • 211 Assertions Coverage
  • • Auth, RBAC & Security QA
Bootstrap 5.3 & CSS3
  • • Glassmorphism Design Tokens
  • • Responsive UI Layouts
  • • Bootstrap Icons Pack
Security Engine
  • • Honeypot + IP Throttling
  • • Magic Bytes Binary Inspection
  • • CSRF & XSS Escaping Filters
06 // LOCAL DEVELOPMENT

Local Installation & Setup Guide

Langkah-langkah untuk mengoperasikan proyek di lingkungan lokal.

1. Clone Repository
git clone https://github.com/masarifbagus/LostnFound.git
cd LostnFound
2. Install Dependencies
composer install
3. Setup Environment File
cp env .env
4. Run Database Migrations
php spark migrate
5. Seed Realistic Dummy Data
php spark db:seed DummyDataSeeder
6. Start Local Server
php spark serve
# Access app at: http://localhost:8080
Default Login Credentials
1. Administrator Account
Email: admin@lostfound.local
Password: admin123
2. Staff Moderator Account
Email: budi.santoso@lostfound.local
Password: password123
07 // TECHNICAL SPECIFICATIONS

Technical Documentation Index

Dokumentasi rancangan teknis dan arsitektur sistem tersedia lengkap di folder docs/ repositori GitHub.

AI Collaboration Disclaimer

Proyek ini dibangun melalui kolaborasi tingkat lanjut bersama AI Coding Agent (Antigravity) sebagai mitra pair programming. Seluruh arsitektur sistem, keputusan desain keamanan, skema database, penulisan test suite, serta pengujian manual dan code review dilakukan secara ketat di bawah supervisi langsung oleh software engineer untuk memastikan standar kualitas industri, keamanan, dan keandalan kode.

Licensed under the MIT LicenseMIT LICENSE