Case · field operations

Who is on board right now

Technicians who board vessels to do maintenance. They clock in with their phone's location, work on an order and clock out. From the office, that was the question that had to be answered in one second: who is on board, on which vessel and since when.

The detail that makes it a product

The map does not plot every attendance record: only the ones with a clock-in and no clock-out yet. That is, it does not tell you what happened, it tells you what is happening. It looks like a detail, and it is the decision that separates a dashboard people watch from a report that gets filed away.

Dashboard with a map of the Peruvian coast and, below it, the list of technicians on board with their vessel and their clock-in time
The dashboard: the map with whoever is on board at this moment and, below it, the table with their vessel, the company and the clock-in time. Every row has a button to center the map on that position.
Man-hours report per technician and vessel
Man-hours per technician and per vessel. This is the number that justifies the system: it comes from the clock-in and clock-out records, not from someone typing them in by hand.
List of work orders with their status
The work orders and their status. Work in the field is closed against an order; otherwise the hours do not tie back to anything.

Permissions per resource, because not everyone sees the same thing

A technician, a supervisor and whoever does the invoicing need different screens of the same system. Permissions are granted per resource and grouped into roles, and the frontend router honors that same list: if you do not have the permission, the screen does not exist for you.

How it is built

A Node API with Express and Prisma on MySQL, a React frontend built with Vite, and the map with Leaflet over open tiles. All of it in containers.

What you learn taking a system out of the network it was born in

These screenshots come from running the whole thing outside the client's infrastructure, with made-up data. What turned up along the way:

Do you have people working where the office does not reach?

Work reports, clock-in with location, orders closed out in the field and a number you can trust at the end of the month. You can have that without chasing anyone on WhatsApp.

Let's talk →