All projects

Asset inventory of the national highway network, on the web and on Android devices in the field.

ADS inventory screenshot
Client
Autoroutes du Sénégal
Key result
Under a minute per asset

Context

Bridges, culverts, toll stations and equipment along the highway were inventoried on paper, so the asset register was always late and hard to audit.

What I built

A web platform and an Android app sharing one Nx monorepo. Each asset gets a barcode and a QR code, is located by site and kilometre point, and carries its full movement history. Field teams scan or create assets on site and print labels over Bluetooth straight from the app.

Result

Each asset is now inventoried in under a minute, and the register reflects the field in real time.

Architecture

  1. Offline first

    Field data is kept in IndexedDB and replayed to the API when the network comes back, because many highway sites have no signal.

  2. A thin Android shell for one reason

    Capacitor wraps the same web app only to reach Bluetooth Classic label printers, which Web Bluetooth cannot drive.

  3. Labels composed on the server

    The API builds the TSPL printer code from a template stored in the database, so the label layout changes without republishing the app.

  4. Roles, then ownership

    A roles guard decides what each profile may do on the API, and an ownership rule on top means a field agent only edits the records they created, so every entry stays traceable.

  5. Containerised releases

    The API and the web app ship as Docker images through a registry and run behind Nginx, with asset photos served from object storage and a CDN.

Stack

  • Angular 20
  • NestJS 11
  • PostgreSQL
  • Capacitor
  • Nx
  • IndexedDB
  • Docker
  • Nginx
  • DigitalOcean Spaces