At FuelBuddy, I was a core engineer on the Franchise Application, which franchise operators use to manage regional hubs, inventory, and delivery fleets.
What I built
- Live truck tracking: Built an interactive Google Maps module displaying fleet locations on a polling interval, giving operators continuous visibility into truck movements and dispatch statuses.
- GraphQL APIs and caching: Built data APIs using Hasura GraphQL engine through urql, with a normalized client-side cache and automatic token refresh on expiry.
- Workflow simplification: Redesigned multi-step operational tasks, inventory reconciliation and driver assignment among them, into streamlined interfaces that reduced operational errors.
Why it mattered
Fleet tracking made dispatch logistics more predictable and reduced truck idle time. Streamlined assignment and inventory workflows reduced operational errors across franchise hubs.
What "Live" Actually Means Here
The truck map updates on a polling interval, not a GraphQL subscription, even though the same client is wired up for subscriptions elsewhere in the app (graphql-ws is configured and used for order-status updates, just not for this particular map). That was a deliberate server-cost tradeoff, not an oversight: a subscription holds a persistent connection open on the server for as long as the client has it open, and a map screen left open across every dispatcher's shift for hours at a stretch is a far heavier, longer-lived connection load than a one-off order-status update. Polling avoids holding that connection open at all, trading it for periodic request/response cycles instead.
Assignment and Inventory, in More Detail
Driver assignment covers single, bulk, reassignment, and unassignment flows, not just a single "assign" action. Inventory tracking follows stock balances for fuel bowsers (tanker trucks) specifically, with dedicated stock-balance queries and log tables, a real operational data model, not a generic parts inventory.
Data Model & Scale
- urql's normalized cache plus a Firebase-token auth layer that refreshes automatically on 401/expired-token responses, so an expired session doesn't interrupt a dispatcher mid-task.
- Playwright covers login and order management end to end, the two flows every other screen in the app depends on.
Stack
Vue 3, Vite, Pinia, urql against Hasura, Firebase auth, Google Maps, Playwright for tests.