A modern accommodation booking platform built with the MERN stack, inspired by Airbnb. Stayzio demonstrates scalable, production-ready web application development with comprehensive features for property management and booking.
- Secure Authentication - Sign up and log in with email/username and password
- Property Listings - Create and manage detailed accommodation listings
- Interactive Browse - Explore all available stays with an integrated map
- Photo Management - Upload and organize property images with cloud storage
- Reviews & Ratings - Leave feedback and ratings to build community trust
- Responsive Design - Seamless experience across all devices
- Complete Web Architecture - MongoDB, Express.js, Node.js
- RESTful API Design - Clean, scalable backend with proper error handling
- Session-Based Authentication - Secure user management with Passport.js
- Geolocation Integration - Interactive maps powered by Mapbox API
- Cloud Storage - Image uploads handled via Cloudinary
- Production Deployment - Hosted on Render with MongoDB Atlas
Frontend
- HTML5/CSS3
- JavaScript (ES6+)
- Responsive Web Design
Backend
- Node.js
- Express.js
- RESTful APIs
- Session Management
Database
- MongoDB
- Mongoose ODM
- Schema Validation
Authentication & Security
- Passport.js
- bcrypt Password Hashing
- Session-based Auth
Third-Party Services
- Mapbox API (Maps & Geolocation)
- Cloudinary (Image Storage)
- Render (Deployment)
- Node.js (v20 or higher)
- MongoDB
- npm
-
Clone the repository
git clone https://github.com/PiyushTechie/Stayzio_Complete cd stayzio -
Install dependencies
npm install
-
Environment Variables Create a
.envfile in the root directory:DATABASE_URL=mongodb_connection SESSION_SECRET=your-secret-key CLOUDINARY_CLOUD_NAME=your-cloudinary-name CLOUDINARY_KEY=your-cloudinary-key CLOUDINARY_SECRET=your-cloudinary-secret MAPBOX_TOKEN=your-mapbox-token
-
Start the application
npm start
-
Access the application Open http://localhost:8080 in your browser
stayzio/
βββcontrollers/ # All logic for routes
βββ seeds/ # Database seed data
βββ models/ # MongoDB schemas and models
βββ routes/ # Express.js route handlers
βββ views/ # EJS templates
βββ public/ # Static assets (CSS, JS, images)
βββ middleware/ # Custom middleware functions
βββ utils/ # Utility functions and helpers
βββ config/ # Configuration files
βββ app.js # Main application file
- User registration and login
- Profile management
- Session handling and security
- Create new listings with details
- Upload multiple property images
- Edit and delete existing listings
- Location mapping and visualization
- Submit reviews and ratings
- Display average ratings
- Review moderation and management
- Search and filter properties
- Map-based property exploration
- Responsive image galleries
| Method | Endpoint | Description |
|---|---|---|
| GET | / |
Home page with listings |
| POST | /register |
User registration |
| POST | /login |
User authentication |
| GET | /listings |
All property listings |
| POST | /listings/new |
Create new listing |
| GET | /listings/:id |
Specific listing details |
| PUT | /listings/:id |
Update listing |
| DELETE | /listings/:id |
Delete listing |
| POST | /listings/:id/reviews |
Add review |
- Password hashing with bcrypt
- Session-based authentication
- CSRF protection
- Input validation and sanitization
- Secure file uploads
- Environment variable protection
The application is deployed on Render with:
- Automatic deployments from GitHub
- MongoDB Atlas for database hosting
- Environment variable management
Live Demo: [https://stayzio-app.onrender.com]
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Your Name - Piyush Prajapati
Project Link - [https://github.com/PiyushTechie/Stayzio_Complete]
β Star this repository if you find it helpful!