Proyectos
ActivoAgosto 2026 — Octubre 2026

Sistema de agenda para barbería

Gestión de citas y clientes para una barbería.

Captura del proyecto Sistema de agenda para barbería

Plataforma web de reservas para barberías. Cada barbero recibe un link público (y un código QR descargable) para que sus clientes reserven sin crear cuenta. El barbero gestiona sus citas, horarios, descansos y bloqueos desde un panel privado. Los clientes reciben un link para cancelar o reagendar por su cuenta, y las confirmaciones y recordatorios se envían por WhatsApp con un clic.

Problema

  • Reservas por chat sin control: dos clientes podían quedar en la misma hora.
  • El barbero no tenía una vista clara de su agenda ni una forma de bloquear horas por almuerzo, vacaciones o diligencias.
  • Los clientes tenían que escribir para cancelar o mover una cita, lo que generaba más mensajes y más "no-shows".
  • Las herramientas comerciales son caras o exigen que el cliente cree una cuenta, y eso hace que muchos clientes no terminen la reserva.

Enfoque

Reservar sin fricción: el cliente no se registra. Reserva desde un link o QR y recibe un link único para gestionar su cita. Sistema multi-barbero con administración central: un panel de admin crea a los barberos y les entrega códigos de acceso. Cada barbero tiene su propio panel con login por JWT.

  • WhatsApp sin la API de pago: se usan enlaces wa.me con mensajes prellenados, así que no hay costo por mensaje ni proceso de aprobación de Meta.
  • La integridad de los datos se valida en el servidor: un índice único parcial en MongoDB impide reservas dobles incluso si dos personas reservan al mismo tiempo. La ventana de reserva de 7 días y los horarios también se validan en el backend, no solo en la interfaz.

Proceso

  • MVP: API REST con Express y MongoDB, agendamiento público, panel del barbero y notificaciones por WhatsApp.
  • Administración y seguridad: panel de admin, login con códigos de acceso cifrados con bcrypt, Helmet, rate limiting, CORS con varios orígenes y una auditoría de seguridad que corrigió, entre otras cosas, una vulnerabilidad (CVE) de react-router.
  • Casos límite: se corrigió una condición de carrera que permitía reservas dobles, errores de zona horaria (todo el cálculo de fechas se fija a la hora de Costa Rica), fechas imposibles como el 30 de febrero, y estados finales de una cita que se podían "revivir" desde el link público.
  • Infraestructura: backend desplegado en Koyeb, frontend en Cloudflare Pages con dominio propio y respaldos diarios automáticos de la base de datos en Cloudflare R2 mediante GitHub Actions.
  • Mejoras según el uso real: códigos QR, descansos de almuerzo por día, días cerrados o llenos marcados en rojo, historial de citas, citas creadas a mano para clientes que llegan sin reservar o llaman por teléfono, y una interfaz para bloquear horarios.

Resultados

-Sistema en producción, usado por barberos reales con reservas reales.

  • Las reservas dobles quedan bloqueadas a nivel de base de datos, también cuando llegan solicitudes al mismo tiempo.
  • Los clientes reservan, cancelan y reagendan solos, y el barbero recibe muchos menos mensajes. -No hay costo de mensajería: todo funciona con enlaces de WhatsApp.