A full-stack Booking web application that allows users to create, browse, and book property listings. Built with Node.js, Express, MongoDB, and EJS, this project have key features including authentication, map integration, image uploads, and a booking system.
🌐 Hosted Link: Yatra (30sec)
Backend
- Node.js – JavaScript runtime
- Express.js – Web framework
- Mongoose – MongoDB object modeling
Frontend
- EJS – Templating engine
- Bootstrap 5 – UI framework
- Vanilla JavaScript
Database & Cloud Services
- MongoDB Atlas – Cloud database
- Cloudinary – Image storage & hosting
Other Tools
- Multer – File upload handling
- Mapbox – Interactive maps
- Passport.js – User authentication
- 🔑 User Authentication & Authorization – Register, Login, Logout using Passport.js
- 🏘️ Listings Management – Create, Read, Update, and Delete property listings
- 🗺️ Map Integration – Interactive maps powered by Mapbox
- 🔍 Search Functionality – Search listings by title, location, or keywords
- 🖼️ Image Uploads – Upload and manage images with Cloudinary & Multer
- 📅 Booking System – Date conflict validation for reservations
- ⭐ Review & Rating – Users can leave reviews and ratings for listings
- 💻 Responsive UI – Clean and mobile-friendly design using Bootstrap 5
- ☁️ MongoDB Atlas – Scalable cloud database for production
Yatra/
├── models/ # Schemas (User, Listing, Review, etc.)
├── routes/ # App Routes
├── views/ # EJS templates
├── public/ # Static assets (CSS/JS)
├── utils/ # Middleware & validation helpers
├── app.js # Entry point
└── package.json # Project metadata
Follow these steps to run the project locally:
-
Clone the repository
git clone https://github.com/Dev-Dwuti-Das/Yatra.git cd Yatra -
Install dependencies
npm install
-
Create a
.envfile in the project root and add the following:
# MongoDB Atlas
MONGO_URI=your_new_mongodb_atlas_connection_string
# Cloudinary
CLOUDINARY_CLOUD_NAME=your_new_cloud_name
CLOUDINARY_KEY=your_new_cloud_api_key
CLOUDINARY_SECRET=your_new_cloud_api_secret
# Mapbox
MAPBOX_TOKEN=your_new_mapbox_token
# Express Session
SESSION_SECRET=your_random_session_secret-
Run the development server
npm start
-
Open your browser and navigate to:
http://localhost:3000
- ✅ Wishlist functionality
- ✅ AI based suggestion
- ✅ AI based listing
Contributions, issues, and feature requests are welcome!
Feel free to fork this repo and submit a pull request.
This project is licensed under the MIT License – you’re free to use, modify, and distribute it.
Made with ❤️ by Dev Dwuti Das