ivanDev
Gestión de Habitaciones

Gestión de Habitaciones

Iván Bazaga

Iván Bazaga

Desarrollador Junior

php mysql html

# 🏔️ 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 Email 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

  1. Usuario accede → Login (autenticación)
  2. Sistema verifica → Credenciales + Rol
  3. Redirección → Panel según rol
  4. Operaciones CRUD → Functions.php
  5. 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

  1. ✅ Contraseñas hasheadas con bcrypt
  2. ✅ Prepared statements (PDO)
  3. ✅ Sanitización de inputs
  4. ✅ Protección XSS
  5. ✅ Regeneración de session ID
  6. ✅ Cookies HttpOnly
  7. ✅ Validación de roles
  8. ✅ 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

  1. ⚠️ Cambiar contraseñas por defecto
  2. ⚠️ Eliminar update_passwords.php
  3. ⚠️ Configurar HTTPS en producción
  4. 📧 Implementar notificaciones por email
  5. 🔒 Añadir CSRF tokens

# Prioridad Media

  1. 📊 Dashboard con gráficos
  2. 📄 Exportar reservas a PDF
  3. 📱 Mejorar responsive mobile
  4. 🔍 Búsqueda avanzada de reservas
  5. 📅 Exportar calendario a Google Calendar

# Prioridad Baja

  1. 🎨 Temas personalizables
  2. 🌐 Multi-idioma
  3. 📱 App móvil nativa
  4. 💰 Sistema de pagos
  5. 🤖 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:

  1. Cambiar contraseñas por defecto
  2. Configurar servidor HTTPS
  3. Revisar configuración de PostgreSQL
  4. 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
LinkedIn Iván Bazaga Perfil profesional y networking
Email 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