Skip to content

Jay-dodke/Elysium-Stay

Repository files navigation

🏛️ ElysiumStay - Premium Property Rental Platform

Node.js Express.js MongoDB Bootstrap Cloudinary

A production-ready, full-stack property rental platform that enables users to discover premium accommodations, manage listings, and share authentic reviews. Built with modern web development practices and scalable architecture.

✨ Key Features

🔐 Authentication & Security

  • Secure Session Management: Passport.js with local strategy
  • Role-Based Access Control: Ownership-based authorization system
  • Password Hashing: Bcrypt implementation via Passport-Local-Mongoose
  • Environment Variables: Sensitive data protection
  • CSRF Protection: Built-in Express security middleware

🏠 Property Management

  • CRUD Operations: Create, Read, Update, Delete listings
  • Multi-Image Upload: Cloudinary integration with drag-and-drop support
  • Rich Listing Details: Location, pricing, amenities, and descriptions
  • Responsive Gallery: Optimized image display across devices

Review System

  • 5-Star Rating System: Intuitive rating interface
  • User Reviews: Authenticated users can leave detailed feedback
  • Review Moderation: Author-only deletion capabilities
  • Average Rating Calculation: Automatic aggregation and display

🎨 User Experience

  • Responsive Design: Mobile-first Bootstrap 5 implementation
  • Real-Time Feedback: Flash messages for user actions
  • Server-Side Rendering: EJS templates with partials
  • Form Validation: Client and server-side validation
  • Loading States: Optimistic UI patterns

🛠️ Technology Stack

Backend

  • Runtime: Node.js v18+
  • Framework: Express.js 4.x
  • Database: MongoDB with Mongoose ODM
  • Authentication: Passport.js + Passport-Local-Mongoose
  • File Upload: Multer + Cloudinary SDK

Frontend

  • Templating: EJS (Embedded JavaScript)
  • Styling: Bootstrap 5 + Custom CSS
  • Icons: Font Awesome
  • JavaScript: Vanilla ES6+ with modular patterns

DevOps & Tools

  • Environment Management: dotenv
  • Validation: Express-Validator
  • Session Management: Express-Session
  • File Processing: Multer
  • HTTP Methods: Method-Override
  • Notifications: Connect-Flash

📁 Project Structure

ElysiumStay/ ├── app.js # Application entry point ├── package.json # Dependencies and scripts ├── .env.example # Environment variables template ├── .gitignore # Git ignore rules │ ├── config/ # Configuration files │ ├── database.js # MongoDB connection setup │ ├── cloudinary.js # Cloudinary configuration │ └── passport.js # Passport authentication setup │ ├── controllers/ # Business logic controllers │ ├── listingController.js │ ├── reviewController.js │ └── userController.js │ ├── models/ # Mongoose schemas and models │ ├── User.js # User schema with authentication │ ├── Listing.js # Property listing schema │ └── Review.js # Review and rating schema │ ├── routes/ # Express route definitions │ ├── listingRoutes.js │ ├── reviewRoutes.js │ └── userRoutes.js │ ├── middleware/ # Custom middleware functions │ ├── auth.js # Authentication middleware │ ├── validate.js # Validation middleware │ └── errorHandler.js # Error handling middleware │ ├── views/ # EJS templates │ ├── layouts/ # Layout components │ ├── partials/ # Reusable components │ ├── listings/ # Listing-related views │ ├── reviews/ # Review-related views │ └── users/ # User-related views │ ├── public/ # Static assets │ ├── css/ # Stylesheets │ ├── js/ # Client-side JavaScript │ ├── images/ # Static images │ └── uploads/ # Temporary upload directory │ ├── utils/ # Utility functions │ ├── catchAsync.js # Async error handler │ ├── ExpressError.js # Custom error class │ └── helpers.js # Helper functions │ └── tests/ # Test suites ├── unit/ # Unit tests └── integration/ # Integration tests

⚡ Quick Start

Prerequisites

  • Node.js 18+ & npm 8+
  • MongoDB 6+ (Local or Atlas)
  • Cloudinary Account
  • Git

Installation

  1. Clone the repository
git clone https://github.com/Jay-dodke/ElysiumStay.git
cd ElysiumStay

🚀 Development Scripts

# Start development server with hot reload
npm run dev

# Run production server
npm start

# Run tests
npm test

# Lint code
npm run lint

# Format code
npm run format

# Seed database with sample data
npm run db:seed


🔒 Security Practices

Password hashing using Passport Local Mongoose

Protected routes using middleware

Sensitive data secured via environment variables

Server-side validation for user input

📌 Current Status

🚧 Actively under development
Planned improvements:

Search & filter listings

Map-based location browsing

Pagination & performance optimizations

Deployment to cloud platform

👨‍💻 Author

Jay Dodke
Full-Stack Developer (MERN)
📍 India

This project reflects my hands-on experience with building real-world web applications and continuously improving code quality, security, and scalability.

📄 License

This project is for learning and demonstration purposes.

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors