case · bespoke development

Staroil's whole operation, in a single system.

The system Staroil runs its operation on: customers and contracts, consumption, approvals, people and time clocking. One web application, two APIs and an app on Google Play and the App Store, all built by Nexus.

client
Staroil
functional areas
24
status
in production
8:57
AR
Good morning, Ana
08:57
Last entry · yesterday, 15:02
Clock in
Location only on tap
Today's shift
07:00 – 15:00
Station 07
Clock inScheduleAbsences
24
functional areas, from customers to payroll
3
back-end services: PHP, Java and Python
2
clock-in modes: shared tablet and personal phone
4
years of working-time records kept, as the law requires
// the brief

An operation scattered across spreadsheets.

Staroil runs fuel stations and bulk fuel depots. Before Pulse, every area kept its own spreadsheet and its own mail folder. The brief was not «build an application»: it was to bring together in one place what was already being done, without pausing the business along the way.

01
The data did not match across areas. A customer's contract lived in one place, their consumption in another and their risk exposure in somebody's head.
02
Approvals ran on email. A discount or a purchase was authorised in a thread nobody could find afterwards.
03
Time clocking was on paper. With the legal duty to keep four years of working-time records for the whole workforce.
// what it covers

Twenty-four areas, one system.

Each area has its own functional documentation, data model and role-based permissions. This is what sits inside, grouped:

Sales
Customers, leads and the funnel that joins them. Who each account is and where it stands.
Contracts
Station and bulk-depot contracts, with their terms, discounts and associated risk.
Operations
Stations, consumption, replenishment, forecourt tablets and the customer kiosk.
Purchasing and stock
Suppliers, orders, products and inventory, with their events and alerts.
People
Users, roles, employment records, payroll and contractors. And time clocking for the whole workforce.
Control
Approvals, change audit trail, alerts, internal support and the management dashboard.
// the app

Clock in within ten seconds, from a phone or from the site tablet.

There is a single app, published on Google Play and the App Store, and it behaves in two different ways depending on the code the device is enrolled with. A phone never starts up as a tablet, even if it receives a site code.

Station 07
Who's clocking in?
Tap your name and look at the camera.
ARAna R.BCBruno C.CMCarla M.DPDiego P.ESElena S.FTFran T.GLGema L.HVHugo V.
Photo on clock-in
Clock in
shared device
Site tablet

Anyone in the company clocks in by picking themselves from a list. The front camera takes a photo on every entry, because the tablet asks for no password: that is what makes it possible to verify who clocked in.

personal device
Own phone

Only its owner clocks in, with email and password. Location is read solely in the second the «Clock in» button is pressed — never in the background. It also carries the schedule, absences and reminders.

How the app handles data is set out in its privacy policy: location only when clocking in, no facial recognition, no advertising or analytics, and all data in the European Union.

// under the hood

Polyglot on purpose.

Each piece is written in the language that suits it, and all of them are orchestrated by the same scripts. This is not eclecticism: it is what made it possible to replace parts without rebuilding the whole.

Browser
HTTPS
Web core
PHP · nginx
pulse-api
Java · Spring Boot
Mobile app
React Native · Expo
BFF
Python · FastAPI
io/v1
Python · Flask
DatabaseMySQL · pulse
  • 01PHP core on nginx and MySQL, with versioned migrations and a change audit trail.
  • 02Java API on Spring Boot for the processes that need strong typing and concurrency.
  • 03Python API on Flask for imports and alerts, plus a FastAPI BFF serving the mobile app.
  • 04React Native and Expo app, with clock-in reminders scheduled on the phone itself: there are no push notifications and no record of which devices have it installed.

Does your operation live in spreadsheets?

Pulse is bespoke and is not sold as a product, but what it proves does repeat: bringing scattered areas into a system people actually use.

Talk to an engineer