A robust, enterprise-level Real Estate Management System built with .NET 9 and Clean Architecture.
Real Estate App es una plataforma integral diseñada para la gestión inmobiliaria. Permite a agentes, clientes y administradores interactuar en un ecosistema donde se pueden publicar propiedades, gestionar favoritos, realizar ofertas y enviar mensajes.
El sistema está dividido en dos interfaces principales:
- WebApp (MVC): Aplicación orientada a usuarios finales, agentes y administradores con interfaces renderizadas del lado del servidor.
- Web API: Interfaz RESTful securizada con JWT, diseñada para ser consumida por aplicaciones móviles o clientes de terceros.
- 🏢 Gestión de Propiedades: CRUD completo de propiedades con soporte para múltiples imágenes (Galería).
- 🏷️ Categorización: Clasificación por Tipos de Propiedad (Casas, Apartamentos, etc.), Tipos de Venta (Venta, Alquiler) y Mejoras (Piscina, Gimnasio).
- ❤️ Favoritos: Los usuarios pueden marcar propiedades como favoritas para su seguimiento.
- 💬 Mensajería Interna: Sistema de comunicación integrado entre clientes y agentes.
- 🤝 Ofertas: Sistema de negociación que permite a los clientes realizar ofertas formales por las propiedades.
- 🔐 Autenticación y Autorización: Roles definidos (Administrador, Agente, Cliente) utilizando ASP.NET Core Identity y JWT.
- 🐋 Docker Ready: Preparado para ser desplegado fácilmente en contenedores (Ej: Render, AWS, Azure).
El proyecto sigue rigurosamente los principios de Clean Architecture, asegurando que el dominio central sea independiente de los frameworks y la infraestructura.
RealStateApp/
├── Core/
│ ├── RealEstateApp.Core.Domain # Entidades (Property, Message, Offer, etc.), Interfaces
│ └── RealEstateApp.Core.Application # Casos de uso, DTOs, Mappers, Servicios, Interfaces
├── Infrastructure/
│ ├── RealEstateApp.Infrastructure.Persistence # EF Core DbContext, Repositorios, Migraciones
│ ├── RealEstateApp.Infrastructure.Identity # Autenticación, Usuarios, Roles (Identity/JWT)
│ └── RealEstateApp.Infrastructure.Shared # Servicios externos (Email, Uploads, etc.)
└── Presentation/
├── RealEstateApi # API RESTful, Controladores, Swagger
└── RealEstateApp # Aplicación Web MVC (Vistas, Controladores UI)
- Backend: .NET 9 (C# 13)
- ORM: Entity Framework Core 9.0
- Base de Datos: SQL Server
- Arquitectura: Clean Architecture, Repository Pattern, Dependency Injection.
- Autenticación: ASP.NET Core Identity & JWT Bearer Tokens.
- Documentación API: Swagger / OpenAPI.
- .NET 9 SDK
- SQL Server (LocalDB o instancia de servidor)
- Docker Desktop (Opcional, para ejecución en contenedores)
-
Clonar el repositorio:
git clone https://github.com/Johanvasquezdev/RealStateApp.git cd RealStateApp -
Configurar Cadena de Conexión: Actualiza el archivo
appsettings.jsonoappsettings.Development.jsonen los proyectos RealEstateApp y RealEstateApi con tu cadena de conexión local. -
Aplicar Migraciones y Poblar BD: Abre la consola del Administrador de Paquetes en Visual Studio (o usa el CLI) apuntando a
Infrastructure.Persistence:dotnet ef database update --project RealEstateApp.Infrastructure.Persistence --startup-project RealEstateApp/RealEstateApp.csproj
-
Ejecutar: Puedes establecer
RealEstateAppoRealEstateApicomo proyecto de inicio y ejecutarlo.
El proyecto incluye dos archivos Docker en la raíz, optimizados para desplegar en servicios como Render:
- Aplicación Web (MVC): Utiliza el archivo
Dockerfile. - Web API: Utiliza el archivo
Dockerfile.Api.
Pasos en Render:
- Crea un nuevo Web Service.
- Conecta este repositorio.
- Selecciona el entorno Docker.
- En Dockerfile Path, ingresa
Dockerfile(para la Web) oDockerfile.Api(para la API). - Agrega tus variables de entorno necesarias (ej.
ConnectionStrings__DefaultConnectionapuntando a tu base de datos en la nube).
Render automáticamente detectará la exposición del puerto 8080 e inyectará su propio balanceador de carga, por lo que no hace falta mapear puertos extra.
Desarrollado con ❤️ por Johan Vasquez