Skip to content

An enterprise-grade Real Estate Management System (MVC) featuring dynamic lease tracking, financial approval workflows, and dedicated portals for Admins, Owners, and Tenants.

Notifications You must be signed in to change notification settings

NaderRh/ProfEstate

Repository files navigation

🏢 ProEstate - Real Estate Management System (MVC)

An Enterprise-grade Property Management Solution built with ASP.NET Core 8 MVC.

.NET Architecture UI Database Status


📋 Table of Contents


🧐 General Info

ProEstate is a comprehensive Full-Stack web application designed to digitize the complex ecosystem of real estate management. It bridges the gap between Real Estate Agencies (Admins), Property Owners, and Tenants.

Unlike simple CRUD applications, ProEstate solves critical operational problems:

  1. Financial Integrity: Owners must actively approve rent payments before they are recorded as revenue.
  2. Maintenance Workflow: A complete cycle for reporting, approving, and fixing issues.
  3. Dynamic Occupancy: The system calculates unit status (Occupied vs. Vacant) based on active lease contracts dates, not just static flags.

📸 Screenshots

Here is a visual tour of the platform based on different user roles:

📊 Dashboards & Overview

Admin Dashboard Owner Dashboard
Global view of all properties and revenue. Personalized view for specific assets & approvals.
Admin Owner

👥 Tenant & Lease Management

Tenant List Contract Creation
Managing tenants and their current status. Linking tenants to units with financial validation.
Tenants Create Contract

📝 Data Entry Forms

Onboarding Owner Onboarding Tenant
Registering new landlords. Adding new residents to the system.
Add Owner Add Tenant

🌟 Features & Roles

The system is engineered around Role-Based Access Control (RBAC):

1. 🛡️ Admin (System Manager)

The orchestrator of the platform.

  • Asset Management: Registers Owners, Properties, and Units.
  • Contract Lifecycle: Creates, renews, and terminates Lease Contracts.
  • Global Monitoring: Tracks total system commissions and occupancy rates.

2. 💼 Owner (Decision Maker)

An active operational role, not just a passive viewer.

  • 💰 Financial Control:
    • Receives notifications of rent payments uploaded by tenants.
    • Action: Must Confirm or Reject payments to update balances.
  • 🛠️ Maintenance Control:
    • Reviews maintenance tickets submitted by tenants.
    • Action: Approve Repair (deducted from revenue) or Reject Request.
  • Portfolio View: Sees only their own properties and tenants.

3. 👥 Tenant (End User)

  • Financials: View due installments and upload payment receipts/proofs.
  • Services: Report issues (Plumbing, Electrical, etc.) with photos.
  • Profile: View lease terms and history.

🧠 Learning Outcomes

Building ProEstate required mastering advanced .NET concepts: 3. Business Logic Implementation: * Smart Status Engine: Calculating if a tenant is "Current" based on date ranges. * Financial Workflow: Implementing the "Pending -> Approved" logic for transactions. 4. Soft Deletes: Preserving historical data for contracts and tenants instead of permanent deletion.


🏗️ System Architecture

  • Frontend: ASP.NET Core Razor Views + Bootstrap 5 + jQuery.
  • Backend: ASP.NET Core 8 MVC.
  • Database: SQL Server using Entity Framework Core (Code-First).
  • Security: ASP.NET Core Identity for Authentication & Authorization.
  • Mapping: AutoMapper for converting Entities to ViewModels.

📦 Dependencies

The project relies on these key NuGet packages:

  • Microsoft.EntityFrameworkCore.SqlServer
  • Microsoft.AspNetCore.Identity.EntityFrameworkCore
  • AutoMapper.Extensions.Microsoft.DependencyInjection
  • FluentValidation.AspNetCore
  • NToastNotify (For toaster notifications)

🛠️ Installation

Follow these steps to run the project locally:

  1. Clone the Repository:

    git clone https://github.com/NaderRh/ProEstate-Management-System.git

  2. Configure Database: Open appsettings.json and update the connection string:

    "ConnectionStrings": { "DefaultConnection": "Server=.;Database=ProEstateDb;Trusted_Connection=True;TrustServerCertificate=True;" }

  3. Apply Migrations: Open the Package Manager Console in Visual Studio and run:

    Update-Database

  4. Run the Application: Press F5 or run:

    dotnet run


📂 Assets

  • Screenshots: Located in the /Assets folder.
  • Database Script: (Optional: Link to SQL script if available).

🚀 Usage Scenario (The "Happy Path")

  1. Admin logs in and adds a new Owner.
  2. Admin registers a Property under that Owner and adds Units.
  3. Admin creates a Lease Contract for a new Tenant.
  4. System automatically generates monthly Installments.
  5. Tenant logs in and uploads a receipt for "January Rent".
  6. Owner logs in, sees the pending request, and clicks "Confirm Payment".
  7. Tenant submits a "Broken AC" request.
  8. Owner reviews and clicks "Approve Maintenance".

Developed with ❤️ by Nader Rahoumah

  1. MVC Architecture: Separation of concerns using Models, Views (Razor), and Controllers.
  2. Complex Database Relationships: Handling the hierarchy of Owner -> Property -> Unit -> Contract -> Installment.

About

An enterprise-grade Real Estate Management System (MVC) featuring dynamic lease tracking, financial approval workflows, and dedicated portals for Admins, Owners, and Tenants.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published