WanderHome is an Airbnb-inspired web application developed using Node.js, Express.js, EJS, and MongoDB. It is the part of a web development course I did. It allows users to search for accommodations, list properties and review the properties. there is no booking functionality implimented yet.
A live demo of WanderHome can be accessed here.
- Search Functionality: Users can search for accommodations based on various criteria such as location, dates, and amenities.
- Category-Based Listing: Accommodations are categorized for easy browsing and filtering.
- User Authentication: Secure user authentication system ensures that only registered users can access certain features like listing properties and booking accommodations.
- CRUD Operations: MongoDB and Mongoose are used for efficient CRUD (Create, Read, Update, Delete) operations via API endpoints.
- Server-Side Validation: Joi library is integrated for server-side validation to ensure data schema.
- Server-Side Rendering: EJS is used for rendering the page server-side and sending it to the user.
- Image Storage: Cloudinary API is utilized for image storage, allowing users to upload images of their properties.
- Responsive Design: The application is fully responsive, and well suited for mobile view too.
- Node.js
- Express.js
- EJS (Embedded JavaScript)
- MongoDB
- Bootstrap
- HTML
- CSS
- JavaScript
- Cloudainary
- Connect-flash
- dotenv
- joi
- method-override
- multer
- nodemon
- passport
To run WanderHome locally, follow these steps:
- Clone this repository.
- Navigate to the project directory.
- Install dependencies using
npm install
. - Set up your MongoDB Atlas cluster and obtain your connection string.
- Create a
.env
file in the root directory and add your MongoDB Atlas connection string and Cloudinary API credentials. it should include: CLOUD_NAME, CLOUD_API_KEY, CLOUD_API_SECRET, MAP_TOKEN, ATLASDB_URL and a SECRET (to encrypt passwords). - Run the application using
node app.js
. (make sure you are in project directory) - Access the application in your web browser at
http://localhost:8000
.
(https://youtu.be/6OvXJ6w9Xmc)
Contributions are welcome! Feel free to open an issue or submit a pull request.