A comprehensive full-stack application inspired by Airbnb, demonstrating proficiency in frontend development with React and backend development with NestJS.
Disclaimer: This README was generated with the assistance of AI, but it has been thoroughly reviewed and verified for accuracy.
This project aims to replicate core Airbnb functionalities, including user authentication, property listing, and booking management. It leverages React for the frontend and NestJS for the backend, demonstrating a strong understanding of full-stack development principles.
Create environment variable files by referring to the .env.example
files located in the project's file structure.
Ensure to add a file named gcpServiceAccountKey.json
, following the structure provided in
gcpServiceAccountKey.example.json
.
Authentication and Authorization π: Implements a secure, token-based authentication system using JWTs for access tokens and refresh tokens to manage session longevity. The backend handles token issuance, verification, and renewal, ensuring secure user sessions across server-client communications.
Listing Management π : A comprehensive CRUD (Create, Read, Delete) system for managing property listings, backed by role-based access control to allow only hosts to add or delete listings. Update functionality for listings is intentionally excluded to maintain consistency and avoid potential data conflicts or confusion between guest and host expectations.
Booking System π : A fully integrated booking feature that allows users to view availability, submit bookings, and manage reservations. This feature incorporates validation checks, availability status, and integrates smoothly with the backend database to ensure consistent data synchronization and seamless user experience.
Advanced Search Functionality π: An optimized search system using indexed database queries to retrieve listings based on specific criteria such as location, price range, amenities, and availability.
Map-Based Search and Location Selection πΊοΈ: Powered by interactive map integration (e.g., Google Maps API), users can search for listings geographically and visualize nearby properties. Additionally, an interactive map is available for hosts, allowing them to select and pin precise locations while listing a property.
By undertaking this project, I have honed my skills in:
I am confident that this project demonstrates my ability to tackle challenging full-stack development tasks and deliver high-quality solutions.