What inspired me I worked a four-month Purolator contract and saw how delivery vans really get packed. Boxes went in wherever there was space. Drivers spent a long time hunting for the next package at each stop. Heavy boxes sat on fragile ones. Packages for early stops got buried behind later ones. It felt messy and slow.
That gave me the idea for PackFlow. I wanted a simple app that tells you where each package should go in the van, then helps the driver find it fast.
What PackFlow does PackFlow helps loaders and drivers from start to finish:
Scan packages with a phone camera, or load a demo route in Fredericton. Make a loading plan that gives every package a zone, shelf, and spot in the van. Show the van layout so you can see where things go, not just read a list. Help the driver deliver with a dashboard for the current stop, the next stops, and how many packages are left. Track the route with analytics for scans, plans, finds, and deliveries. The rules are easy:
Early stops go near the back door (zones A → D). Heavy packages go on the bottom shelf. Fragile packages go on the top shelf. Packages for the same stop stay near each other. How I built it I built PackFlow as a website with React, TypeScript, and Vite, so it works on phones and tablets. The app has scanning, the loading plan, the van view, the driver dashboard, the package finder, printable barcode labels, and a route analytics page.
Supabase stores the live package and stop data. If Supabase is not set up, the app still runs with local demo data. Snowflake stores analytics events so we can see how a route went. That way, day-to-day delivery data and reporting stay separate.
What I learned Delivery apps need big buttons and simple screens. Drivers do not have time for clutter. A loading plan is not enough. Drivers need a clear van map. Keeping operations (Supabase) and analytics (Snowflake) separate makes the demo stronger. If one side fails, the other can still work. Real bugs teach a lot: wrong package counts, a finished route that would not reset, and Snowflake login issues. Challenges Making “Load Demo Packages” fully reset a finished route so the dashboard does not stay on “Route Complete.” Counting remaining and delivered packages from real package records, not from stop counts. Connecting both Supabase and Snowflake without breaking the app. Fixing the van drawing so Zone D packages stayed in the cargo area and did not look like they were in the driver cab. Getting camera barcode scanning to work well on a real phone. PackFlow is still a prototype, but it comes from something I saw at work every day: a delivery only moves as fast as a driver can find the next box. PackFlow’s goal is simple — scan it, place it, find it, deliver it.
Built With
- html5
- lucidereact
- postgresql
- reactrouter
- rls
- snowflake
- supabase
- typescript
- vite