Transport billing
Fleet Invoicing Platform
Private-hire fleet ops web app—bookings, driver compliance, weekly PDF pay sheets, and driver portal.

Background & Context
Private-hire and taxi fleets live on booking truth: OTS-style references, pickup or flight-landing jobs, driver assignment, and status through to completion. Finance and ops still lose hours when trip sheets, chat confirmations, and pay calculations live in different places. Drivers need a portal for jobs and onboarding; admins need compliance documents and weekly statements—not a full accounting ERP on day one.
Tekvers built taxi-invoice as a monorepo: NestJS 11 + Mongoose/MongoDB API with Passport JWT, and a Next.js 15 / React 19 / Tailwind 4 web app for admin and driver surfaces. Production web origin referenced in CORS is https://taxi-invoicing-app.vercel.app. Document uploads go through a separate PHP upload.php host (e.g. gt.osamaqaseem.online), with returned URLs stored on driver document fields.
The product is fleet job and weekly-statement focused. PDF pay sheets are browser-generated with jsPDF—not a server-side invoice engine. There are no separate native mobile apps in the repo. Activity logging captures UI interactions for admin review.
The Challenge
Taxi and private-hire operators needed bookings, driver assignment, compliance documents, and weekly pay visibility in one system—so ops and finance stop reconstructing trips from sheets and chat. Without a coherent transport billing foundation, Fleet Invoicing Platform stakeholders faced fragmented tools, slow handoffs, and limited visibility—classic failure modes Tekvers designs against.
The Solution
Tekvers delivered a NestJS/MongoDB API and Next.js admin/driver portals with booking CRUD, job status workflow, driver compliance documents, weekly overview, client-side PDF statements, and external PHP document uploads. Tekvers delivered a maintainable transport billing system for Fleet Invoicing Platform using NestJS, Next.js, TypeScript, MongoDB, with phased rollout, operator workflows, and documentation suited to long-term ownership.
Our Approach
Booking and job domain model
Bookings carry unique `otsReference`, pickup/dropoff, flight fields, fares, and driver pay. Job status advances unassigned → assigned → accepted → en_route → completed, with admin filters and driver `my-jobs` views.
Driver compliance and onboarding
Admin manages driver profiles, UK licensing/compliance fields, document checklist booleans and file URLs. Drivers hit onboarding gates (`mustChangePassword`, `mustCompleteProfile`) before full portal use.
Weekly statements without a full ERP
Weekly overview endpoints plus jsPDF client generation give finance pay sheets quickly; activity logs batch UI events for accountability—keeping scope on fleet ops rather than general ledger accounting.
What We Delivered
- NestJS 11 API with MongoDB/Mongoose and JWT auth
- Next.js 15 admin dashboard (bookings, drivers, weekly tools)
- Driver portal (`/driver/*`) for jobs, profile, and onboarding
- Booking CRUD, bulk patch, and driver assignment flows
- Job status workflow through completed
- Driver compliance document checklist with remote upload URLs
- Weekly overview and jsPDF pay-sheet download
- Activity logging for UI interactions
- External PHP multipart upload integration for document files
Outcomes & Impact
- Faster turnaround from completed jobs to weekly pay visibility
- Clearer handoff between ops assignment and driver execution
- Compliance documents attached to driver records instead of email threads
- Honest scope: fleet jobs and statements—not a full accounting/invoicing ERP
Fleet staff run bookings and drivers from one web stack while finance pulls weekly PDFs from operational truth—cash conversations start from completed jobs, not reconstructed memory.
Technology Stack
Services Delivered
Related Case Studies
Guides & articles from this niche
Planning a similar platform? Share your scope and we will map architecture, delivery phases, and a realistic timeline.