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.

- 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.