Portal público · Paneles por rol · Web API REST protegida con JWT
RealEstateApp es una aplicación web para la gestión integral de propiedades inmobiliarias construida con ASP.NET Core 9 aplicando Onion Architecture al 100%. Permite:
- 🌐 Consultar, filtrar y buscar propiedades sin necesidad de iniciar sesión.
- 👤 Que los clientes marquen favoritos, chateen con agentes y realicen ofertas.
- 🧑💼 Que los agentes gestionen sus propiedades, respondan mensajes y acepten/rechacen ofertas.
- 🛡️ Que los administradores gestionen usuarios, agentes, desarrolladores y catálogos.
- 🔌 Exponer una Web API protegida con JWT para administradores y desarrolladores.
🎯 Objetivo: administrar de manera integral el registro, consulta, publicación y seguimiento de propiedades para venta o alquiler, garantizando control de acceso, seguridad de datos y separación de responsabilidades entre la WebApp y los servicios expuestos.
| Necesidad | Solución en RealEstateApp |
|---|---|
| 🔎 Un visitante quiere explorar propiedades sin registrarse | Portal público con listado, filtros combinables y búsqueda por código |
| 💬 Un cliente quiere negociar con un agente | Chat integrado + sistema de ofertas con estados |
| 🧑💼 Un agente necesita administrar su inventario | Mantenimiento CRUD con código único, imágenes y control de estado |
| 🛡️ Un administrador debe controlar usuarios y catálogos | Panel con dashboard, gestión de usuarios y mantenimientos con borrado en cascada |
| 🔌 Un sistema externo necesita consumir datos de forma segura | Web API REST versionada, protegida con JWT y documentada con Swagger |
| 🔐 Control de acceso estricto | ASP.NET Identity + roles + filtros de autorización en navegación y URL directa |
|
🌐 Portal público
|
👤 Cliente
|
|
🧑💼 Agente
|
🛡️ Administrador + 🔌 API
|
graph TB
subgraph Presentación
WEB["🖥️ WebApp (MVC 9)"]
API["🔌 Web API (JWT)"]
end
subgraph Core
APP["📦 Application"]
DOM["💠 Domain"]
end
subgraph Infraestructura
PER["🗄️ Persistence"]
IDE["🔐 Identity"]
SHA["✉️ Shared"]
end
IOC["🧩 IOC"]
WEB --> APP
API --> APP
APP --> DOM
PER --> DOM
IDE --> APP
SHA --> APP
IOC -.->|Composition Root| APP
8 proyectos · Onion Architecture · Repositorios y servicios genéricos · AutoMapper · ValidationResult<T> para el flujo de negocio sin excepciones.
👉 Detalle completo en Arquitectura.
# 1. Clonar
git clone https://github.com/JoelAlBenitez/RealEstateApp.git
cd RealEstateApp
# 2. Configurar cadena de conexión, EmailSettings y JwtSettings (user-secrets)
# 3. Aplicar migraciones (contextos de negocio e Identity)
dotnet ef database update --project Source/Infraestructure/RealEstateApp.Infraestructure.Persistence --startup-project Source/Presentation/RealEstateApp.Presentation.WebApp
dotnet ef database update --project Source/Infraestructure/RealEstateApp.Infraestructure.Identity --startup-project Source/Presentation/RealEstateApp.Presentation.WebApp
# 4a. Ejecutar la WebApp
cd Source/Presentation/RealEstateApp.Presentation.WebApp && dotnet run
# 4b. Ejecutar la Web API (Swagger en /swagger)
cd Source/Presentation/RealEstateApp.Presentation.Api && dotnet run👉 Guía detallada en Instalación y Ejecución.
| Categoría | Tecnología |
|---|---|
| Framework | ASP.NET Core 9 (MVC + Web API) |
| Persistencia | Entity Framework Core 9 (Code First) + SQL Server |
| Identidad | ASP.NET Core Identity |
| API | JWT Bearer · Asp.Versioning · Swagger (Swashbuckle) |
| Mapeo | AutoMapper 16 |
| Correos | MailKit + MimeKit |
| UI | Bootstrap 5 · jQuery · CSS modular |
| Arquitectura | Onion Architecture · Repository · Service Layer · DTO/ViewModel |
Toda la documentación técnica y funcional vive en la carpeta docs/, conectada entre sí:
| # | Documento | Contenido | Responsable |
|---|---|---|---|
| 🧅 | 01 · Arquitectura | Onion Architecture, capas, patrones, flujo de petición, DI | Equipo |
| ⚙️ | 02 · Instalación y Ejecución | Requisitos, configuración, migraciones, seeds, troubleshooting | Equipo |
| 🗄️ | 03 · Modelo de Datos | Entidades, relaciones (ERD), enums, ciclos de estado, cascada | Equipo |
| 🌐 | 04 · Funcionalidades Generales | Home público, agentes, registro, login | 👑 Joel |
| 👤 | 05 · Módulo Cliente | Favoritos, chat, ofertas | 🧑💼 Sebastián |
| 🧑💼 | 06 · Módulo Agente | Mantenimiento, ofertas recibidas, perfil | 🧑💼 Sebastián |
| 🛡️ | 07 · Módulo Administrador | Dashboard, usuarios, catálogos | 🛡️ Adrián |
| 🔌 | 08 · Web API REST | Endpoints, JWT, códigos HTTP, ejemplos | 👑 Joel |
| 🔐 | 09 · Seguridad | Identity, autorización por rol, seeds | 👑 Joel |
| 👥 | 10 · Equipo y Decisiones | Responsabilidades, decisiones, convenciones, QA | Equipo |
📄 Documentos funcionales originales (PDF): Documento Funcional · Rúbrica WebApp · Rúbrica WebApi
| Avatar | Desarrollador | Rol | Módulos |
|---|---|---|---|
| 👑 | Joel Benítez | Líder técnico · Code review · Reglas de negocio · Wireframes/UI-UX | Portal público, Login, Identity/Usuarios, Web API, Seguridad |
| 🛡️ | Adrián Brito | Backend / Fullstack | Módulo Administrador, mantenimientos y catálogos |
| 🧑💼 | Sebastián Peguero | Backend / Fullstack | Módulos Agente y Cliente |
👉 Reparto detallado y decisiones en Equipo y Decisiones.
flowchart LR
subgraph Público
V["🌐 Visitante"]
end
subgraph "Autenticados (WebApp)"
C["👤 Cliente"]
A["🧑💼 Agente"]
AD["🛡️ Administrador"]
end
subgraph "API (JWT)"
D["🧑💻 Desarrollador"]
end
V -->|registro| C
V -->|registro| A
AD -.gestiona.-> A
AD -.gestiona.-> D
AD --> API_ACCESS["🔌 Consume API"]
D --> API_ACCESS
| Rol | WebApp | API |
|---|---|---|
| 👤 Cliente | ✅ | ⛔ |
| 🧑💼 Agente | ✅ | ⛔ |
| 🛡️ Administrador | ✅ | ✅ |
| 🧑💻 Desarrollador | ⛔ | ✅ |
RealEstateApp/
├── 📄 README.md ← este archivo (índice general)
├── 📁 docs/ ← documentación técnica y funcional (MD + PDF)
├── 📄 RealEstateApp.sln
└── 📁 Source/
├── 📁 Core/ → Domain · Application
├── 📁 Infraestructure/ → Persistence · Identity · Shared
├── 📁 Presentation/ → WebApp (MVC) · Api (REST)
└── 📁 RealStateApp.IOC/ → Composition Root
RealEstateApp — Desarrollado por Joel Benítez, Adrián Brito y Sebastián Peguero
🧅 Onion Architecture · 🔐 Secure by design · 🇩🇴 Precios en DOP