← projects

TransitSoft Services — customs transit software

Managing air, sea and land transit operations

NestJSPrismaPostgreSQLSocket.IOBullMQExpoTurborepo
TransitSoft Services — customs transit software — screenshot 1
TransitSoft Services — customs transit software — screenshot 2
TransitSoft Services — customs transit software — screenshot 3
TransitSoft Services — customs transit software — screenshot 4

The problem

Freight forwarding is paperwork and waiting. A parcel comes in through the airport or the port, goes through an agency, a warehouse, sometimes another agency inland, then reaches the customer. At every step: a document, an invoice, a debt running, a storage penalty. TransitSoft digitises the whole chain — air, sea and land — across multiple agencies.

The real challenge: consistency between agencies

Not just a back office. An unpacked parcel has to be redistributed to the right destination agency, invoicing follows each agency's currency and configuration, and debts flip automatically to OVERDUE once the due date passes.

Architecture — Turborepo monorepo

  • apps/api — NestJS + Prisma (PostgreSQL) + Socket.IO + BullMQ
  • apps/web — agency operations · apps/ops-admin — configuration
  • apps/web-desktop (workstation) · apps/web-client (customer portal)
  • apps/mobile + apps/tablet (field) · apps/orchestrator (control plane)

Real time & jobs

Socket.IO for notifications and the built-in chat/support. BullMQ (Redis) for everything that runs on its own: daily storage penalty calculation, debt due-date checks, automatic flagging of unpaid invoices. PDF generation (invoices, waybills) and a QR code per parcel.

A constraint from the field

Agents are not always connected. Location data (country → region → city) ships as static JSON on the client: the forms keep working when the mobile network drops inside a warehouse.

Stack

NestJS · Prisma · PostgreSQL · Socket.IO · BullMQ · Expo · Turborepo


Full write-up: Digitising customs transit: lessons from TransitSoft.