Full-stack engineer
Product flow, interface, API contracts, serverless deployment, and end-to-end troubleshooting.
React · Java · AWS
React, Java, AWS Lambda, API Gateway, REST APIs, and serverless infrastructure.
Delivery operations
A practical workflow shaped by first-hand familiarity with logistics and time-sensitive delivery work.
Try the current demo
Create a fictional delivery, assign a driver, move it into transit, and record a completion or exception note. Each delivery keeps a history of its status changes.
The public GitHub Pages demo stores records only in your browser. It does not connect to the Java API, share records between devices, or provide customer accounts. Use fictional data only.
Challenge
Delivery operations involve several moving parts: customers, stops, statuses, routes, and exceptions. The project needed a clear interface while keeping the backend small enough to deploy and reason about independently.
Original full-stack approach
I separated the system into a browser interface, explicit REST contracts, Java request handlers, and serverless infrastructure. That boundary kept presentation concerns out of the API and made each endpoint easier to test and troubleshoot.
Important engineering decisions
- Explicit contracts: request and response shapes were treated as a shared interface rather than incidental JSON.
- Small handlers: serverless functions stayed focused on one workflow so deployment and failures remained understandable.
- Operational feedback: the interface surfaced loading, success, empty, and error states instead of assuming every network call would work.
- Deployability: infrastructure choices were evaluated as part of the product, not as an afterthought.
Hard parts
The difficult work was at the boundaries: browser-to-API communication, cross-origin configuration, environment differences, permissions, and turning cloud errors into something actionable. I had to trace requests across those boundaries to find where they failed.
Result and lessons
The current browser demo supports driver assignments, guarded status transitions, exception recovery, and saved event history. The separate Java API implements persistent records, validation, and conflict handling. Turning this into a shared service still requires a hosted backend, authentication, company-level data isolation, backups, and operational monitoring.
DispatchTrack Lite is an independent portfolio project. It is not affiliated with DispatchTrack, Ryder, or kW Engineering.