Saltar al contenido
Gestión de alquileres ← Todos los proyectos

Habita

Aplicación full-stack para administrar edificios de alquiler: habitaciones, inquilinos, contratos y pagos.

Sistema interno de gestión de propiedades residenciales construido con React y Django. Cubre el ciclo completo: registrar unidades, asignar inquilinos, generar contratos y hacer seguimiento de pagos con estados de mora.

Demo · pronto GitHub
Propósito Backend con 7 modelos relacionados (incluida una tabla de auditoría), autenticación JWT con rotación de tokens, y un frontend en repo separado que consume la API vía Docker Compose.
Resultado clave 83 tests de backend + 102 de frontend corriendo en CI, con cobertura mínima del 60%.
Stack
React 19Django 5PostgreSQLReact QueryTailwind CSSJWT
(01) Problema

Gestionar un edificio de alquiler sin herramientas adecuadas genera fricción operativa.

El objetivo era construir una herramienta interna que centralizara la administración de unidades, contratos y pagos, eliminando el seguimiento manual disperso en planillas.

  1. El seguimiento de pagos y mora era manual y propenso a errores.
  2. No había forma de ver rápido el estado de ocupación del edificio.
  3. Cada contrato y su historial de pagos vivía en documentos separados sin relación.
(02) Solución

Aplicación full-stack con dominio modelado alrededor del ciclo de alquiler.

Se construyó un sistema con módulos independientes por dominio (habitaciones, inquilinos, contratos, pagos) con un dashboard que centraliza el estado general del edificio.

  1. Dashboard con indicadores clave: vacantes, mora y contratos activos.
  2. Registro y seguimiento de pagos con estados (pendiente, pagado, parcial, vencido).
  3. Formulario rápido de pago accesible desde cualquier pantalla del sistema.
(03) Arquitectura

Stack full-stack desacoplado con frontend en React y API REST en Django.

El backend expone una API versionada con DRF y JWT. El frontend consume esa API con React Query, manteniendo estado del servidor y cliente separados.

Frontend

React 19 + React Router 7 con React Query para server state y Zustand para auth.

API

Django REST Framework con serializers, filtros y autenticación JWT por dominio.

Base de datos

PostgreSQL con relaciones entre habitaciones, contratos e inquilinos modeladas en Django ORM.

(04) Stack y decisiones

El stack combina Django REST Framework y React para un sistema de gestión robusto, con separación clara entre API y frontend que facilita escalar cada capa de forma independiente.

React 19Django 5PostgreSQLReact QueryTailwind CSSJWT
  1. Refresh token rotado en cookie httpOnly con SameSite=Strict; el access token vive solo en memoria (Zustand) y nunca toca almacenamiento persistente, para reducir superficie de robo ante XSS.
  2. Sincronización entre dominios: un servicio dedicado actualiza el estado ocupado/disponible de la habitación cuando cambia el contrato asociado, en vez de depender de queries manuales.
  3. El estado de mora se recalcula con un management command (`marcar_morosos`, con soporte `--dry-run`) que revisa contratos activos con pagos vencidos, pensado para ejecutarse manualmente o vía scheduler externo.
(05) Resultados
01

83 tests de backend + 102 de frontend corriendo en CI, con cobertura mínima del 60%.

02

Invalidación de caché consciente del dominio en React Query: pagar una cuota también invalida el contrato asociado (por el recálculo de garantía) y actualiza la disponibilidad de la habitación en el dashboard.

03

Modelo de dominio con 7 entidades relacionadas —incluida una tabla de auditoría (AuditLog)— para trazabilidad completa del ciclo habitación → contrato → pago.

(06) Siguiente paso

¿Hablamos sobre una oportunidad similar?