Back to Portfolio
Project Details

SERENDIB GO

Full-Stack Travel Management Platform

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.

View GitHub Live Demo

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.

Dashboard Preview

Serendib Go Dashboard Screenshot

Built With a Practical Stack

Frontend

React 18 Vite Tailwind CSS DaisyUI Framer Motion React Query React Router

Backend

Node.js Express Puppeteer Nodemailer JWT

Database & Cloud

MongoDB Mongoose ODM Cloudinary Vercel Stripe API

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 & Patterns

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.

The System Stores

  • User Profiles, Role permissions, Booking Records
  • Vehicle Listings, Geospatial Locations, Tour Packages
  • Hotel Details, Room Availability, Review Metrics
  • Payment Webhooks, Invoice PDFs, Media Assets

Why It Matters

The system successfully unifies fragmented tourism operations into a cohesive experience, ensuring that performance stays top-tier even with complex multi-table queries and real-time geospatial data tracking.