MPMS cover
Back to Work PRODUCT

MPMS

Planned-maintenance system for a ship's engine room, with running-hours job cycles, rank-gated officer approvals, photo remarks, and spare-parts logging.

Timeline2025 to present
IndustryMarine | planned maintenance
StackLaravel 11 | React 18 + Vite | MariaDB | DigitalOcean | JWT + spatie RBAC | PWA | Web Push

The brief

A ship’s engine room runs on planned maintenance. Critical machinery like the main engine, generators, boiler, refrigeration plant, purifiers, air compressors, and the sewage plant is serviced on running-hours cycles, and every job has to be signed off by the right officer before it can close. Traditionally that lives in binders and spreadsheets the crew can’t carry into the machinery spaces. MPMS turns it into a system of record the engineers run from their phones.

What it handles

The maintenance workflow, modelled the way an engine department actually operates. Jobs move from TODO to in progress to completed and then approved or rejected, each tracking its assignee, due date and running hours. The discipline lives in the rank-gated approval chain. Permissions are a matrix of eight machinery systems × six actions (view / create / update / delete / complete / approve), and an officer only sees and acts on work at or below their rank, from Chief Engineer to Second to Third to Fourth. Completed work notifies the Chief Engineer or Admin for review, and a rejection bounces back to the assignee with the job reopened.

On approval, any job with an interval auto-reschedules itself for the next running-hours cycle, preventive maintenance that regenerates without anyone re-entering it. Each job carries instructions (authored by the Chief/Admin, with image, video or PDF attachments), a running log of remarks with photo attachments and a current-maintenance marker, and the spare parts consumed against it. A Kanban board and a colour-coded calendar (overdue, due-today, due-within-three-days) give the watch a fast read on what’s outstanding.

MPMS job detail showing running hours, maintenance history and remarks
Job detail, running hours & maintenance history
MPMS job card with instructions, due date and engineer rank
Job card, instructions, due date & rank

How it’s built

A Laravel 11 / PHP 8.2 REST API, roughly 45 endpoints, 17 controllers, 12 models, and 26 migrations, secured by JWT auth behind three layers of custom middleware (token, role, and resource-action permission), with spatie role-based access control encoding the rank/permission matrix and MailerSend for email. The front end is React 18 + Vite with Redux-Saga state.

The signature engineering is the delivery surface. MPMS is an installable PWA (display: standalone) that fires genuine web-push notifications through a VAPID service worker. An engineer gets a native-style alert on their phone the moment a job is assigned to them, completed work needs their approval, or a daily sweep flags jobs coming due, all driven by a scheduled command on the backend plus state-transition triggers. No native app, no app-store review, no second codebase. The same web app that runs the office behaves like an installed mobile app down in the machinery spaces.

MPMS native-style push notification on a phone, your scheduled maintenance is due soon
Native-style web push, a scheduled job straight to the engineer's phone

Why it matters

Designed, built and delivered in a single focused quarter, then handed to client turnover on schedule. It’s a tight demonstration of the standard we hold for operational software. A permission model that encodes a real chain of command instead of trusting an honor system, preventive maintenance that regenerates itself off running hours, and a mobile-first web app that gives crews native-grade push notifications without the cost, lock-in, and duplicated effort of building for the app stores.

Tell us what’s on your mind