Skip to content
All work

Fleet Management

Multi-tenant industrial telemetry with authorisation that reaches the query.

Category
Platforms
Status
Live
Platforms
Web
Stack
Next.js, PostgreSQL, Prisma, Auth.js, ECharts, Zod, Playwright, Docker

A white-label operations platform for heavy machinery: live and historical telemetry, anomaly and breakdown tracking, maintenance records, member administration, and dashboards users assemble themselves. Every data path is tenant-scoped and permission-checked in the repository layer, not merely hidden in the UI.

Fleet Management monitors heavy machinery for several customer organisations out of one deployment. The interesting problem is not the charts, it is the authorisation.

Authorisation below the UI

Every request takes the same path: middleware gate, Zod parse, session lookup, a centralised policy, then a tenant-scoped repository transaction. Machine and group access-control lists constrain the query, so a user who guesses an identifier gets nothing back rather than an empty screen rendered over data they were never entitled to fetch.

Administration that cannot lock you out

Administrators create members, set their role and status, and grant access to individual machines or machine groups. Three rules are enforced in one policy module rather than scattered through handlers: nobody may administer their own account, nobody may assign a role carrying permissions they do not themselves hold, and the last active administrator can be neither demoted nor deactivated. A new member starts with no machine grants, and the panel says so plainly rather than letting an administrator wonder why the fleet looks empty.

Operational limits stated in words

Each tenant sets warning and critical limits per telemetry metric, bounded by the range the ingestion contract accepts. The machine view then states the resulting classification in words with a non-colour mark, because a reading that matters should not depend on the reader distinguishing amber from red.

Dashboards people actually build

Users add widgets from a five-kind catalogue, configure them, reorder and resize them, and save the layout. Every drag action has a button and keyboard equivalent, because a platform used in a workshop with gloves on cannot depend on precise pointer work. Charts are bounded for large series, reduced-motion aware, and always paired with a summary and a table so the information exists outside the picture.

Try it

Sign in at fleet.altixcode.com with [email protected] and the password demo. The account is a read-only Viewer in its own tenant: it can open every machine, its telemetry, events and maintenance, but it holds no write permission and cannot change its own password, so the demonstration stays intact for the next visitor.

Running in production

It deploys from its own repository to a self-hosted Coolify instance as a multi-stage Docker image that applies committed migrations before accepting traffic, runs as an unprivileged user, and answers a database-aware readiness probe. It holds a dedicated least-privilege PostgreSQL role rather than a shared superuser, takes nightly backups, and prunes telemetry on a retention schedule. Two hundred unit tests and eight browser journeys run against a real database, including the full member lifecycle: create, grant, sign in scoped to one machine, change password, deactivate.

8 capabilities
Tenant isolation
Every query is scoped to the tenant in the repository layer, so isolation does not depend on any caller remembering to filter.
Object-level grants
Per-machine and per-group access-control lists constrain list and detail queries directly, not only the controls on screen.
Member administration
Create members and set roles and status under one policy that blocks self-administration, privilege escalation and last-administrator lockout.
Telemetry history
Current and historical readings per machine, with anomalies, breakdowns and maintenance recorded against the same timeline.
Operational thresholds
Per-metric warning and critical limits, surfaced as a worded classification with a non-colour indicator rather than colour alone.
Custom dashboards
User-assembled widget layouts that persist, with keyboard-accessible alternatives for every drag action.
Audited mutations
Every security- or data-significant change writes a validated mutation and an audit record, without storing passwords or tokens.
Localised throughout
English and German, with locale-aware number and date formatting rather than a translated string table over English formats.
6 screens

What it looks like in use.

Select any screen to view it full size. Use the arrow keys to move between screens and Escape to close.

  • The fleet list shows only machines the signed-in user holds a grant for. Status carries a dot and a word, not colour alone.
  • Machine detail pairs a bounded telemetry series with current, minimum, maximum and average, plus the limit status in words.
  • Members, their role and status, and the machines they may see. An administrator's own row is deliberately not editable.
  • Widgets from a five-kind catalogue, reordered by drag or by button, saved per person.
  • Every significant mutation is recorded with actor, action, target and time, filterable and exportable.
  • The same authorisation and the same data on a phone, with bottom navigation and 44px targets.

Tell us what is broken or what should exist.

Send the shape of the problem and any constraints you already know — budget, deadline, the stack you are stuck with. You will get a written reply from the engineer who would do the work, not a sales sequence.