0% encontró este documento útil (0 votos)
68 vistas15 páginas

Barber

BARBERTURNO es un sistema de gestión de citas para barberías que automatiza la programación, recordatorios y control administrativo, mejorando la eficiencia y experiencia del cliente. La plataforma permite a los usuarios gestionar citas desde cualquier dispositivo, optimizando el tiempo y aumentando la productividad de los barberos. Además, incluye funcionalidades para la gestión de servicios y estadísticas, con proyecciones futuras para pagos en línea y fidelización.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
68 vistas15 páginas

Barber

BARBERTURNO es un sistema de gestión de citas para barberías que automatiza la programación, recordatorios y control administrativo, mejorando la eficiencia y experiencia del cliente. La plataforma permite a los usuarios gestionar citas desde cualquier dispositivo, optimizando el tiempo y aumentando la productividad de los barberos. Además, incluye funcionalidades para la gestión de servicios y estadísticas, con proyecciones futuras para pagos en línea y fidelización.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

BARBERTURNO - SISTEMA DE GESTIÓN DE CITAS PARA

BARBERÍA

ENTREGADO POR:

NASLY VIBIANA DE LOS RIOS MERA


LUIS ALBERTO CAMAYO ERAZO
OLVER EDINSON ARENAS VASQUEZ

ENTREGADO A:

JOHN SERGIO VALENCIA HURTADO


ARQUITECTURA DE SOFTWARE

CORPORACIÓN UNIVERSITARIA UNICOMFACAUCA


ARQUITECTURA DEL SOFTWARE
POPAYÁN, CAUCA
18/05/2025
Índice de contenido

1- Resumen del problema que resuelve el software………………………. 3


2- Impacto positivo de implementar BARBERTURNO ………………….…. 3
3- Roles de Seguridad y Control de Acceso …………………………………. 4
4- Modelado de la base de datos ……………………………………………….5
5- Levantamiento de requerimientos ... ……………………………………….. 6
6- casos de uso ………………………………………………………………6,7,8
7- Patrón de Diseño a Utilizar …………………………………………………9
8- Lenguajes y frameworks a utilizar …………………………………………9,10
9- Fuente ……………………………………………………………………….10
10- Componentes principales del programa………………… 10,11,12,13,14,15
Resumen del problema que resuelve el software

Las barberías tradicionales enfrentan dificultades en la gestión eficiente de citas, lo


cual genera problemas como:

● Pérdida de tiempo en la coordinación manual de turnos.


● Ausencia de recordatorios que provocan inasistencias de clientes.
● Dificultad para organizar la disponibilidad de barberos.
● Falta de visibilidad de la agenda por parte del cliente y el barbero.
● Poco control sobre servicios ofrecidos, horarios y estadísticas.

BARBERTURNO nace como solución a estos inconvenientes al ofrecer una


plataforma digital que automatiza y centraliza la gestión de citas, con funciones de
registro, agenda, recordatorios y control administrativo.

Impacto positivo de implementar BARBERTURNO

1- Optimización del tiempo: Automatiza la programación y reprogramación


de citas, eliminando la necesidad de coordinación manual.

2- Mejora en la experiencia del cliente:


● Agendamiento desde cualquier dispositivo.

● Elección personalizada de servicios y barberos.


● Recordatorios automáticos por correo o WhatsApp.

3- Incremento en la productividad del barbero:


● Acceso rápido a su agenda y control de disponibilidad.

● Reducción de tiempos muertos por citas no asistidas.

4- Gestión administrativa más eficiente:


● Control sobre servicios, horarios, barberos y estadísticas.
● Visualización de ingresos y clientes frecuentes.

5- Escalabilidad y proyección futura:


● Posibilidad de incluir pagos en línea, sistema de fidelización, calificaciones
e integración con Google Calendar.

Roles de Seguridad y Control de Acceso

1. Cliente
Accesos permitidos:

● Registro e inicio de sesión en la plataforma.


● Agendar, reagendar o cancelar citas.
● Elegir barbero, servicio y horario disponible.
● Ver su historial de citas (realizadas, canceladas, no asistidas).
● Recibir notificaciones automáticas por correo o WhatsApp.
● (En futuras versiones) Realizar pagos y calificar servicios.

2. Barbero
Accesos permitidos:

● Iniciar sesión y acceder a su panel personalizado.


● Visualizar su agenda diaria o semanal.
● Confirmar asistencia de clientes.
● Marcar citas como completadas, reprogramarlas o cancelarlas.
● Administrar su propio horario laboral (días, horas, descansos).
● (En algunos casos) Gestionar servicios si tiene permisos especiales.

3. Administrador
Accesos permitidos:

● Acceso completo a todas las funcionalidades del sistema.


● Gestionar usuarios (clientes y barberos).
● Agregar, editar o eliminar servicios ofrecidos.
● Administrar los horarios de todos los barberos.
● Visualizar estadísticas e informes del sistema (citas, ingresos, clientes).
● Supervisar la configuración general del sistema y futuras integraciones.

Modelado de la Base de Datos

Entidades principales:
Usuarios
id_usuario (PK)
nombre
correo
teléfono
contraseña (encriptada)
rol (cliente, barbero, administrador)
Servicios
id_servicio (PK)
nombre_servicio
descripcion
duracion (minutos)
precio
Citas
id_cita (PK)
id_cliente (FK a Usuarios)
id_barbero (FK a Usuarios)
id_servicio (FK a Servicios)

fecha
hora
estado (agendada, cancelada, completada, no asistida)
Horarios
id_horario (PK)
id_barbero (FK a Usuarios)
dia_semana
hora_inicio
hora_fin
disponible (booleano)
Notificaciones
id_notificacion (PK)
id_cita (FK a Citas)
medio (email o WhatsApp)
fecha_envio
estado (enviado, fallido)

Levantamiento de Requerimientos

2.1 Requerimientos Funcionales


RF01: Registro y autenticación de usuarios (clientes y barberos).
RF02: Permitir que el cliente agende, reagende o cancele citas.
RF03: Gestión de servicios (agregar, editar, eliminar servicios).
RF04: Gestión de barberos (agregar, editar, eliminar barberos).

RF05: Panel de control para barberos (visualizar y gestionar su agenda).


RF06: Envío de notificaciones recordatorias por correo o WhatsApp.
RF07: Visualización de estadísticas de citas y servicios.
RF08: Implementación de un "modo kiosco" opcional en barbería.
2.2 Requerimientos No Funcionales
RNF01: La plataforma debe ser responsive (adaptable a PC, tablets, móviles).
RNF02: Tiempo máximo de respuesta: 2 segundos.
RNF03: Seguridad en la autenticación mediante JWT y cifrado de contraseñas.
RNF04: Escalabilidad horizontal para futuros módulos (pago online, calificaciones,
etc.).
RNF05: Alta disponibilidad (mínimo 99% de uptime).

Casos de Uso

CU01 - Registrarse como Usuario


Actor principal: Cliente / Barbero
Precondición: No estar registrado en el sistema.
Flujo principal:
1. El usuario accede al formulario de registro.
2. Ingresa datos personales: nombre, correo, teléfono, contraseña, rol (cliente o
barbero).
3. El sistema valida los datos ingresados.
4. Si la validación es exitosa, registra al usuario en la base de datos (id_Cliente
o Barbero).
5. El usuario recibe una notificación de registro exitoso.

Postcondición: El usuario queda registrado y puede iniciar sesión.

CU02 - Iniciar Sesión


Actor principal: Cliente / Barbero / Administrador
Precondición: Estar registrado en el sistema.
Flujo principal:
1. El usuario accede al formulario de inicio de sesión.
2. Introduce correo y contraseña.
3. El sistema autentica usando JWT.
4. Si las credenciales son válidas, otorga acceso al panel correspondiente
(cliente, barbero o administrador).

Postcondición: Usuario autenticado con acceso a funcionalidades.

CU03 - Agendar Cita


Actor principal: Cliente
Precondición: Usuario autenticado.
Flujo principal:
1. El cliente selecciona el servicio deseado (Servicios).
2. Elige un barbero disponible (Barbero) y horario disponible (Horarios).
3. Selecciona fecha y hora.
4. El sistema registra la cita en la tabla Citas.
5. Se envía notificación automática al barbero y al cliente (Notificaciones).
Postcondición: Cita registrada en estado "agendada".

CU04 - Gestionar Cita (por el Barbero)


Actor principal: Barbero
Precondición: Usuario autenticado.
Flujo principal:
1. El barbero visualiza su agenda (citas asignadas).
2. Puede confirmar la asistencia, marcar como realizada, cancelar o
reprogramar citas.
3. El sistema actualiza el estado de la cita (estado_agendada).
4. Notifica al cliente los cambios.
Postcondición: Actualización del estado de la cita.

CU05 - Cancelar Cita (por el Cliente)


Actor principal: Cliente
Precondición: Cita futura vigente.
Flujo principal:
1. El cliente accede a su listado de citas agendadas.
2. Solicita la cancelación de una cita.
3. El sistema cambia el estado de la cita a "cancelada" en Citas.
4. Se envía notificación al barbero.
Postcondición: Cita cancelada.

CU06 - Ver Historial de Citas

Actor principal: Cliente / Barbero


Precondición: Usuario autenticado.
Flujo principal:
1. El usuario accede a su panel de historial.
2. Consulta citas anteriores (realizadas, canceladas o no asistidas).
3. El sistema muestra los registros desde la tabla Citas.
Postcondición: Historial de citas disponible para consulta.

CU07 - Administrar Servicios


Actor principal: Administrador / Barbero (con permisos especiales).
Precondición: Usuario autenticado con rol de administrador o barbero autorizado.
Flujo principal:
1. El usuario accede al panel de gestión de servicios.
2. Puede crear, editar o eliminar servicios (Servicios).
3. El sistema actualiza la base de datos.
Postcondición: Servicios actualizados en el sistema.
CU08 - Administrar Horarios de Barberos
Actor principal: Barbero / Administrador
Precondición: Usuario autenticado.
Flujo principal:
1. Accede a la sección de horarios.
2. Define o modifica los días y horas de atención (Horarios).
3. Bloquea franjas horarias por permisos, descanso o días no laborables.
4. El sistema actualiza la disponibilidad en el calendario.
Postcondición: Disponibilidad de atención actualizada.

CU09 - Realizar Pago de Servicio (Futuro)


Actor principal: Cliente
Precondición: Tener una cita agendada o realizada.
Flujo principal:
1. El cliente accede a su cita en el panel.
2. Selecciona opción de pago.
3. El sistema registra el monto y fecha de pago en la tabla Pago.
Postcondición: Pago asociado a la cita.

Patrón de Diseño a Utilizar

Se aplicará el Patrón MVC (Modelo-Vista-Controlador), estructurando la aplicación


de la
siguiente forma:
Modelo: Gestiona la lógica de datos y comunicación con la base de datos
(Sequelize/Prisma ORM sobre PostgreSQL).
Vista: Aplicación web en Angular, proporcionando una experiencia interactiva y
dinámica.
Controlador: API REST en Node.js/Express que maneja las solicitudes, respuestas
y
lógica del negocio.
El patrón MVC permitirá mantener el proyecto modularizado, limpio y escalable.

Lenguajes y Frameworks a Utilizar

Componente Herramientas Justificación

Angular (TypeScript) + Para una interfaz web dinámica,


Frontend
FullCalendar modular y profesional.

Node.js + Express Facilita el desarrollo rápido y escalable


Backend
(JavaScript) de APIs REST.
Componente Herramientas Justificación

Robustez, soporte a relaciones


Base de Datos PostgreSQL
complejas y alta disponibilidad.

Para agilizar operaciones CRUD y


ORM Sequelize / Prisma
gestionar relaciones entre tablas.

Para seguridad en la autenticación de


Autenticación JWT (JSON Web Token)
usuarios.

Nodemailer (email), Twilio Automatización de recordatorios al


Notificaciones
API (WhatsApp) cliente.

Control de Para gestión colaborativa del código


Git + GitHub / GitLab
versiones fuente.

fuente.

Programa que se Va a Realizar (Explicación)


Se desarrollará un Sistema de Gestión de Citas Online para Barberías
denominado
BARBERTURNO.
La aplicación permitirá a los clientes agendar sus citas de forma rápida desde
cualquier
dispositivo, elegir el servicio y el barbero deseado, recibir notificaciones
automáticas de
recordatorio, y permitirá a los barberos y administradores gestionar su
disponibilidad y
servicios de manera eficiente.

Componentes principales del programa

Sistema de Registro/Login: Para clientes y barberos, seguro mediante JWT.


Agenda de Turnos: Los clientes eligen el servicio y el sistema muestra
automáticamente las franjas horarias disponibles.
Gestión de Servicios: El administrador podrá definir los servicios ofrecidos,
duración y precios.
Gestión de Barberos y Horarios: Asignar días laborables y tiempos de descanso,
evitando traslapes.
Recordatorios Automáticos: Se enviarán correos electrónicos y mensajes de
WhatsApp antes de la cita.
Panel del Barbero: Cada barbero podrá ver su agenda diaria/semanal desde
cualquier dispositivo.
Estadísticas e Informes: Acceso a información como ingresos aproximados, citas
completadas, clientes frecuentes.
En una segunda fase, se planea expandir la plataforma con funcionalidades como:
Sistema de puntos de fidelización.
Pago anticipado en línea.
Calificación de servicios por parte de los clientes.
Integración con Google Calendar.
Aplicación de escritorio para recepción.

-- MySQL Script generated by MySQL Workbench


-- Sun Apr 27 17:11:49 2025
-- Model: New Model Version: 1.0
-- MySQL Workbench Forward Engineering

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;


SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS,
FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE,
SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZE
RO_IN_D
ATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBS
TIT
UTION';

-- -----------------------------------------------------
-- Schema mydb
-- -----------------------------------------------------

-- -----------------------------------------------------
-- Schema mydb
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 ;
USE `mydb` ;

-- -----------------------------------------------------
-- Table `mydb`.`Horarios`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Horarios` (
`idHorarios` INT NOT NULL,

`dia_semana` DATE NULL,


`hora_inicio` DATE NULL,
`hora_fin` DATE NULL,
`disponible` TINYINT NULL,
PRIMARY KEY (`idHorarios`))
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `mydb`.`id_Cliente`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`id_Cliente` (
`id_Usuario` INT NOT NULL,
`nombre` VARCHAR(45) NULL,
`correo` VARCHAR(45) NULL,
`telefono` VARCHAR(45) NULL,
`contraseña` VARCHAR(45) NULL,
`rol` VARCHAR(45) NULL,
`Horarios_idHorarios` INT NOT NULL,
PRIMARY KEY (`id_Usuario`),
INDEX `fk_id_Cliente_Horarios1_idx` (`Horarios_idHorarios` ASC) VISIBLE,
CONSTRAINT `fk_id_Cliente_Horarios1`
FOREIGN KEY (`Horarios_idHorarios`)
REFERENCES `mydb`.`Horarios` (`idHorarios`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `mydb`.`Servicios`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Servicios` (
`idServicios` INT NOT NULL,
`nombre_servicios` VARCHAR(45) NULL,
`descripcion` VARCHAR(45) NULL,
`duracion_servicio` VARCHAR(45) NULL,
`precio` VARCHAR(45) NULL,
PRIMARY KEY (`idServicios`))
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `mydb`.`Notificaciones`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Notificaciones` (
`idNotificaciones` INT NOT NULL,
`medio` VARCHAR(45) NULL,
`fecha_envio` DATE NULL,
`estado` VARCHAR(45) NULL,
PRIMARY KEY (`idNotificaciones`))
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `mydb`.`Barbero`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Barbero` (

`idBarbero` INT NOT NULL,


`nombre` VARCHAR(45) NULL,
`especialidad` VARCHAR(45) NULL,
`telefono` VARCHAR(45) NULL,
PRIMARY KEY (`idBarbero`))
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `mydb`.`Citas`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Citas` (
`idCitas` INT NOT NULL,
`fecha` DATE NULL,
`hora` DATE NULL,
`estado_agendado` VARCHAR(45) NULL,
`Notificaciones_idNotificaciones` INT NOT NULL,
`Servicios_idServicios` INT NOT NULL,
`Barbero_idBarbero` INT NOT NULL,
`id_Cliente_id_Usuario` INT NOT NULL,
PRIMARY KEY (`idCitas`),
INDEX `fk_Citas_Notificaciones1_idx` (`Notificaciones_idNotificaciones` ASC)
VISIBLE,
INDEX `fk_Citas_Servicios1_idx` (`Servicios_idServicios` ASC) VISIBLE,
INDEX `fk_Citas_Barbero1_idx` (`Barbero_idBarbero` ASC) VISIBLE,
INDEX `fk_Citas_id_Cliente1_idx` (`id_Cliente_id_Usuario` ASC) VISIBLE,
CONSTRAINT `fk_Citas_Notificaciones1`
FOREIGN KEY (`Notificaciones_idNotificaciones`)

REFERENCES `mydb`.`Notificaciones` (`idNotificaciones`)


ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Citas_Servicios1`
FOREIGN KEY (`Servicios_idServicios`)
REFERENCES `mydb`.`Servicios` (`idServicios`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Citas_Barbero1`
FOREIGN KEY (`Barbero_idBarbero`)
REFERENCES `mydb`.`Barbero` (`idBarbero`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Citas_id_Cliente1`
FOREIGN KEY (`id_Cliente_id_Usuario`)
REFERENCES `mydb`.`id_Cliente` (`id_Usuario`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `mydb`.`Pago`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Pago` (
`idPago` INT NOT NULL,
`monto` VARCHAR(45) NULL,
`fecha_pago` DATE NULL,
`esstadoPago` VARCHAR(45) NULL,
`Citas_idCitas` INT NOT NULL,
PRIMARY KEY (`idPago`),
INDEX `fk_Pago_Citas1_idx` (`Citas_idCitas` ASC) VISIBLE,
CONSTRAINT `fk_Pago_Citas1`
FOREIGN KEY (`Citas_idCitas`)
REFERENCES `mydb`.`Citas` (`idCitas`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;

SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

También podría gustarte