Plataforma integral Full Stack diseñada para la gestión operativa y comercial de una empresa inmobiliaria. El sistema combina un portal público de búsqueda avanzada con un panel de administración (CRM) para la gestión de propiedades, propietarios y redes de colegas.
Podes probar la aplicación desplegada aquí: 🔗 Ver Proyecto Online
Para acceder al Panel de Gestión, utiliza estas credenciales de prueba:
- URL Admin:
/admin/login.html - Usuario:
demo@admin.com - Contraseña:
admin123
Este proyecto no es solo un CRUD; simula la lógica de negocio real de una inmobiliaria.
El negocio inmobiliario se basa en la colaboración.
- Problemática: A veces no tenemos la propiedad que el cliente busca, pero un colega sí.
- Solución: Implementé un Mapa Privado (visible solo para admins) que muestra tanto nuestra cartera ("Propia") como la de "Colegas".
- Intermediación (White-labeling): El sistema permite gestionar PDFs de propiedades de colegas. La idea es poder descargar/enviar la ficha técnica de la propiedad de un tercero, pero presentada bajo nuestra marca, protegiendo así el contacto con el cliente final.
Para este portfolio, no quería una base de datos vacía o con datos "lorem ipsum" sin sentido.
- Geolocalización Real: Los datos generados ("Seeders") sitúan las propiedades en el corredor sur de Buenos Aires (Berazategui, Quilmes, Hudson) con coordenadas reales para que el mapa sea funcional.
- Estado de Recursos (Marketing):
- En la vida real, no siempre tenemos las fotos, videos o planos (PDF) listos al momento de cargar la propiedad.
- Lógica del Demo: El script de llenado de BBDD genera intencionalmente un 70% de propiedades con recursos completos (Video/PDF) y un 30% sin ellos.
- Utilidad: Esto permite visualizar en el Dashboard qué propiedades tienen "faltantes" (marcados con ❌), sirviendo como alerta para que el equipo de marketing sepa qué materiales debe producir.
- Node.js & Express: Arquitectura MVC (Model-View-Controller) con capas de Servicios (
PropertyService) para desacoplar la lógica de negocio. - PostgreSQL: Base de datos relacional robusta.
- Sequelize ORM: Manejo de modelos, relaciones (1:N) y validaciones.
- Seguridad: Autenticación vía JWT, hashing de contraseñas con
bcryptjsy protección de rutas.
- HTML5, SASS/SCSS & Bootstrap 5: Diseño responsivo y limpio.
- JavaScript (Vanilla): Lógica del lado del cliente para mapas interactivos (Leaflet.js), formularios dinámicos y consumo de APIs.
- Base de Datos: Alojada en Neon Tech (PostgreSQL Serverless) con conexión segura SSL.
- Aplicación: Desplegada en Render.
- Seeding Automático: Script personalizado que regenera la base de datos con 50 propiedades, agentes y propietarios ficticios en cada despliegue para mantener el entorno de demo siempre listo.
Este repositorio es una adaptación de un sistema real que desarrollé e implementé para el cliente. En el entorno productivo real, la arquitectura es más compleja:
- Servidor: VPS Linux administrado (Ubuntu).
- Web Server: Nginx configurado como Reverse Proxy y servidor de estáticos.
- Network & Seguridad: Implementación de Cloudflare para gestión de DNS, protección DDoS y CDN.
- Ciclo de Vida (SDLC): Establecí un flujo de trabajo profesional con un entorno de QA (Quality Assurance) separado. Esto permite desplegar y probar nuevas funcionalidades en un subdominio de pruebas antes de impactar en el sitio de Producción.
Para evitar la carga manual de datos, desarrollé un sistema de generación de datos mock:
generateMockData.js: Crea archivos JSON con datos coherentes (nombres latinos, teléfonos locales, precios lógicos según moneda y tipo).seedDatabase.js: Lee estos JSONs y utilizaSequelize BulkCreatepara insertar masivamente propiedades, usuarios y relaciones, asignando imágenes reales de Unsplash según la categoría (Industrial, Vivienda, etc.).
Si deseas correr este proyecto en tu máquina:
-
Clonar el repositorio:
git clone [https://github.com/Daniela-N-Romero/real-estate-crm-project.git](https://github.com/Daniela-N-Romero/real-estate-crm-project.git) cd real-estate-crm-project -
Instalar dependencias:
npm install
-
Configurar Variables de Entorno: Crear un archivo
.envy configurar tus credenciales de base de datos local (PostgreSQL). -
Sembrar la Base de Datos:
npm run seed
-
Iniciar el Servidor:
npm run dev
Visita
http://localhost:3000.
Actualmente, esta es una versión Demo/Portfolio. Funcionalidades como la exportación a Excel, edición avanzada de perfiles de usuario y otras funcionalidades más complejas están en el roadmap de desarrollo o presentes en la versión privada del cliente.
Desarrollado por Daniela Romero Full Stack Developer