Skip to content

Latest commit

 

History

History
659 lines (479 loc) · 17.4 KB

File metadata and controls

659 lines (479 loc) · 17.4 KB

🏡 Smart Rent System

Smart-Rent Banner

Revolutionizing the rental experience through technology and community

SWoC 2025 Contributors Stars Issues License Last Commit

🚀 Live Demo📖 Documentation🐛 Report Bug✨ Request Feature


📋 Table of Contents

Click to expand

🎯 Vision

Smart Rent System is more than a rental platform—it's a movement towards smarter, more transparent property transactions. Built with modern web technologies and best practices, we're creating a space where property owners and travelers connect seamlessly.

🌍 Our Mission

Democratize property rentals by building an open-source platform that:
✓ Prioritizes user experience and security
✓ Fosters trust through verified reviews
✓ Empowers developers to learn and contribute
✓ Creates economic opportunities for hosts worldwide

🎓 Learning Hub

As part of Social Winter of Code (SWoC) 2026, Smart Rent System serves as a comprehensive learning resource for developers mastering the MERN stack. Dive into real-world implementations of:

  • RESTful API Design with Express.js
  • State Management using Redux Toolkit
  • Real-time Communication with WebSockets
  • Cloud Storage integration with Cloudinary
  • Authentication Flows including OAuth 2.0
  • Database Modeling for complex relationships

✨ Features

🔐 Secure Authentication

  • JWT-based session management
  • Google OAuth integration
  • Password encryption with bcrypt
  • Role-based access control (RBAC)

🏠 Smart Listings

  • Rich media uploads (Cloudinary CDN)
  • Dynamic pricing algorithms
  • Amenities and house rules editor
  • Availability calendar integration

🗺️ Map Integration

  • Interactive Leaflet.js maps
  • Geolocation-based search
  • Radius filtering
  • Custom map markers

💬 Real-Time Chat

  • Socket.io powered messaging
  • Typing indicators
  • Read receipts
  • Message history persistence

📊 Analytics Dashboard

  • Booking statistics
  • Revenue tracking
  • Occupancy rates
  • User engagement metrics

Review System

  • Verified guest reviews
  • Rating aggregation
  • Photo reviews
  • Response management

🛠️ Technology Stack

Frontend Arsenal

React Redux TailwindCSS React Router

Backend Infrastructure

Node.js Express Socket.io JWT

Database & Storage

MongoDB Mongoose Cloudinary

Development Tools

Git Postman ESLint Prettier


📸 Screenshots

🖼️ View Application Screenshots

Landing Page

Landing Page

Property Listings

Property Grid

Interactive Map

Map View

Real-Time Chat

Chat Interface


🚀 Quick Start

Prerequisites

Before you begin, ensure you have the following installed:

node -v  # v16.0.0 or higher
npm -v   # v8.0.0 or higher

You'll also need:

  • MongoDB (local installation or Atlas URI)
  • Cloudinary Account (free tier available)
  • Git for version control

Installation

1. Clone the Repository

git clone https://github.com/hitesh-kumar123/Smart-Rent-System.git

2. Backend Setup

cd backend
npm install

Create .env file in the backend directory:

# Server Configuration
PORT=8000
NODE_ENV=development

# Database
MONGODB_URI=mongodb://localhost:27017/smartrent

# Authentication
JWT_SECRET=your_super_secret_jwt_key_change_in_production
JWT_EXPIRE=7d

# Cloudinary Configuration
CLOUDINARY_CLOUD_NAME=your_cloud_name
CLOUDINARY_KEY=your_api_key
CLOUDINARY_SECRET=your_api_secret

# Google OAuth (Optional)
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret

3. Frontend Setup

cd ../frontend
npm install

Create .env file in the frontend directory:

REACT_APP_API_URL=http://localhost:8000/api
REACT_APP_SOCKET_URL=http://localhost:8000

4. Launch Application

Terminal 1 - Backend:

cd backend
npm run server

Terminal 2 - Frontend:

cd frontend
npm run dev

5. Access the Application

Open your browser and navigate to:

http://localhost:3000

🎉 Congratulations! Smart-Rent is now running locally.


📚 Project Structure

Smart-Rent/
├── backend/
│   ├── config/              # Configuration files
│   ├── controllers/         # Request handlers
│   ├── middleware/          # Custom middleware
│   ├── models/              # Mongoose schemas
│   ├── routes/              # API routes
│   ├── utils/               # Helper functions
│   └── server.js            # Entry point
│
├── frontend/
│   ├── public/              # Static assets
│   ├── src/
│   │   ├── components/      # Reusable components
│   │   ├── pages/           # Page components
│   │   ├── redux/           # State management
│   │   ├── services/        # API services
│   │   ├── utils/           # Utility functions
│   │   └── App.js           # Root component
│   └── package.json
│
├── assets/                  # Project assets
├── docs/                    # Documentation
├── .gitignore
├── CONTRIBUTING.md
├── LICENSE
└── README.md

🔧 Configuration

Environment Variables Reference

Variable Description Required Default
PORT Backend server port 8000
MONGO_URL MongoDB connection string -
JWT_SECRET Secret key for JWT signing -
CLOUDINARY_CLOUD_NAME Cloudinary cloud name -
CLOUDINARY_KEY Cloudinary API key -
CLOUDINARY_SECRET Cloudinary API secret -

API Documentation

Once the backend is running, access API documentation at:

http://localhost:8000/api-docs

🐳 Docker Setup (Recommended)

This project supports Docker to simplify local development, reduce setup issues, and ensure a consistent development environment across systems.

Prerequisites

Make sure you have the following installed on your system:

  • Docker (v20+ recommended)
  • Docker Compose (v2+)

Verify installation:

docker --version
docker compose version

Clone the repository

git clone https://github.com/hitesh-kumar123/Smart-Rent-System.git
cd Smart-Rent-System

📁 Project Structure (Docker)

Docker uses a single .env file at the project root.

Smart-Rent-System/
├── backend/
│   └── Dockerfile         # Backend container
├── frontend/
│   └── Dockerfile         # Frontend container
├── docker-compose.yml     # Docker orchestration
├── .env                   # Required for Docker
└── README.md

🔐 Environment Variables

When using Docker, only one .env file is required at the root.

Create a .env file in the project root with the following content:

# Backend
PORT=8000
NODE_ENV=development
MONGODB_URI=mongodb://mongodb:27017/smartrent
JWT_SECRET=your_jwt_secret_here

# Optional (email service)
# RESEND_API_KEY=your_resend_key_here

# Frontend
REACT_APP_API_URL=http://localhost:8000

🚀 Running the Application with Docker

From the project root, run:

docker compose up --build

This will:

  • Build backend and frontend images
  • Start MongoDB
  • Start backend and frontend services
  • Automatically link all services together

🌐 Accessing the Application

Once the containers are running:

Frontend:

http://localhost:3000

Backend API:

http://localhost:8000

MongoDB:

mongodb://localhost:27017

🛑 Stopping the Application

To stop and remove all containers:

docker compose down

To stop containers but keep them:

docker compose stop

🔄 Rebuilding Containers (After Code Changes)

If you modify dependencies or Docker files:

docker compose up --build

🤝 Contributing

We ❤️ contributions! Smart-Rent is an open-source project built for Social Winter of Code (SWoC) 2026.

How to Contribute

1. Find an Issue

  • Browse existing issues
  • Look for labels: good first issue, help wanted, enhancement

2. Fork & Create Branch

# Fork the repository (click Fork button on GitHub)

# Clone your fork
git clone https://github.com/hitesh-kumar123/Smart-Rent-System.git
# Create a feature branch
git checkout -b feature/amazing-feature

3. Make Changes

# Make your changes
# Follow our coding standards (ESLint + Prettier)

# Test your changes
npm test

4. Commit & Push

# Commit with descriptive message
git commit -m "Add: Implement amazing feature"

# Push to your fork
git push origin feature/amazing-feature

5. Create Pull Request

  • Go to your fork on GitHub
  • Click "New Pull Request"
  • Fill out the PR template
  • Wait for review 🎉

Contribution Guidelines

📖 Read our CONTRIBUTING.md for detailed guidelines including:

  • Code style and formatting
  • Commit message conventions
  • Testing requirements
  • Documentation standards

Development Workflow

graph LR
    A[Fork Repo] --> B[Clone Locally]
    B --> C[Create Branch]
    C --> D[Make Changes]
    D --> E[Run Tests]
    E --> F[Commit]
    F --> G[Push to Fork]
    G --> H[Create PR]
    H --> I[Code Review]
    I --> J[Merge]
Loading

🗺️ Roadmap

✅ Phase 1 - Foundation (Completed)

  • Project scaffolding and architecture
  • User authentication system
  • Basic CRUD operations for listings
  • Responsive UI with Tailwind CSS

🚧 Phase 2 - Core Features (In Progress)

  • Map integration with Leaflet.js
  • [] Real-time chat with Socket.io
  • Advanced search and filtering
  • Booking calendar with conflict resolution
  • Review and rating system

🔮 Phase 3 - Advanced Features (Planned)

  • Payment gateway integration (Stripe/Razorpay)
  • Email notifications (SendGrid/Nodemailer)
  • Admin dashboard with analytics
  • Multi-language support (i18n)
  • Progressive Web App (PWA)

🌟 Phase 4 - Optimization (Future)

  • Performance optimization (lazy loading, code splitting)
  • SEO optimization
  • Automated testing (Jest, Cypress)
  • CI/CD pipeline (GitHub Actions)
  • Mobile native apps (React Native)

Want to influence the roadmap? Share your ideas


👥 Community

🌟 Project Admin

Hitesh Kumar
Hitesh Kumar



🏆 Top Contributors


⭐ Stargazers


🍴 Forkers


❤️ Support the Project

  



💙 If you like this project, consider starring ⭐ and forking 🍴 it to support the community!

💬 Join the Conversation

Discord Linkedin GitHub


📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

MIT License - Copyright (c) 2025 Smart Rent System Contributors
Permission is hereby granted, free of charge, to any person obtaining a copy...

🙏 Acknowledgments

Special thanks to:


🌟 Star History

Star History Chart

📊 Repository Stats

Repository Size Lines of Code Top Language


Made with ❤️ by the Smart Rent System Community

If this project helped you, give it a ⭐️!

⬆ Back to Top