Files
may/README.md
T
2026-06-18 17:08:26 +02:00

3.5 KiB

May Hair Care — Landing Page + EasyAppointments

Landing page bonita para May HairCare (Horta, Barcelona) con reservas gestionadas por EasyAppointments.

El frontend (HTML/JS puro) sigue siendo el de la landing, pero las reservas, clientes y servicios se gestionan completamente con EasyAppointments.

Stack actual

  • Web (estático): Go + proxy reverso a EasyAppointments API
  • Gestión de citas, clientes y servicios: EasyAppointments (PHP + MySQL)
  • Base de datos: MySQL (para EA)
  • Docker Compose: todo junto (web + easyappointments + mysql)

Cómo ejecutar (Desarrollo y Producción)

1. Levantar todo

docker compose up -d --build

2. Primer arranque (importante)

  1. Abre http://localhost:8888
  2. Completa el asistente de instalación de EasyAppointments.
  3. Crea un usuario administrador.
  4. Ve a Providers → crea al menos un proveedor (ej. "May").
  5. Ve a Services → crea tus servicios (puedes usar la lista anterior de servicios como referencia).
  6. Asigna los servicios al proveedor.
  7. Configura el Working Plan del proveedor (horario).
  8. Anota el ID del Provider (normalmente 1) y edita static/index.html → línea const PROVIDER_ID = 1;

3. Variables importantes en compose

Edita docker-compose.yml antes de levantar:

  • EA_API_USERNAME + EA_API_PASSWORD (o mejor: configura API Key en Settings de EA y usa EA_API_KEY)
  • BASE_URL del servicio easyappointments
  • Contraseña de MySQL

Actualizar

git pull
docker compose up -d --build

Notas sobre la integración

  • Los servicios y la disponibilidad los obtiene el frontend directamente de la API de EasyAppointments.
  • Al reservar:
    • Busca o crea automáticamente el cliente usando el email.
    • Crea la cita en EasyAppointments (con todos los servicios seleccionados en las notas).
  • La gestión completa (clientes, servicios, citas, proveedores, etc.) se hace desde http://localhost:8888
  • La API antigua (carpeta api/ + admin.html antigua + services.yml/mail.yml) ha sido eliminada completamente.

Comportamiento multiservicio

El formulario permite seleccionar varios servicios (multi-checkbox).

Cómo funciona actualmente con EasyAppointments:

  • UI: Puedes seleccionar múltiples servicios. Se muestra el resumen con nombres unidos por "+" y la duración total sumada.
  • Comprobación de disponibilidad: Se consulta el endpoint de EA usando el servicio de mayor duración de los seleccionados. EA devuelve los slots libres según ese servicio + el horario del proveedor.
  • Al crear la reserva:
    • Se crea una sola cita en EasyAppointments.
    • Se usa como serviceId el servicio de mayor duración (para que coincida con la disponibilidad consultada).
    • Se calcula la hora de fin sumando la duración total de todos los servicios seleccionados.
    • En el campo notes se guarda el detalle completo:
      Nombre: ...
      Email: ...
      Teléfono: ...
      Servicios: Corte + Tinte + ...
      Duración total: 120 min
      Mensaje: ...
      

Limitación: EasyAppointments modela una cita = un servicio principal. Los servicios adicionales quedan documentados en las notas del cliente y de la cita. No se crean múltiples registros de cita.

Recomendación: Si usas combinaciones frecuentes, crea "servicios combinados" directamente en EasyAppointments (ej. "Corte + Tinte Señora - 120min").