An Enterprise-grade Property Management Solution built with ASP.NET Core 8 MVC.
- General Info
- Screenshots
- Features & Roles
- Learning Outcomes
- System Architecture
- Dependencies
- Installation
- Usage
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:
- Financial Integrity: Owners must actively approve rent payments before they are recorded as revenue.
- Maintenance Workflow: A complete cycle for reporting, approving, and fixing issues.
- Dynamic Occupancy: The system calculates unit status (Occupied vs. Vacant) based on active lease contracts dates, not just static flags.
Here is a visual tour of the platform based on different user roles:
| Admin Dashboard | Owner Dashboard |
|---|---|
| Global view of all properties and revenue. | Personalized view for specific assets & approvals. |
![]() |
![]() |
| Tenant List | Contract Creation |
|---|---|
| Managing tenants and their current status. | Linking tenants to units with financial validation. |
![]() |
![]() |
| Onboarding Owner | Onboarding Tenant |
|---|---|
| Registering new landlords. | Adding new residents to the system. |
![]() |
![]() |
The system is engineered around Role-Based Access Control (RBAC):
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.
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.
- Financials: View due installments and upload payment receipts/proofs.
- Services: Report issues (Plumbing, Electrical, etc.) with photos.
- Profile: View lease terms and history.
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.
- 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.
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)
Follow these steps to run the project locally:
-
Clone the Repository:
git clone https://github.com/NaderRh/ProEstate-Management-System.git
-
Configure Database: Open appsettings.json and update the connection string:
"ConnectionStrings": { "DefaultConnection": "Server=.;Database=ProEstateDb;Trusted_Connection=True;TrustServerCertificate=True;" }
-
Apply Migrations: Open the Package Manager Console in Visual Studio and run:
Update-Database
-
Run the Application: Press F5 or run:
dotnet run
- Screenshots: Located in the /Assets folder.
- Database Script: (Optional: Link to SQL script if available).
- Admin logs in and adds a new Owner.
- Admin registers a Property under that Owner and adds Units.
- Admin creates a Lease Contract for a new Tenant.
- System automatically generates monthly Installments.
- Tenant logs in and uploads a receipt for "January Rent".
- Owner logs in, sees the pending request, and clicks "Confirm Payment".
- Tenant submits a "Broken AC" request.
- Owner reviews and clicks "Approve Maintenance".
Developed with ❤️ by Nader Rahoumah
- MVC Architecture: Separation of concerns using Models, Views (Razor), and Controllers.
- Complex Database Relationships: Handling the hierarchy of Owner -> Property -> Unit -> Contract -> Installment.





