All work
FPIndustrial IoT · Predictive MaintenanceIndustrial IoTCase study

Foxtroit Predictive — Maintenance & Asset Intelligence

Moves plant maintenance from calendar-driven to condition-driven by scoring assets before they fail.

An industrial predictive-maintenance platform: a Go backend with TimescaleDB telemetry, a Python scoring service that flags assets before they fail, an admin web app for reliability teams and a Flutter field app for technicians on the shop floor.

Source private
Industry
Heavy Industry / Manufacturing
Role
Architect & Full-Stack Engineer
Type
SaaS Platform
Year
2026
Status
In progress
TimescaleDB
Telemetry
Admin + Field app
Surfaces
Python analytics
Scoring

Overview

Foxtroit Predictive Management turns asset telemetry into maintenance decisions. Sensor data lands in TimescaleDB through a Go API, a Python FastAPI analytics service scores assets for failure risk, and maintenance managers, planners and reliability engineers work the resulting queue from an admin web application.

The technician side is deliberately separate. A Flutter field app covers the shop floor, where the job is executing work orders rather than analysing trends — a different interface for a different task on the same data.

The repository is organized so nothing needs a full local toolchain: the frontend needs Node only, the backend needs Docker only, and every Go command runs in a container. A shared contracts package holds the OpenAPI spec, the domain model and a demo dataset.

The problem

Plant maintenance runs on fixed schedules and breakdown response: assets are serviced whether or not they need it, and the ones that fail early take production with them. The telemetry to predict failures exists but lands nowhere useful.

The solution

A platform that ingests asset telemetry into a time-series store, scores failure risk in a dedicated analytics service, and turns the output into work orders — worked by planners in an admin app and executed by technicians in a field app.

Technical stack

Frontend

  • Next.js 16
  • Flutter

Backend

  • Python
  • FastAPI

Data

  • TimescaleDB
  • PostgreSQL

Infrastructure

  • Docker

Also used

  • Go 1.26
  • MQTT
  • OpenAPI

System architecture

  1. 1

    Go 1.26 REST API handling auth, RBAC and audit, with every Go command running containerized

  2. 2

    TimescaleDB-backed telemetry storage over PostgreSQL

  3. 3

    Python FastAPI analytics service computing predictive failure scores

  4. 4

    Next.js 16 admin application for maintenance managers, planners and reliability teams

  5. 5

    Flutter technician field application for Android and iOS

  6. 6

    Shared contracts package holding the OpenAPI spec, domain model and demo dataset

  7. 7

    MQTT configuration and database migrations under an infra directory

Engineering challenges

Challenge

Maintenance planners and shop-floor technicians need the same data for completely different tasks — analysis versus execution — and one interface serving both serves neither.

How I solved it

Split the surfaces deliberately: an admin web application built around queues, trends and planning, and a Flutter field app built around executing a single work order, both reading one API contract.

Challenge

A polyglot stack — Go, Python, Node and Flutter — normally means every contributor installs four toolchains before anything runs.

How I solved it

Containerized the Go toolchain entirely and kept the boundaries clean: the frontend needs Node only, the backend needs Docker only, and neither requires the other unless they are being run together.

Core features

  • Telemetry ingestion into TimescaleDB hypertables
  • Python analytics service scoring assets for failure risk
  • Admin web application for maintenance managers and planners
  • Flutter technician field application for Android and iOS
  • Work-order lifecycle from prediction to completion
  • RBAC with an audit trail
  • MQTT configuration for device feeds
  • Shared OpenAPI contract and domain model package
  • Seeded demo dataset for evaluation
  • Containerized Go toolchain — no local Go install required

Results & impact

Maintenance moves from calendar-driven and reactive to condition-driven: telemetry is scored continuously, at-risk assets surface as work orders before failure, and technicians execute against them from the shop floor.

What I learned

  • Separating the planning surface from the execution surface produces two good interfaces instead of one compromised one.
  • Containerizing the least-common toolchain removes the biggest barrier to a polyglot repository being runnable.

Related work

All projects
Next step

Have a system like this to build?

I take projects from the first conversation through to production, and stay on for the support that follows.