Welcome to StayFinder! This innovative web application connects travelers with hosts offering unique accommodations, providing a seamless experience for booking stays around the world. Designed with both usability and aesthetics in mind, StayFinder is your go-to platform for finding the perfect place to stay, no matter your travel needs.
Explore the Live Version of StayFinder
Experience the full functionality of StayFinder, our comprehensive accommodation booking platform, in real-time.
Check it out here: StayFinder Live
If you found this project helpful, give it a ⭐️!
- User Authentication: Secure sign-up and login functionality for users to create personalized accounts.
- Comprehensive Property Listings: Browse through a diverse range of accommodations, each with detailed descriptions, amenities, pricing, and high-quality images.
- Search and Filters: Easily search for properties by location, price range, and other criteria to find the perfect match for your stay.
- User Reviews and Ratings: Read reviews from previous guests to make informed decisions and contribute your own experiences.
- Responsive Design: Fully responsive layout that adapts to all devices, ensuring a smooth experience on smartphones, tablets, and desktops.
StayFinder is built using a modern tech stack to ensure performance, security, and scalability:
- Node.js (v22.9.0): Asynchronous event-driven JavaScript runtime for building scalable applications.
- Express.js: Minimalist web framework for Node.js that simplifies server-side development.
- MongoDB: NoSQL database for storing user data, property listings, and reviews.
- Mongoose: ODM library for MongoDB, providing a straightforward way to model and manipulate data.
- EJS: Embedded JavaScript templating engine for dynamic HTML rendering.
- Passport.js: Authentication middleware for Node.js, providing support for various authentication strategies.
- Cloudinary: Image management service that enables easy upload, storage, and manipulation of images.
- Mapbox SDK: Integration for interactive maps and geolocation services.
connect-flash
: Middleware for flash messages to enhance user experience.connect-mongo
: MongoDB session store for Express sessions.dotenv
: Zero-dependency module for loading environment variables from a.env
file.joi
: Powerful schema description language and data validator for JavaScript.multer
: Middleware for handling multipart/form-data, especially for file uploads.multer-storage-cloudinary
: Storage engine formulter
that uploads files directly to Cloudinary.method-override
: Middleware for supporting HTTP verbs such as PUT and DELETE.
Follow these steps to set up and run StayFinder locally:
- Node.js (v22.9.0) installed on your machine. Download it from nodejs.org.
- MongoDB: Either a local instance or a cloud-based service like MongoDB Atlas.
-
Clone the repository:
git clone https://github.com/syedtasavour/StayFinder.git cd stayfinder
-
Install dependencies:
npm install
-
Configure Environment Variables: Create a
.env
file in the root directory and include the following variables (replace with your actual values):MONGODB_URI=your_mongodb_uri CLOUDINARY_URL=your_cloudinary_url SESSION_SECRET=your_session_secret
-
Run the Application:
nodemon start
-
Access the Application: Open your web browser and navigate to
http://localhost:8080
to explore StayFinder.
Here’s an overview of the project directory structure:
stayfinder/
├── controllers/
├── models/ # Mongoose models
├── routes/ # Application routes
├── views/ # EJS templates
├── public/ # Static files (CSS, JS, images)
├── .env # Environment variables
├── app.js # Main application file
├── package.json # Project dependencies and scripts
└── README.md # Project documentation
Once you have the application running, you can:
-
Sign Up / Log In: Create an account or log in to access all features.
-
Browse Properties: Use the search bar and filters to find accommodations that suit your needs.
-
View Property Details: Click on a listing to see detailed information, including photos, amenities, and user reviews.
-
Leave Reviews: After your stay, share your experience by leaving a review on the property.
Syed Tasavour
- GitHub: @syedtasavour
- Portfolio: syedtasavour.me
For any queries or support:
- Email:
[email protected]
- GitHub Issues: Create an issue
Contributions are highly encouraged! If you have ideas for improvements or new features, please fork the repository and submit a pull request. Ensure your code adheres to the project’s style guidelines and includes appropriate tests.
This project is licensed under the MIT License. See the LICENSE file for more details.