Skip to content

aniprogramer/wanderlust

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

59 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🌍 Wanderlust

πŸš€ Live Demo: https://ani-wanderlust.onrender.com

Wanderlust Overview Node.js Express.js MongoDB Bootstrap


πŸ“– What this project does

Wanderlust is a full-stack property listing web application (inspired by Airbnb) where users can explore available properties, view detailed information, read and post reviews, and even create their own listings.

The platform includes:

  • πŸ“± Fully responsive UI optimized for mobile, tablet, and desktop
  • πŸ” Secure user authentication & authorization
  • πŸ•’ Session management
  • ☁️ Cloud-based image uploading for property photos
  • ✏️ Full CRUD operations for listings and reviews

🎯 Why it exists

This project was built as the Major Project for the ApnaCollege web development curriculum. It serves to showcase practical, hands-on learning of:

  • Backend web architecture
  • MVC (Model-View-Controller) design patterns
  • RESTful API conventions
  • Database management using MongoDB
  • Security practices like password hashing and route authorization

πŸš€ How to run it

1. Clone the repository

Open your terminal and run the following command to clone the repository to your local machine:

git clone https://github.com/your-username/apnacollege---major-project.git
cd apnacollege---major-project

(Note: Please replace the URL with your actual GitHub repository URL if it differs.)

2. Install dependencies

Ensure you have Node.js installed, then run from the root directory:

npm install

3. Set up Environment Variables

Create a .env file in the root directory and configure the following credentials:

NODE_ENV=development
SECRET=your_session_secret_string
CLOUD_NAME=your_cloudinary_cloud_name
CLOUD_API_KEY=your_cloudinary_api_key
CLOUD_API_SECRET=your_cloudinary_api_secret

4. Start the Server

node app.js

The server will log Server is listening to port 8080. Open your browser and go to http://localhost:8080/listings.


πŸ› οΈ What tech it uses

  • Backend: Node.js, Express.js
  • Database: MongoDB (using Mongoose ODM) with connect-mongo for session storage
  • Authentication: Passport.js (passport-local, passport-local-mongoose)
  • Templating Engine: EJS (Embedded JavaScript) with ejs-mate for standardized page layouts
  • Image Storage: Cloudinary (integrated via cloudinary and multer)
  • Data Validation: Joi schema validation
  • Styling/UI: CSS/Bootstrap (served statically from the public directory) and Flash messages (connect-flash) for user alerts.

πŸ“‚ How it’s structured

The project strictly follows the MVC (Model-View-Controller) architecture. Here is a high-level overview of the directory structure:

πŸ“¦ apna-college-major-project
 ┣ πŸ“‚ controllers       # Core logic handling requests and DB operations
 ┣ πŸ“‚ init              # Scripts and dummy data to seed the database
 ┣ πŸ“‚ models            # Mongoose schemas (Listing, User, Review)
 ┣ πŸ“‚ public            # Static assets (CSS, JS, Images)
 ┣ πŸ“‚ routes            # Express routers (Listings, Reviews, Users)
 ┣ πŸ“‚ utils             # Helper functions (Error Wrappers, Custom Errors)
 ┣ πŸ“‚ views             # EJS templates for UI rendering
 ┃ ┣ πŸ“‚ includes        # Reusable view partials (navbar, footer, flash)
 ┃ ┣ πŸ“‚ layouts         # Boilerplate HTML layouts (ejs-mate)
 ┃ ┣ πŸ“‚ listings        # Listing specific views (index, show, new, edit)
 ┃ β”— πŸ“‚ users           # Authentication views (login, signup)
 ┣ πŸ“œ .env              # Environment variables
 ┣ πŸ“œ app.js            # Main entry point and server configuration
 ┣ πŸ“œ cloudConfig.js    # Cloudinary integration configuration
 ┣ πŸ“œ middleware.js     # Custom Express middlewares (Auth & Validation)
 β”— πŸ“œ schema.js         # Server-side Joi validation schemas

Developed with ❀️ for the ApnaCollege Web-Dev Bootcamp.

About

🌍 Wanderlust: A full-stack property listing platform inspired by Airbnb. Built with Node.js, Express, and MongoDB.

Resources

Stars

Watchers

Forks

Contributors