FuelTrack
Role
Architecture, back end and front end
Type
B2B ordering and dispatch platform
Stack

Fuel ordering and dispatch platform for companies in Peru: customers order online and track the tanker on a map; operators approve against terminal stock, assign trucks and sign off deliveries. Five .NET 9 microservices that talk only through events.
ResultCovers all 40 stories in the course report, with 61 domain tests and 64 end-to-end checks in CI.
The challenge
It started as a course project with a single API that mixed users, orders, prices and dispatch, and covered part of the report. The goal for this second version was to finish every story in the report (notifications, MFA, inventory, GPS, signed receipts, PDF reports) with an architecture where a failure in one part does not take the rest down.
What I built
I split the domain into five bounded contexts (Identity, Catalog with inventory, Orders, Dispatch and Notifications), each with its own PostgreSQL database. They coordinate by choreography over RabbitMQ with MassTransit's transactional outbox and idempotent inbox: a change and its event commit together, and if the broker goes down, events wait and nothing is lost. A YARP gateway is the single entry point, and every service validates the JWT itself. The Vue 3 front end receives notifications over Server-Sent Events and includes a live monitor that animates each event between services.












Highlights
- 015 microservices, a database per service and 17 integration event types
- 02Transactional outbox and idempotent inbox, with a reproducible broker-outage test
- 03Rotating refresh tokens with reuse detection and MFA by code to place orders
- 04Stock validated in Orders and reserved by events in Catalog, without distributed transactions
- 05Live GPS tracking, signed receipts and PDF/CSV reports
- 06Swagger per service, 9 ADRs and a traceability matrix against the report
