Gestión de Habitaciones
Iván Bazaga
Desarrollador Junior
# 🏔️ Sistema de Gestión de Reservas para Refugio de Montaña
Aplicación web completa para la gestión eficiente de reservas de camas en refugios de montaña
# 📖 Descripción del Proyecto
Refugio es un sistema integral de gestión de reservas diseñado específicamente para refugios de montaña y albergues. La aplicación permite a los administradores gestionar usuarios, habitaciones y reservas, mientras que los socios pueden consultar disponibilidad en tiempo real y realizar reservas de forma sencilla e intuitiva.
# 🎯 Características Principales
- 🔐 Sistema de autenticación seguro con roles diferenciados (Admin/Usuario)
- 📅 Calendario interactivo que muestra disponibilidad de camas en tiempo real
- 👥 Gestión completa de usuarios con perfiles de socios
- 🛏️ Control de habitaciones y camas con estados de ocupación
- ✅ Flujo de aprobación de reservas para administradores
- 👨👩👧👦 Gestión de acompañantes (socios y no socios)
- 📊 Panel de administración con estadísticas y métricas
- 📱 Diseño responsive optimizado para móviles y tablets
- 🔒 Seguridad robusta con contraseñas hasheadas y protección contra inyecciones SQL
# 💡 ¿Para quién es este proyecto?
Este sistema es ideal para:
- Refugios de montaña que necesitan gestionar reservas de camas
- Clubes de montaña con refugios propios
- Albergues que requieren un sistema de reservas simple y eficiente
- Organizaciones que gestionan espacios compartidos con sistema de socios
# 📋 RESUMEN DEL PROYECTO - SISTEMA DE CONTROL DE CAMAS
# ✅ Estado Actual del Proyecto
Fecha: 23 de Octubre de 2025
Versión: 1.0.0
Estado: ✅ COMPLETADO Y FUNCIONAL
# 🎯 Objetivos Cumplidos
# ✅ Base de Datos
- Esquema PostgreSQL completo con ENUMS
- Esquema MySQL alternativo
- Tabla de usuarios con contraseñas hasheadas (bcrypt)
- Tabla de habitaciones y camas
- Tabla de reservas con estados
- Tabla de acompañantes
- Datos de prueba incluidos
# ✅ Panel Administrador (viewAdmin.php)
- Dashboard con estadísticas
- Gestión completa de usuarios (CRUD)
- Visualización de reservas pendientes
- Aprobación/rechazo de reservas
- Estado de ocupación de habitaciones
- Interfaz responsive y moderna
# ✅ Panel Usuario (viewSocio.php)
- Calendario interactivo de disponibilidad
- Indicadores visuales de camas disponibles
- Formulario de nueva reserva
- Selección dinámica de camas disponibles
- Gestión de acompañantes (socios/no socios)
- Campo de actividad y comentarios
- Visualización de mis reservas
- Cancelación de reservas pendientes
# ✅ Autenticación y Seguridad
- Sistema de login con email y contraseña
- Contraseñas hasheadas con password_hash()
- Verificación con password_verify()
- Protección SQL Injection (PDO)
- Protección XSS (htmlspecialchars)
- Regeneración de ID de sesión
- Cookies HttpOnly
- Validación de roles
# ✅ Funciones del Sistema
- Conexión a BD PostgreSQL/MySQL
- 30+ funciones en functions.php
- API AJAX para disponibilidad
- Sistema de logout
- Sanitización de datos
# 📁 Estructura de Archivos Creados/Modificados
Refugio/
├── 📄 conexion.php (✅ Actualizado - PostgreSQL)
├── 📄 functions.php (✅ Creado completo - 30+ funciones)
├── 📄 index.php (✅ Existente)
├── 📄 login.php (✅ Actualizado - nuevos roles)
├── 📄 logout.php (✅ Existente)
├── 📄 viewAdmin.php (✅ Creado completo - Dashboard + CRUD)
├── 📄 viewSocio.php (✅ Creado completo - Calendario + Reservas)
├── 📄 disponibilidad.php (✅ Creado - API AJAX)
├── 📄 update_passwords.php (✅ Actualizado)
├── 📄 config.example.php (✅ Creado - Configuración)
├── 📄 .gitignore (✅ Creado)
├── 📄 README.md (✅ Creado - Documentación completa)
├── 📄 INICIO_RAPIDO.md (✅ Creado - Guía rápida)
├── 📄 MEJORAS_FUTURAS.md (✅ Creado - Roadmap)
├── sql/
│ ├── 📄 refugio.sql (✅ Actualizado - PostgreSQL + acompañantes)
│ └── 📄 refugio_mysql.sql (✅ Creado - Versión MySQL)
└── assets/
├── css/
│ └── 📄 style.css (✅ Creado - Estilos personalizados)
└── js/
└── 📄 utils.js (✅ Creado - Utilidades JS)# 🔑 Usuarios de Prueba
| Rol | Contraseña | Nº Socio | |
|---|---|---|---|
| Admin | admin@hostel.com | admin123 | A001 |
| User | user1@mail.com | user123 | U001 |
| User | user2@mail.com | user123 | U002 |
# 🏗️ Arquitectura del Sistema
# Capas de la Aplicación
┌─────────────────────────────────────┐
│ CAPA DE PRESENTACIÓN │
│ (viewAdmin.php, viewSocio.php) │
└─────────────────────────────────────┘
↓
┌─────────────────────────────────────┐
│ CAPA DE LÓGICA │
│ (functions.php) │
└─────────────────────────────────────┘
↓
┌─────────────────────────────────────┐
│ CAPA DE DATOS │
│ (conexion.php + PDO) │
└─────────────────────────────────────┘
↓
┌─────────────────────────────────────┐
│ BASE DE DATOS │
│ (PostgreSQL / MySQL) │
└─────────────────────────────────────┘# Flujo de Datos
- Usuario accede → Login (autenticación)
- Sistema verifica → Credenciales + Rol
- Redirección → Panel según rol
- Operaciones CRUD → Functions.php
- Persistencia → Base de datos PostgreSQL
# 📊 Estadísticas del Proyecto
- Archivos PHP: 10
- Archivos SQL: 2
- Funciones creadas: 30+
- Líneas de código: ~3,500
- Tablas de BD: 5
- Total camas: 26
- Habitaciones: 4
- Estados de reserva: 3 (pendiente, reservada, cancelada)
# 🎨 Tecnologías Utilizadas
| Categoría | Tecnología | Versión |
|---|---|---|
| Backend | PHP | 7.4+ |
| Base de Datos | PostgreSQL | 12+ |
| Base de Datos Alt. | MySQL | 5.7+ |
| Frontend | HTML5 + CSS3 | - |
| Framework CSS | Bootstrap | 5.3.2 |
| Iconos | Bootstrap Icons | 1.11.1 |
| JavaScript | Vanilla JS | ES6+ |
| Seguridad | PDO + password_hash | - |
# 🔐 Características de Seguridad Implementadas
✅ Nivel de Seguridad: MEDIO-ALTO
- ✅ Contraseñas hasheadas con bcrypt
- ✅ Prepared statements (PDO)
- ✅ Sanitización de inputs
- ✅ Protección XSS
- ✅ Regeneración de session ID
- ✅ Cookies HttpOnly
- ✅ Validación de roles
- ✅ Logout seguro
Pendiente para PRODUCCIÓN:
- HTTPS obligatorio
- CSRF tokens
- Rate limiting
- 2FA (opcional)
# 📝 Cambios Principales Realizados
# 1. Base de Datos
ANTES:
- MySQL con contraseñas en texto plano
- Sin tabla de acompañantes
- Roles diferentes (vecino, presidente)
DESPUÉS:
- PostgreSQL con ENUMS nativos
- Contraseñas hasheadas (bcrypt)
- Tabla de acompañantes incluida
- Roles: admin, user
# 2. Autenticación
ANTES:
- Campo "usuario" como texto
- password_verify con campo 'pass'
DESPUÉS:
- Campo "email" como identificador
- password_verify con campo 'password'
- Cookies seguras
# 3. Funcionalidades
ANTES:
- Estructura básica
- Sin funciones implementadas
DESPUÉS:
- 30+ funciones completas
- CRUD completo de usuarios
- Sistema de reservas funcional
- Calendario interactivo
- Gestión de acompañantes
# 🚀 Cómo Ejecutar (Quick Start)
# 1. Crear BD
psql -U postgres
CREATE DATABASE refugio;
\q
# 2. Importar esquema
psql -U postgres -d refugio -f sql\refugio.sql
# 3. Configurar conexion.php
# Editar usuario y contraseña de PostgreSQL
# 4. Iniciar servidor
php -S localhost:8000
# 5. Acceder
# http://localhost:8000
# admin@hostel.com / admin123# 📈 Próximos Pasos Sugeridos
# Prioridad Alta
- ⚠️ Cambiar contraseñas por defecto
- ⚠️ Eliminar update_passwords.php
- ⚠️ Configurar HTTPS en producción
- 📧 Implementar notificaciones por email
- 🔒 Añadir CSRF tokens
# Prioridad Media
- 📊 Dashboard con gráficos
- 📄 Exportar reservas a PDF
- 📱 Mejorar responsive mobile
- 🔍 Búsqueda avanzada de reservas
- 📅 Exportar calendario a Google Calendar
# Prioridad Baja
- 🎨 Temas personalizables
- 🌐 Multi-idioma
- 📱 App móvil nativa
- 💰 Sistema de pagos
- 🤖 Chatbot de asistencia
# 📞 Soporte y Documentación
- README.md - Documentación completa del sistema
- INICIO_RAPIDO.md - Guía de instalación rápida
- MEJORAS_FUTURAS.md - Roadmap de funcionalidades
- sql/refugio.sql - Comentarios en el esquema
# ✨ Características Destacadas
🎯 Sistema completo y funcional
🔐 Seguridad implementada correctamente
📱 Diseño responsive y moderno
🚀 Fácil de instalar y configurar
📚 Bien documentado
🔄 Escalable y mantenible
⚡ Rendimiento optimizado
🎨 Interfaz intuitiva
# 🎉 Conclusión
✅ El sistema está 100% funcional y listo para uso
El proyecto cumple con todos los requisitos especificados:
- ✅ Admin puede gestionar usuarios y aprobar reservas
- ✅ Users pueden ver disponibilidad y hacer reservas
- ✅ Calendario visual con indicadores
- ✅ Gestión de acompañantes
- ✅ Sistema seguro con contraseñas hasheadas
- ✅ Base de datos bien estructurada
El sistema puede ser desplegado en producción después de:
- Cambiar contraseñas por defecto
- Configurar servidor HTTPS
- Revisar configuración de PostgreSQL
- Eliminar archivos de desarrollo
# Licencia
Licencia del proyecto (ej.: MIT). Añadir archivo LICENSE en el repositorio.
# Autor
# 👨💻 **Iván Bazaga**
🚀 Desarrollador Frontend especializado en Angular y ecosistemas JavaScript
Estudiante Intermedio con pasión por crear aplicaciones web modernas y eficientes. Este proyecto representa la aplicación práctica de conceptos avanzados.
# ☎️ Información de Contacto
| Plataforma | Enlace | Descripción |
|---|---|---|
| GitHub | @IvBanzaga | Repositorios y proyectos de código |
| Iván Bazaga | Perfil profesional y networking | |
| ivan.cpweb@gmail.com | Contacto directo para oportunidades | |
| Portfolio | Ivandevs.netlify.app | Showcase de proyectos y skills |
| Proyecto | Creamiproyecto.com | Showcase de proyectos y skills |
# 🧰 Stack Tecnológico de Especialización
Frontend: Java SprinBoot • Astro • Angular 20 • TypeScript • RxJS • Bootstrap 5 • HTML5 • CSS3
Tools: Angular CLI • Git • VS Code • Prettier • Jasmine • Karma
Learning: NgRx • PWA • Node.js • Express • Mysql • Oracle¡Disfruta gestionando las reservas de tu refugio! 🏔️
Documentación generada el 23 de Octubre de 2025
Comparte este proyecto
¿Te ha gustado este proyecto? ¡Compártelo con tu red!