Skip to content
Komsan Nipharat

Case study

Tago Express TMS platform

Transport and container-yard management: gate-in/out, surveys, EIR, yard plans, orders, driver assignment, invoicing, and receipts. One platform serves several white-label tenants.

FIG.1Logistics
Role
Core backend contributor (#2 of the API) and co-lead of the Angular back office
Stack
NestJSAngularPostgreSQLMongoDBRedisGeminiGotenbergDocker
Result
API image 2.6 GB → 1.17 GB (−55%). Back-office image 79 MB → 29 MB. Four Angular major upgrades, 17 → 22.

Problem

Trucking companies and container yards ran gate, survey, and billing work on paper and spreadsheets. Each tenant needed its own branding and rules without forking the product.

What I owned

Core backend contributor (#2 of the API) and co-lead of the Angular back office

What I built

  • Built the founding yard modules: Gate-In, Gate-Out, Survey-In/Out, Inventory, Machine, Queue, EIR, and Yard.
  • Built the shared audit log across ~18 master-data modules spanning Postgres and Mongo.
  • Built the white-label platform, shared print/PDF shell, and reusable data-table and form-validation libraries.
  • Delivered Receipt Issuer, Aging Report, Job Monitoring, Revenue Report, and the Assign Driver v2 redesign.
  • Integrated Gemini vision for container-damage detection, SCB QR payment inquiry, and OSRM routing.

System shape

NestJS API over PostgreSQL and MongoDB, with Redis, S3, and Socket.io. Angular back office white-labeled per tenant through build presets and a feature-flag registry. API tenants live on git branches; menus are database-driven.

What changed

Runs in production for Tago Express and white-label tenants. A run-number generator with race-condition self-healing closed a recurring duplicate-invoice incident.

Outcome

API image 2.6 GB → 1.17 GB (−55%). Back-office image 79 MB → 29 MB. Four Angular major upgrades, 17 → 22.