Full-stack taxi booking platform for an Edinburgh-based private hire company.
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.