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 sitiofrontend/(HTML/CSS/JS vanilla) queda como referencia histórica. VerAGENTS.mdpara arquitectura y comandos.
- Definición del Alcance
- Breve Descripción del Problema
- Qué Tiene que Hacer el Sistema
- Funciones del Sistema
- Requerimientos
- Casos de Uso
- Pruebas de Requerimientos
- Diagramas
- Demo en linea
- Capturas de Pantalla
- Organización del Proyecto
- Instalación
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).
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.
- 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.
- Reserva de turnos en línea.
- Selección de tipo de servicio.
- Selección de fecha y hora con disponibilidad en tiempo real.
- Recopilación segura de datos del cliente.
- Panel administrativo para gestionar turnos y reportes.
- Reserva de turnos: Selección de servicio, fecha y hora.
- Gestión de servicios: Visualización de opciones con descripciones y precios.
- 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.
- Compatibilidad y diseño responsivo: Uso óptimo en cualquier dispositivo.
- Seguridad: Encriptación de datos para proteger la privacidad del usuario.
- Selección de servicio.
- Selección de fecha y hora en un calendario interactivo.
- Registro de datos personales en un formulario.
- Gestión de reservas: Modificar o cancelar citas a través del panel.
- Reportes: Visualización de estadísticas y gráficos de ganancias, servicios más solicitados, y clientes frecuentes.
- Generación de reportes.
- Sincronización de datos en tiempo real.
- 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.
- ID: CP-002
- Descripción: Validar la selección de fechas y horarios disponibles.
- Prioridad: Media
- Resultados Esperados: Fecha y hora seleccionadas correctamente.
- ID: CP-003
- Descripción: Comprobar que los datos del cliente se registren con éxito.
- Prioridad: Alta
- Resultados Esperados: Los datos se almacenan correctamente.
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=miPasswordSegura123Consultá
backend/.env.examplepara la lista completa de variables. En Railway (o tu PaaS), configuralas en el panel de Environment Variables.
- Repositorio en GitHub: Barberia
- Tablero de Tareas: GitHub Projects
- Java 21 (JDK)
- Maven Wrapper (incluido en
backend/mvnw) - PostgreSQL 15+ (o usar perfil H2 para desarrollo sin instalar PostgreSQL)
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.
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# 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 packageEl servidor arranca en http://localhost:8080.
Documentación interactiva de la API: http://localhost:8080/swagger-ui.html
| 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 |




