DreamGo: Your ultimate vacation rental destination. Find your dream getaway with ease - from cozy cabins to luxurious villas. Book securely and start making memories today!
- Features
- Tech Stack
- Getting Started
- API Routes
- Logger
- Rate Limiter
- Validator
- Screenshots
- Deployed Link
- API Documentation
- Contribution
- License
- Easy Booking: Effortlessly book your desired vacation rental with simple and intuitive booking process.
- Wide Variety of Categories: Explore diverse categories of accommodations, from cozy cottages and beachfront villas to urban apartments and countryside retreats.
- Secure Payment: Ensure peace of mind with secure online payment options for hassle-free transactions.
- Customizable Search: Filter accommodations based on location, price range, amenities, and more to find the perfect getaway.
- User Wishlists: Create personalized wishlists to save favorite properties for future reference and easy booking.
- Listing Management: Allow users to publish their own properties for rent, managing details, availability, and pricing.
- User Ratings and Reviews: Enable users to rate and review accommodations to help others make informed decisions.
- Responsive Design: Enjoy seamless user experience across devices with a mobile-friendly and responsive website design.
- React: JavaScript library for building user interfaces
- Node.js: JavaScript runtime
- Express.js: Web application framework for Node.js
- MongoDB: NoSQL database for storing user data
- imagekit.io: Image optimization and delivery service
- JWT: JSON Web Tokens for secure user authentication
-
Clone the repository:
git clone https://github.com/omkar231098/dream_go.git
cd dream_go
-
Install dependencies:
npm install
-
Set up environment variables: Create a
.env
file in the root directory and add the following:PORT=8500 MONGO_URL="mongodb_database_url" JWT_SECRET=mysecretkey publicKey="imagekit.io_public_key" privateKey="imagekit.io_private_key" urlEndpoint="imagekit.io_url_endpoint"
-
Run the application:
npm start
The API server will be running at
http://localhost:8500
.
-
User Registration
- Route:
POST /auth/register
- Description: Register a new user.
- Route:
-
User Login
- Route:
POST /auth/login
- Description: Authenticate user login.
- Route:
-
Create Booking
- Route:
POST /bookings/create
- Description: Create a new booking.
- Route:
-
Delete Booking
- Route:
DELETE /bookings/delete/:id
- Description: Delete a booking.
- Route:
-
Create Listing
- Route:
POST /listings/create
- Description: Create a new property listing.
- Route:
-
Get Listings by Category
- Route:
GET /listings
- Query Parameter:
category
- Description: Retrieve property listings by category.
- Route:
-
Search Listings
- Route:
GET /listings/search/:search
- Parameter:
search
- Description: Search property listings by keyword.
- Route:
-
Get Listing Details
- Route:
GET /listings/:listingId
- Description: Retrieve details of a specific property listing.
- Route:
-
Delete Listing
- Route:
DELETE /listings/:listingId
- Description: Delete a property listing.
- Route:
-
Get User Trips
- Route:
GET /users/:userId/trips
- Description: Retrieve trips associated with a user.
- Route:
-
Add/Remove Listing to/from Wishlist
- Route:
PATCH /users/:userId/:listingId
- Description: Add or remove a listing from a user's wishlist.
- Route:
-
Get User Properties
- Route:
GET /users/:userId/properties
- Description: Retrieve properties listed by a user.
- Route:
-
Get User Reservations
- Route:
GET /users/:userId/reservations
- Description: Retrieve reservations made by a user.
- Route:
-
Create Review
- Route:
POST /reviews/create/:listingId
- Description: Create a new review for a listing.
- Route:
-
Get All Reviews
- Route:
GET /reviews
- Description: Retrieve all reviews.
- Route:
-
Get Reviews by Listing ID
- Route:
GET /reviews/listing/:listingId
- Description: Retrieve reviews for a specific listing.
- Route:
The logger middleware is responsible for logging various events and errors that occur during the execution of DreamGO. It helps in debugging, monitoring, and understanding the application's behavior.
The logger middleware is integrated using the following steps:
- Installation:
npm install --save winston
DreamGO uses a rate limiter to control the number of requests a user can make within a specific time frame. This helps prevent abuse and ensures fair usage of the application.
Input validation is essential for ensuring that user-submitted data is accurate and secure. DreamGO employs a validator to check and sanitize user input.
The Dream GO Frontend is deployed at https://dreamgo-green.vercel.app/
For detailed API documentation, view the Swagger documentation:
- Swagger Documentation - Click to view API documentation using Swagger.
We welcome contributions! If you have suggestions or improvements for the error handling process, please follow the Contributing Guidelines.
This project is licensed under the MIT License. See the LICENSE file for details.