Skip to content
Mateo-404Public

About

💈 Sistema Open Source para gestionar reservas de barberías. Incluye reservas en línea y un panel administrativo con estadísticas. Diseño responsivo y seguro. ¡Contribuye con una Pull Request!

Topics

Resources

Stars

4 stars

Watchers

1 watching

Forks

Repository files navigation

Sistema de Gestión de Barbería

Frontend moderno: el directorio frontend-react/ contiene la app activa (React 19 + Vite + TypeScript + Tailwind), con wizard de reservas y panel de administración. El sitio frontend/ (HTML/CSS/JS vanilla) queda como referencia histórica. Ver AGENTS.md para arquitectura y comandos.


Tabla de Contenidos

  1. Definición del Alcance
  2. Breve Descripción del Problema
  3. Qué Tiene que Hacer el Sistema
  4. Funciones del Sistema
  5. Requerimientos
  6. Casos de Uso
  7. Pruebas de Requerimientos
  8. Diagramas
  9. Demo en linea
  10. Capturas de Pantalla
  11. Organización del Proyecto
  12. Instalación

Definición del Alcance

Se desarrollará un sistema para gestionar reservas en una barbería. Permitirá optimizar la experiencia del cliente y la administración del negocio, resolviendo problemas actuales como confusiones en las reservas y falta de estadísticas claras.

El sistema está orientado a pequeñas barberías, pero su estructura permite escalar a otros rubros. El proyecto se desarrolla como parte de la Práctica Profesional Supervisada de la Tecnicatura Universitaria en Programación (UTN - Rafaela).


Breve Descripción del Problema

La barbería enfrenta dificultades con la gestión manual de las reservas, lo que genera superposición de horarios, frustración entre clientes y pérdida de ingresos. El objetivo es implementar un sistema automatizado que simplifique estos procesos.


Qué Tiene que Hacer el Sistema

  • Reservas en línea con selección de servicios, fechas y horarios.
  • Gestión de datos de clientes.
  • Panel de control para el administrador con calendario visual, estadísticas y reportes.

Funciones del Sistema

  1. Reserva de turnos en línea.
  2. Selección de tipo de servicio.
  3. Selección de fecha y hora con disponibilidad en tiempo real.
  4. Recopilación segura de datos del cliente.
  5. Panel administrativo para gestionar turnos y reportes.

Requerimientos

Requerimientos del Usuario

  1. Reserva de turnos: Selección de servicio, fecha y hora.
  2. Gestión de servicios: Visualización de opciones con descripciones y precios.

Requerimientos de Sistema

  • Usuario: Selección de servicio, calendario interactivo, formulario de datos.
  • Administrador: Panel de control para gestionar reservas, modificar o cancelar citas, y acceder a estadísticas.
  • Sistema: Recopilación de datos para reportes.

Requerimientos No Funcionales

  • Compatibilidad y diseño responsivo: Uso óptimo en cualquier dispositivo.
  • Seguridad: Encriptación de datos para proteger la privacidad del usuario.

Casos de Uso

Usuario

  1. Selección de servicio.
  2. Selección de fecha y hora en un calendario interactivo.
  3. Registro de datos personales en un formulario.

Administrador

  1. Gestión de reservas: Modificar o cancelar citas a través del panel.
  2. Reportes: Visualización de estadísticas y gráficos de ganancias, servicios más solicitados, y clientes frecuentes.

Sistema

  1. Generación de reportes.
  2. Sincronización de datos en tiempo real.

Pruebas de Requerimientos del Sistema

Caso de Prueba 1: Selección de Servicio

  • ID: CP-001
  • Descripción: Verificar que el usuario pueda seleccionar un tipo de servicio.
  • Prioridad: Alta
  • Resultados Esperados: El servicio seleccionado se almacena correctamente.

Caso de Prueba 2: Selección de Fecha y Hora

  • ID: CP-002
  • Descripción: Validar la selección de fechas y horarios disponibles.
  • Prioridad: Media
  • Resultados Esperados: Fecha y hora seleccionadas correctamente.

Caso de Prueba 3: Registro de Datos del Cliente

  • ID: CP-003
  • Descripción: Comprobar que los datos del cliente se registren con éxito.
  • Prioridad: Alta
  • Resultados Esperados: Los datos se almacenan correctamente.

Diagramas

Diagrama de Casos de Uso

Diagrama de Clases


Demo en Línea

El sistema se encuentra hosteado y disponible de forma pública para pruebas:

🔗 Frontend (Cliente): https://mateo-404.github.io/Barberia/
🔗 Frontend (Administrador): https://mateo-404.github.io/Barberia/admin/login.html

👉 Nota: el despliegue se realiza directamente desde las ramas:

  • frontend → para GitHub Pages.
  • backend → para Railway u otro servicio de hosting del API.

🔐 Admin de prueba: El primer administrador se crea automáticamente al iniciar el backend por primera vez si la base de datos está vacía (AdminSeedRunner). Las credenciales se configuran vía variables de entorno:

ADMIN_SEED_EMAIL=admin@barberia.com
ADMIN_SEED_PASSWORD=miPasswordSegura123

Consultá backend/.env.example para la lista completa de variables. En Railway (o tu PaaS), configuralas en el panel de Environment Variables.


Capturas de Pantalla

1. Reserva de Turno (Cliente)

Reserva de turno

2. Panel de Administración

Panel de administración

3. Estadísticas

Estadísticas


Organización del Proyecto


Instalación

Prerrequisitos

  • Java 21 (JDK)
  • Maven Wrapper (incluido en backend/mvnw)
  • PostgreSQL 15+ (o usar perfil H2 para desarrollo sin instalar PostgreSQL)

Variables de entorno

El backend lee las siguientes variables para conectar a la base de datos:

Variable Descripción Ejemplo
DB_URL URL de conexión JDBC jdbc:postgresql://localhost:5432/barber
DB_USER Usuario de base de datos postgres
DB_PASSWORD Contraseña del usuario postgres

Copiar backend/.env.example a backend/.env y completar los valores.

Desarrollo sin PostgreSQL (perfil H2)

Activar el perfil test para usar H2 en memoria — ideal para desarrollo rápido sin instalar PostgreSQL:

SPRING_PROFILES_ACTIVE=test ./mvnw spring-boot:run

Comandos

# Ejecutar el servidor (Postgres requerido)
./mvnw spring-boot:run

# Ejecutar con perfil H2 (sin Postgres)
SPRING_PROFILES_ACTIVE=test ./mvnw spring-boot:run

# Ejecutar tests
./mvnw test

# Build completo (package)
./mvnw clean package

El servidor arranca en http://localhost:8080.
Documentación interactiva de la API: http://localhost:8080/swagger-ui.html

Ramas

Rama Propósito
backend Desarrollo activo del backend (Spring Boot, JPA, API REST)
frontend Desarrollo activo del frontend (HTML/CSS/JS, GitHub Pages)
main Snapshot estable — solo recibe código probado vía sync manual

About

💈 Sistema Open Source para gestionar reservas de barberías. Incluye reservas en línea y un panel administrativo con estadísticas. Diseño responsivo y seguro. ¡Contribuye con una Pull Request!

Topics

Resources

Stars

4 stars

Watchers

1 watching

Forks

Used by

Contributors

Languages