← Back to Portfolio
Stay Leisurely

Professional Project

Stay Leisurely

ReactPostgreSQLNodeJsGCP

Overview

Stay Leisurely is a villa booking platform built for a hospitality startup. I designed and developed the full-stack web application — from the guest-facing booking flow to the property management layer — enabling the business to accept and manage reservations end-to-end.


Role

Full Stack Developer at Designare Solutions


Problem

The client was managing villa reservations manually through phone calls and spreadsheets. They needed a polished customer-facing booking experience alongside an internal management interface to track availability, reservations, and guest communication — all within a tight delivery window.

Solution

Built a React web application for the guest-facing booking flow with a Node.js backend exposing a REST API. PostgreSQL handled relational reservation data with availability windows modeled carefully to prevent double-bookings. The platform was deployed on GCP for reliability and ease of scaling during peak seasons.


Architecture

A React SPA for the customer booking journey, backed by a Node.js API layer and PostgreSQL. GCP Cloud Run handled containerised backend deployment for cost-effective scaling.

Key Design Decisions

  • React frontend with component-driven UI for property browsing, date selection, and checkout
  • Availability engine in PostgreSQL preventing overlapping reservation windows via constraint-level validation
  • Node.js REST API handling reservation lifecycle: create, confirm, cancel, and modify flows
  • Email notification pipeline for booking confirmations and reminders using Nodemailer
  • Admin dashboard for property managers to view and action upcoming reservations
  • Deployed on GCP with environment-based config management and zero-downtime deployments

Challenges

  • Modeling villa availability accurately in PostgreSQL to prevent race conditions on simultaneous booking attempts
  • Building an admin experience alongside the guest UI within a shared codebase without coupling concerns
  • Handling payment and cancellation edge cases at the data layer without a dedicated payment microservice
  • Ensuring mobile-first responsiveness for a booking flow that guests primarily access from phones

Impact

  • Replaced a fully manual reservation process with a self-serve booking platform
  • Reduced reservation errors and double-bookings to zero through database-level availability enforcement
  • Enabled the client to scale villa listings independently through the admin management interface