Reservas & Mapas

Sistema de Reservaciones de Hospedaje

Sistema hecho para gestionar reservaciones de distintos tipos de hospedaje en varias sedes de parques del Festival de las Luciérnagas, ubicados en un mapa interactivo, aplicando reglas de negocio de temporada, disponibilidad y capacidad.

Jun—Ago

Temporada del festival

3 roles

Visitante, Cliente, Admin

4 patrones

Facade, Template, Observer, Adapter

Mapa en vivo

Leaflet + OpenStreetMap

# Cada reservación pasa por el formulario, el facade y el template method antes de guardarse

Resumen

Proyecto final de Ingeniería de Software, desarrollado con Django para el Festival de Luciérnagas: varios parques participantes, cada uno con sus servicios y distintos tipos de hospedaje, que el visitante puede explorar en un catálogo y ubicar en un mapa interactivo antes de reservar.

El sistema distingue tres tipos de uso: visitantes que exploran el catálogo público, clientes autenticados que crean y gestionan sus reservaciones, y administradores que gestionan parques, servicios, hospedajes y consultan todas las reservaciones.

Rol

Desarrollo en equipo (5 integrantes)

Estado

Proyecto académico, demostración en línea

Materia

Ingeniería de Software

Despliegue

Docker en servidor personal

Cómo funciona

Explorar Parques

Catálogo con filtros y mapa interactivo con Leaflet/OpenStreetMap.

Formulario de Reserva

El cliente elige fechas, unidades y huéspedes para un hospedaje.

Facade + Template Method

Se validan temporada, disponibilidad y reglas de mantenimiento.

Observer notifica

La reservación queda activa y se notifica su creación o cancelación.

Funcionalidades clave

Catálogo de Parques con Mapa

Listado público con filtros por estado, hospedaje y servicios, además de un mapa interactivo construido con un patrón Adapter para Leaflet/OpenStreetMap.

Roles y Permisos

Usuario personalizado con roles de Cliente y Administrador, e inicio de sesión con Google vía django-allauth.

Reglas de Reservación

Validación de temporada, disponibilidad, capacidad y días de mantenimiento antes de confirmar cada reserva.

Patrones de Diseño

Facade para crear/cancelar reservas, Template Method para el flujo de creación, Observer para notificaciones y Adapter para el mapa.

Stack Tecnológico

Backend

Python Python Django Django

Datos

SQLite SQLite

Mapas

Leaflet OpenStreetMap

Auth & UI

django-allauth django-crispy-forms Tailwind CSS

Arquitectura

  • Apps separadas por dominio: usuarios, parques y reservaciones
  • Modelo de usuario personalizado con roles CLIENTE y ADMINISTRADOR
  • ReservacionFacade y ReservacionTemplate encapsulan la lógica de creación y cancelación
  • MapaAdapter permite intercambiar OpenStreetMap por otro proveedor sin tocar las vistas
  • Contenerizado con Docker y desplegado en el home lab personal

Reglas de reservación

La estancia debe caer dentro de la temporada del festival: junio, julio y agosto
No se permiten noches en martes, reservados como días de mantenimiento
Las unidades reservadas deben cubrir la capacidad según el número de huéspedes
No se permite sobre-reservar unidades con reservaciones activas en el mismo periodo
Las reservaciones en temporada reciben un recargo del 20%
La estancia máxima para un hospedaje es de 30 noches

Lo desarrollamos en equipo para la materia de Ingeniería de Software, aplicando patrones de diseño reales (Facade, Template Method, Observer, Adapter) a un sistema de reservaciones con reglas de negocio complejas.

— Jesús Romero, desarrollador

¿Quieres ver más proyectos?

Regresa al portafolio para conocer el resto de mi trabajo.

Volver al portafolio