← Back to Portfolio
Stay Leisurely

Professional Project

Stay Leisurely

ReactPostgreSQLNode.jsGCPTypescriptFirebaseGuesty APIRazorpayPostmanTailwindAxiosContext API

Overview

Stay Leisurely is a villa booking platform for a hospitality startup. I spearheaded the redesign and functional overhaul of their existing website, transforming it into a clean, highly customized full-stack web application. The revamped system features a modernized guest booking flow, a secure, role-based internal CMS, and intelligent integrations with the Guesty PMS.


Role

Full Stack Developer at Designare Solutions


Problem

The client had an existing website, but it was cluttered, functionally limited, and still required manual intervention (phone calls, spreadsheets) to manage actual reservations. They needed their platform modernized with a cleaner user experience, custom booking functionalities tailored to their workflow, and a robust, secure admin interface to manage inventory without double-booking.

Solution

Overhauled the existing website into a modern React application, focusing on a cleaner UI and frictionless guest-facing workflows utilizing Firebase for onboarding. To replace their manual processes, I built a highly customized Admin CMS featuring Role-Based Access Control (RBAC), ensuring that staff members only had authorization for specific, necessary modifications. I also engineered a Node.js synchronization backend: properties managed locally are handled via PostgreSQL, while external properties use automated cron jobs to sync pricing and availability with the Guesty API. Razorpay was integrated to handle secure payments seamlessly.


Architecture

A modernized React SPA replacing the legacy frontend, backed by a new Node.js API layer and PostgreSQL. GCP Cloud Run handled containerised backend deployment, with GCP securely storing property, user, and Razorpay transaction data.

Key Design Decisions

  • Complete UI/UX redesign of the legacy website into a modern, component-driven React application
  • Custom Admin CMS with granular Role-Based Access Control (RBAC) governing modifications to property listings, pricing, and availability
  • Smart synchronization engine using a property-level sync flag to seamlessly toggle between local database management and external Guesty PMS management
  • Maintained a centralized Postman workspace documenting the entire REST API ecosystem to ensure seamless integration and testing
  • Automated Node.js cron jobs utilizing Guesty IDs to fetch and update property pricing and availability via optimized batch processing
  • Razorpay payment gateway integration for secure, seamless checkout flows and transaction logging
  • Firebase integration for secure and streamlined guest onboarding and authentication
  • Deployed on GCP with environment-based config management and zero-downtime deployments

Challenges

  • Refactoring and modernizing the existing platform's UX/UI while introducing complex new backend functionality without disrupting the business
  • Implementing a robust RBAC authorization matrix that flexibly accommodated the startup's internal team structure without overly restricting operations
  • Designing an efficient batch-processing cron architecture to sync Guesty API data across multiple properties simultaneously
  • Reconciling availability states dynamically based on the sync parameter to ensure the booking engine always queried the correct source of truth
  • Handling Razorpay payment states reliably to ensure transaction records in GCP remained accurate even during network interruptions

Impact

  • Transformed a functionally limited, existing website into a clean, automated, and high-converting self-serve booking platform
  • Eliminated manual reservation tracking and double-bookings by establishing a strict single source of truth for every property
  • Optimized system performance and API usage by implementing batched cron jobs for external inventory synchronization
  • Empowered the client with a secure, custom CMS tailored specifically to their operational requirements and team roles