Skip to content
Madsoft
HomeWorkCapabilitiesInsightsStudioPartnersContact
← All work
04Government2026

Border Weighbridge System

Customs administration · Central Africa

Weighbridge, declaration and revenue management for one of the region's busiest commercial border crossings, delivered bilingual.

LIMITBILINGUALCUSTOMS
The system

Truck weighing, customs declarations, appointments, exit control, finance and compliance reporting, with full role and permission management. Live monitoring runs over websockets and high-volume tables are virtualised for peak crossing days. Shipped in French and English from the first release, because half the officers work in each.

Outcomes

  • Bilingual across every operator surface
  • Live monitoring over websockets
  • Virtualised tables built for peak-volume days

Stack

  • React
  • TypeScript
  • Vite
  • Chakra UI
  • i18next
  • Socket.IO
  • Zustand
  • Docker

Engagement

Client named under NDA. Several engagements are active public-sector contracts, so we describe the mechanism rather than the customer.

Source, references and a walkthrough can be arranged for serious evaluation.

01The situation

A commercial crossing that clears thousands of trucks on a busy day, where the queue is measured in kilometres and every minute of delay is carried by a haulier. Weighing, declaration, payment and exit were tracked separately, so nobody could say where a given truck actually was without walking outside to look.

02The hard part

Two working languages across one officer corps, peak days an order of magnitude heavier than the average, and a hard requirement that the system keep functioning when the link to the capital does not.

03Decisions
  1. 01

    Bilingual from the first commit

    French and English were in the data model and the component layer from the start, not retrofitted. Adding a language after the fact means auditing every string in the product; doing it first costs a fraction and makes the second language a configuration rather than a project.

  2. 02

    Designed for the worst day, not the average

    Tables are virtualised and queries paginated on the assumption of a peak-volume backlog. A system that is comfortable at median load and collapses at peak has failed precisely when it mattered — the queue only exists on the busy day.

  3. 03

    Live state over refresh buttons

    Websocket updates mean the yard view reflects reality rather than whenever someone last reloaded. When four officers act on the same consignment, stale state is not a cosmetic problem; it is two people making contradictory decisions.

The technical dossier for this engagement

This page describes the shape of the work. The dossier describes how it was actually built — and goes to a named person at a named institution rather than onto a public URL.

  • System architecture, including the integration boundaries and why they were drawn there
  • The data model for the records the system is accountable for
  • Security posture: authentication, authorisation, audit trail and key handling
  • Deployment topology, failover behaviour and what happens during an outage
  • The measured before-and-after, where the client has cleared it for release
  • Named CVs for the engineers who did the work

Sent under a mutual NDA. Client names and locations are redacted unless that client has given written consent, which some have and some have not. Prepared individually — expect it within two working days, not instantly.

Next project

Supply Chain Traceability Ledger

Start here

Bring us the problem
nobody has solved.

A 30-minute technical briefing. We will tell you what we would build, roughly what it costs, and honestly whether we are the right people for it.