Back to home
Full Stack Taxi Booking Fleet Management

Castle Cars Edinburgh

Full-stack taxi booking platform for an Edinburgh-based private hire company.

2025
Castle Cars Edinburgh cover

About the Project

Castle Cars Edinburgh is a complete taxi booking and fleet management platform built for a private hire company based in Edinburgh, Scotland.

The system handles the full booking lifecycle — from a customer placing a booking and paying via Stripe, to a driver receiving their jobs by email each morning. Prices are calculated dynamically using Google Maps distance data and a seasonal pricing engine that adjusts rates based on configurable date ranges.

The backend is built with Node.js, Express, and TypeScript, using MongoDB as the primary database and Redis with BullMQ for queued background jobs. All emails — booking confirmations, receipts, payment links, review reminders, and driver job sheets — are processed asynchronously through a job queue so they never block the request cycle.

Authentication is handled via Better Auth with role-based access control across three roles: customer, moderator, and admin. Every admin and moderator action is recorded in an audit log.

The frontend is deployed on a VPS alongside the backend API, with the customer-facing booking site and an internal admin dashboard running as separate applications.

Key Highlights

01 Stripe Checkout integration with webhook handling for payment success and expiry events
02 Seasonal pricing engine — admins can configure date-based price multipliers per vehicle type
03 Google Maps API integration for real-time distance and route calculation
04 BullMQ + Redis job queue for async email delivery with retry support
05 Three cron jobs: daily driver job sheets (7AM & 9PM UK time), review reminders (30 days post-ride), and document expiry alerts (7-day warning)
06 Role-based access control — customer, moderator, and admin with audit logging on all sensitive actions
07 One-way and return trip booking with paired booking IDs and per-leg pricing
08 Walk-in booking support for admin-created cash/card bookings with custom pricing override
09 Driver document expiry tracking with automated admin alerts
10 Deployed on a VPS with separate frontend, admin dashboard, and backend API

Gallery

Project Details

Year

2025

Tech Stack

Node.js Express TypeScript MongoDB Redis BullMQ Stripe React Google Maps API Better Auth Cloudinary Zod Tailwind CSS