Back to projects
Expressway Weigh-Station Realtime Dashboard
Government & Infrastructure

Expressway Weigh-Station Realtime Dashboard

Realtime vehicle-classification dashboard for a national expressway authority. Sockets stream live data from weigh stations into a categorized analytics view, deployed entirely inside the client's private network.

Next.jsReactTailwind CSSSocket.IONode.jsExpressMongoDBMongooseRecharts

Overview

Overview

Internal realtime dashboard for a national expressway authority. Vehicles passing through weigh stations are picked up by on-prem hardware and streamed into the dashboard over a socket connection, where they're classified by vehicle type and surfaced as live analytics for operations staff. The whole system runs on the client's private network — no public internet, no SaaS dependencies, internal IPs only.

What I built

  • Realtime socket pipeline — weigh-station data streams into the backend over WebSockets and pushes live updates to every connected dashboard client
  • Vehicle classification — incoming records are categorized by type and routed into the right aggregations as they arrive
  • Live dashboard UI — charts and breakdowns update in realtime with no manual refresh, so operations staff see what's happening at the gates as it happens
  • Historical views with filters for time range, station, and vehicle category
  • Hardened for intranet-only deployment — no external auth providers, no CDNs, no cloud storage; everything self-hosted on the client's infrastructure

Tech stack

  • Frontend: Next.js, React, Tailwind CSS
  • Realtime: Socket.IO for bidirectional event streams
  • Backend: Node.js + Express, Mongoose with MongoDB
  • Charts: Recharts for the live analytics views
  • Deployment: on-premise inside the client's private network

My role

End-to-end build of the dashboard, the socket layer, and the data pipeline that classifies and stores incoming vehicle records. Coordinated with the client's network team to fit the deploy within their internal IP constraints and without any outbound dependencies.

What I learned

Building for a network that doesn't reach the public internet changes a lot of defaults — no managed auth, no CDN-hosted assets, no third-party telemetry, and every dependency you pull in has to actually be reachable from inside the firewall. It pushed me to keep the stack lean and self-contained. The realtime side also taught me that sockets are easy to start with and hard to keep healthy; reconnect logic, backpressure, and replaying missed events for clients that were briefly offline matter more than the initial 'it works' demo.

Expressway Weigh-Station Realtime Dashboard — krittimet.dev