Full-stack application

E-MAS-KAPOR

A personal equipment management system connecting personnel data, unit needs, budgeting, warehouse operations, distribution, and reporting.

Request demo accessLogin access is available on request.
Year2026
Services
  • Application engineering
  • Data workflow design
  • Deployment and CI/CD
Technologies
  • Laravel
  • PHP
  • Blade
  • MariaDB
  • Tailwind CSS
  • Docker
  • Nginx
  • PHPUnit

Problem and requirements

Personal equipment management involves personnel across many units, different size variants, budget planning, warehouse stock, distribution, and formal documents. These data points need a consistent workflow so unit needs can be collected, reviewed, calculated, and passed to warehouse operations.

E-MAS-KAPOR was built for Biro Logistik Polda NTB as a central system for registered personnel and operators. Its workflow connects master data, personnel, sizes, unit needs, budgets, warehouse operations, distribution, reporting, and audit records in one Laravel application.

Reconstruction context

This was not a greenfield build. E-MAS-KAPOR reconstructed and extended an existing system while preserving workflows required by its users. Its main challenges were inconsistent operational data, Excel imports that needed inspection and correction, formal reports that required consistent output, and access rules that had to follow role and unit scope.

Improvements covered Excel import validation and previews, rank and unit mapping, dashboard synchronisation, duplicate NRP prevention, long numeric values from Excel, and consistent Excel/PDF exports. The system also moved from SQLite to MariaDB to support more than 11,000 users. The result went beyond copying old features: clearer workflows, stronger data integrity, and broader support for budgeting, warehouse operations, distribution, and annual archives.

Application implementation

The system divides access across five roles: superadmin, admin, warehouse admin, unit admin, and personnel. Personnel sign in with their NRP/NIP to provide personal sizes, while operators manage data according to their central, unit, or warehouse responsibilities.

Personnel and HR data imports use an upload, parse, preview, correction, confirmation, and error-reporting flow. Mapping source unit names to internal units is handled by a resolver and manageable aliases. Large imports can run through the database queue so parsing does not depend on a single browser request.

Size logic is centralised in KaporRequirementService. The system maps items to size categories such as shirt, trousers, hat, jacket, belt, and shoes, normalises incoming values, and builds warnings for recipients without valid size data.

Needs, budgeting, and distribution

Unit administrators can create, edit, submit, print, and export needs submissions. Central administrators assemble budget packages, select items and recipients by unit, personnel type, gender, rank, class, or notes, then calculate required quantities and totals.

The warehouse module manages stock by item and size, stock imports, outflows, history, cancellations, soft deletes, signatories, and SPPM documents. Reports are available as Excel, PDF, and Word files for tabular data, formal summaries, and operational documents.

Security and operations

Laravel session authentication separates administrative and personnel login identifiers, regenerates sessions after login, applies CSRF protection, checks active accounts, and rate-limits login attempts. Roles and permissions restrict routes, while unit context is applied to unit administrator workflows. Superadmins can also lock write operations through a system lock and manage budget periods.

Multi-record changes use transactions. Allocations store name and item snapshots so historical data remains readable when master data changes. Annual archive creates final Excel/PDF archives during period transitions. Audit logs record login activity, users, personnel, needs, budgets, settings, reviews, and selected warehouse operations.

The application runs as a server-rendered Laravel monolith with Blade, Vite, Tailwind CSS, MariaDB, Nginx, PHP-FPM, Docker Compose, and a database queue worker. The repository contains Feature and Unit tests for authentication, role access, import mapping, warehouse access, budgeting, archives, statistics, and exports. A live URL is listed in the repository sitemap, but its current availability is not presented as an operational metric.