Skip to content

shironzi/elliuro

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

ELLIURO PROPERTIES

ELLIURO PROPERTIES is a web platform inspired by Airbnb, allowing users to list, rent, or sell properties. Built with a microservices-based architecture, it focuses on scalability, complexity, and advanced backend features to solve real-world problems in property management.


🌟 Features

User Roles

  • Customer: Search, filter, book properties, and leave reviews.
  • Property Owner: List properties for rent/sale, manage availability, and respond to inquiries.
  • Admin: Moderate listings, reviews, and manage platform settings.
  • Support Agent: Resolve user issues and handle disputes.

Core Functionalities

  • Property Listings: Add detailed property descriptions, photos, and availability.
  • Search and Filters: Location-based search, pricing filters, and more.
  • Booking System: Real-time availability and instant booking for rentals.
  • Payment Integration: Secure payment handling via Stripe or PayPal.
  • Dynamic Pricing: Adjust rental prices based on demand and market trends.
  • Notifications: Email, SMS, and push notifications for updates.
  • Ratings and Reviews: Customers can rate properties and provide feedback.
  • Secure Payment Processing: Handle transactions securely with integrated payment gateways.
  • User Verification: Enhance trust by verifying user identities and property ownership.
  • Real-time Messaging: Enable direct communication between customers and property owners.
  • Analytics Dashboard: Provide property owners with insights into listing performance.

💻 Tech Stack

Frontend

  • React.js: Responsive and dynamic UI.
  • TypeScript: For type safety and better maintainability.
  • TailwindCSS: For modern, responsive design.

Backend

  • NestJS: Scalable, modular, and maintainable backend framework.
  • REST API: Service-to-service communication.
  • MySQL: Relational database for structured data.
  • Redis: Caching for fast search results and session storage.
  • Apache Kafka / RabbitMQ: Event-driven architecture.

Infrastructure

  • Docker & Kubernetes: For containerization and orchestration.
  • Azure: Cloud hosting and deployment.
  • NGINX: Load balancing and API gateway.

🚀 Getting Started

Prerequisites

  • Node.js: v16 or later
  • Docker: Installed and running
  • MySQL: Installed and configured

Installation

  1. Clone the repository:

    git clone https://github.com/shironzi/elliuro.git
    cd elliuro
  2. Install dependencies:

    cd frontend
    npm install
    
    cd ./backend
    npm install
  3. Set up environment variables: Create a .env file in the root directory and add the following:

    DATABASE_URL=mysql://username:password@localhost:3306/elliuro
    REDIS_URL=redis://localhost:6379
    STRIPE_SECRET_KEY=your-stripe-secret-key
  4. Run database migrations:

    npm run migrations
  5. Run the development server:

    npm run start:dev

Running with Docker

  1. Build and start the containers:

    docker-compose up --build
  2. Access the application at http://localhost:3000.


📂 Project Structure

elliuro-properties/
├── backend/               # Microservices backend code
│   ├── user-service/      # Manages users and roles
│   ├── property-service/  # Handles property listings
│   ├── booking-service/   # Manages bookings
│   ├── payment-service/   # Handles payments
│   └── notification-service/ # Email/SMS notifications
├── frontend/              # React.js frontend
├── docker-compose.yml     # Docker setup
├── README.md              # Project documentation
└── .env                   # Environment variables

🛠️ Development

Scripts

  • npm run start:dev: Start the NestJS development server.
  • npm run build: Build the project for production.
  • npm run test: Run tests for the project.

📈 Scalability Features

  • Microservices Architecture: Independent services for modularity.
  • Event-Driven Design: Kafka/RabbitMQ for seamless communication.
  • Database Partitioning: Schema design optimized for scalability.
  • Load Balancing: NGINX distributes traffic efficiently.

🐛 Issues & Contributions

We welcome contributions! Please follow the steps below:

  1. Fork the repository.
  2. Create a new branch:
    git checkout -b feature/your-feature-name
  3. Commit your changes and push to your fork.
  4. Open a pull request.

👩‍💻 Authors

  • Shironzi: Lead Developer

📜 License

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published