← ALL WORK
CASE STUDY · BASF · PUBLIC · MASAR.BASF.COM

Masar

BASF's public shipment tracking portal — secure customer accounts, bulk shipment import, history and search, and an admin panel with its own email-template engine.

CLIENT
ROLE
Sole developer, end to end
STACK
NestJS · Prisma · PostgreSQL · React
HOSTING
Self-managed AWS EC2
THE PROBLEM

BASF's shipment tracking lived on the intranet. Employees could see everything; the customers actually waiting for the shipments could see nothing — every status check meant an email or a phone call to a BASF contact. Masar closes that gap: a secure public portal where customers track their own shipments, on their own accounts, without touching BASF's network.

SCREENSHOT SLOT — SHIPMENT DASHBOARD (CLIENT-SAFE CAPTURE PENDING)
WHAT IT DOES

Customer self-service tracking

Customers log in to their own view of shipment status, history, search, and documents. Two roles — admin and customer — enforced by route guards, so each side sees exactly what it should.

Secure login without the friction

JWT sessions in signed HTTP-only cookies, OTP email verification for account access — security that holds up without making a logistics manager fight a password policy.

Bulk data in, bulk data out

Shipments and users arrive by CSV import and leave by CSV export — because that's how logistics teams actually work. Status-change emails go out asynchronously through a BullMQ/Redis job queue.

An admin panel that runs itself

Customer and company management, enquiry handling, and an email-template engine — BASF's team edits the emails customers receive without asking a developer.

Hardened for the public internet

Rate-limiting, CSP and Helmet security headers, centralized error handling, and scheduled automated backups — the unglamorous parts that keep a public portal boring, in the good way.

UNDER THE HOOD

NestJS + Prisma on PostgreSQL: modules for shipments (import/export, history, search, summary analytics), customers and companies, users, enquiries, and settings. BullMQ + Redis handle background email jobs; a scheduled module takes the backups.

React + TypeScript frontend on TanStack Router and Query, with shadcn-style components. Runs on a dedicated EC2 instance provisioned solo over SSH — Nginx with HTTP/2, PostgreSQL, and PgBouncer on the same VM.

Your customers asking you for updates?

A portal like this is exactly the shape of problem to describe in two sentences.

TELL ME ABOUT IT