Trips, Not
Spreadsheets.

Client
Transfast — container transport & fleet logistics
Type
Internal fleet dispatch web app (installable PWA)
Role
Solo build — spec, data model, API, frontend & deployment
Stack
React · TypeScript · Vite · Cloudflare Pages Functions · D1
Status
Live in production — private, single-tenant tool
Internal tool — anonymized recreation
Transfast Trip Portal dashboard
0h

From Spec to Live Production

0

Commits to First Release

0

Test Suites on Core Logic

0

Developer, End to End

The problem

Transfast runs a fleet of trucks moving shipping containers between ports, depots, and customer sites. Every trip — date, container number, driver, customer, route, and rate — was logged by hand in Excel. It worked, until it didn't: every customer report meant rebuilding the same table from scratch, a corrected trip left no trace of what changed, and the data lived on one machine, invisible to anyone not looking at that spreadsheet.

The brief was deceptively simple — get off Excel — but the real constraint was adoption. The team knew their report cold. Any replacement that changed how the numbers looked would be fought, not used.

The solution

A serverless fleet-dispatch PWA that mirrors the business's exact original report layout — same columns, same TOTAL / TOTAL TRIPS footer — so nothing about reading a report changed. The only thing that changed was how the report gets produced: one click instead of an afternoon of copy-paste. Built end-to-end by a single Forzateks engineer, spec to production in under 25 hours.

01

Zero-retraining reports

Vehicle reports reproduce the client's original Excel layout column-for-column, down to the TOTAL and TOTAL TRIPS footer — so the team read day one output exactly the way they always had.

02

Vehicle → driver autofill

Each vehicle carries a live driver assignment that auto-fills every new trip the moment the vehicle is picked — overridable per trip when someone covers a shift. Fewer fields, fewer mistakes.

03

Excel export & print-to-PDF

Any vehicle report exports to a real .xlsx workbook (SheetJS) or prints straight to PDF — the two formats customers actually ask for, generated on demand instead of assembled by hand.

04

Field-level audit trail

Every create, edit, and delete is logged with a before/after diff of exactly which fields changed, when, and by whom — so a corrected rate is never a mystery again.

05

History-safe CRUD

Fleet and driver records use soft deletes: retiring a vehicle or driver never erases the trips tied to it. Past reports stay intact; the record simply drops out of new selections.

06

Installable, offline-first

Installs to the desktop like a native app, caches its data for offline reference, and guards access with signed session cookies — no heavyweight auth stack for a single-operator tool.

Vehicle report mirroring the original Excel layout with Export to Excel and Print
The report that made adoption effortless — the client's Excel layout, now one click and an .xlsx away
New trip form auto-filling the driver from the selected vehicle
Pick the vehicle, the driver fills itself — from the vehicle's live assignment, overridable per trip
Audit log showing field-level before and after diffs
Every change, diffed — the field-level audit trail Excel could never keep

Architecture

React + TypeScript Vite build · installable PWA Offline data caching SheetJS export · print-to-PDF BROWSER fetch / JSON signed session Pages Functions Serverless API (edge) Signed session cookies Report builder · audit diffing CLOUDFLARE SQL Cloudflare D1 SQLite at the edge Trips · vehicles · drivers Audit log · soft deletes SINGLE SOURCE OF TRUTH Vitest — 3 suites report totals · audit diffing · session signing

The stack

A single-tenant app with no server to babysit: a React + TypeScript frontend built with Vite, a serverless API on Cloudflare Pages Functions, and Cloudflare D1 (SQLite) as the one source of truth — trips, vehicles, drivers, and the audit log all in one place. SheetJS handles Excel export; the trickiest logic — report totals, audit diffing, and session-cookie signing — is pinned down by ~2,700 lines of TypeScript and three Vitest suites, shipped across 20 focused commits.

React TypeScript Vite Pages Functions Cloudflare D1 Vitest SheetJS · Excel PWA · Offline

Results

  • Zero retraining — the report looks identical, so the team adopted it without a single how-to session.
  • Reports on demand — a customer report is one click and an .xlsx, not an afternoon of rebuilding tables.
  • Nothing lost in an edit — every correction is diffed and dated, and retired records never take their history with them.
  • Live in production in under 25 hours — one engineer, full ownership from spec to deploy.

Screens shown are anonymized recreations of the production interface. Transfast is a private, single-tenant internal tool with real login and live fleet data — it isn't publicly browsable, but a walkthrough can be arranged for serious enquiries.

Still running the business out of a spreadsheet?

This replaced exactly that — fast, and without the team having to relearn a thing. If a manual Excel or WhatsApp workflow is quietly costing you time, the first conversation costs nothing.

Let's Connect