Full-stack application
Police Case Monitoring (SIM-LP)
A cross-unit police report monitoring panel with structured case data, audit trails, dashboards, notifications, and PDF/Excel reporting.
Problem and requirements
Police report handling involves cases, officers, victims, suspects, witnesses, follow-up actions, units, and report documents. Scattered data makes case status and cross-unit activity harder to review in one operational report.
SIM-LP was built as an internal panel to centralise case handling and monitoring across work units. The dashboard, data resources, audit trail, notifications, and reporting exports live in one Laravel application built with Filament.
Application implementation
The case form combines report number and date, case type, legal article or offence, suspect-victim relationship, investigation status, criminal process, chronology, resolution, officers, victims, suspects, witnesses, and follow-up actions. Separate relationships preserve structure when one case contains multiple people and several chronological follow-ups.
The officer resource manages name, service number, rank, phone number, and unit, including import and export. Unit, case-type, and resolution master data can be ordered and activated or deactivated, affecting forms and reports.
Report numbers are trimmed and checked for case-insensitive uniqueness across units. Admin access is restricted through a combination of the global SatkerScope and policies, while supervisors receive read access according to their role. Super admins manage all application data and master records.
Dashboard and reporting
The dashboard shows total cases, investigation status distribution, officer count, case trends, case-type distribution, unit performance, summary tables, and latest cases. The case panel provides search, filters, detail views, PDF export, and Excel export.
Exports use the already filtered table query so reports follow search, period, and user access boundaries. Report templates configure target units, scope, title, letterhead, and signatories. Units without cases remain in the output with NIHIL, keeping the report complete across all expected units.
Audit and operations
Observers record create, update, and delete events for cases, follow-ups, officers, victims, suspects, and witnesses. The audit resource stores actor, unit, module, action, summary, old and new changes, and metadata for review.
Database notifications are sent to super admins, supervisors, and the relevant unit admin, with the actor excluded from recipients. Password reset, session authentication, CSRF, policies, and Filament roles provide the main access controls. Police report attachments accept configured document and image types, but comprehensive security scanning is not claimed.
The application runs as a Laravel 12 and Filament 3 monolith with Eloquent, SQLite or configured MySQL, Nginx, PHP-FPM, Docker Compose, and a database queue worker. Feature and Unit tests cover case search, report-number uniqueness, summary synchronisation, notifications, audit coverage, report configuration, and export completeness. Live URL and deployment status have not been verified.



