Frontend
Overview
Serendib GO is a comprehensive full-stack travel management platform tailored for the Sri Lankan tourism ecosystem. It empowers tourists, guides, vehicle owners, and hotel managers to seamlessly list, book, review, and manage local travel experiences. By centralizing bookings, payments, and role-based dashboards, it simplifies trip planning and vendor management.
The Problem It Solves
Planning a comprehensive trip often forces tourists to use fragmented systems for hotels, transport, and guides. For tourism operators, managing these independent bookings is equally chaotic. Serendib GO unifies these services into a single marketplace, providing distinct, secure portals for every stakeholder—from tourists booking a complete package to vehicle owners tracking their regional operations.
Main Mockup
Serendib GO Dashboard Preview
Tech Stack
Built With a Modern Stack
Backend
Database & Cloud
Key Features
Key Features & Core Functionalities
Multi-Role Ecosystem
Dedicated, secure flows for Tourists, Guides, Drivers, Vehicle Owners, Hotel Owners, Staff, and Admins to manage their respective functions.
Geospatial Vehicle Marketplace
Advanced vehicle search based on location and date availability, calculating real-world distances to connect tourists with nearby drivers.
Integrated Bookings & Payments
End-to-end booking capabilities for tours, hotels, and vehicles with secure Stripe payment processing and automated refund handling.
Trust & Moderation
A robust review system enforcing uniqueness constraints (one review per booking/guide) with helpful metrics, verified flags, and admin moderation tools.
Automated Exports & Notifications
Features Puppeteer-driven automated PDF generation for reports/tickets, alongside real-time notifications via Socket.IO to keep all parties updated.
Architecture & Challenges
Engineering Decisions & Tradeoffs
Engineering Decisions
Geospatial Availability & Search
To make the vehicle marketplace efficient, I utilized
Mongoose's 2dsphere indexing. This allowed the implementation of instance methods to
calculate distances and determine availability windows dynamically, keeping complex location-based
queries optimized and database-friendly.
Multi-Role Security & Stateful Auth
Managing permissions across seven different user roles
required a highly robust auth architecture. I implemented a secure JWT issuance system combined with
password reset, email verification flows, pre-save hashing, and changedPasswordAfter logic
to enforce strict access control across the platform.
Payment & Operational Reliability
Integrating Stripe (with webhooks) alongside Cloudinary for media and Puppeteer for PDF generation required careful orchestration. I built in idempotency, webhook verification, and explicit request-size limits to mitigate operational failures and handle large media/file streams safely under production load.