Commit Graph

17 Commits

Author SHA1 Message Date
Marco Gallegos
137cbfdf74 feat(critical): Implement weekly invitations reset
TASK 3: Implement weekly invitations reset - COMPLETED
- Create Edge Function: app/api/cron/reset-invitations/route.ts
- Resets weekly_invitations_used to 0 for all Gold tier customers
- Runs automatically every Monday 00:00 UTC
- Logs action to audit_logs table
- Authentication required (CRON_SECRET)

Configuration Required:
- Add CRON_SECRET to environment variables (.env.local)
- Configure Vercel Cron Job or similar for automatic execution:
  ```bash
  curl -X GET "https://aperture.anchor23.mx/api/cron/reset-invitations" \
    -H "Authorization: Bearer YOUR_CRON_SECRET"
  ```

Impact:
- Gold tier memberships now work correctly
- Weekly invitation quotas are automatically reset
- All actions are audited in audit_logs

Files Created:
- app/api/cron/reset-invitations/route.ts

Files Modified:
- TASKS.md (marked task 3 as completed)
- package-lock.json (updated dependency)

Next: Priority HIGH tasks (documentation & design)
2026-01-17 10:52:16 -06:00
Marco Gallegos
e33a9a4573 feat(critical): Implement critical Aperture features
TASK 1: Implement GET /api/aperture/stats
- Create endpoint at app/api/aperture/stats/route.ts
- Returns dashboard statistics: { totalBookings, totalRevenue, completedToday, upcomingToday }
- Calculates stats from bookings table by month and today
- Dashboard now has functional statistics display

TASK 2: Implement authentication for Aperture
- Create middleware.ts for protecting Aperture routes
- Only allows access to users with admin, manager, or staff roles
- Redirects unauthorized users to /aperture/login
- Uses Supabase Auth with session verification
- Integrates with existing AuthProvider in lib/auth/context.tsx

Stack Updates:
- Update @supabase/auth-helpers-nextjs to latest version (0.15.0)
- Note: Package marked as deprecated but still functional

Files Created:
- app/api/aperture/stats/route.ts
- middleware.ts

Files Modified:
- TASKS.md (marked tasks 1 and 2 as completed)
- package.json (updated dependency)

Impact:
- Aperture dashboard now has working statistics
- Aperture routes are now protected by authentication
- Only authorized staff/admin/manager can access dashboard

Next: Task 3 - Implement weekly invitation reset
2026-01-17 10:48:40 -06:00
Marco Gallegos
583a25a6f6 feat: implement customer registration flow and business hours system
Major changes:
- Add customer registration with email/phone lookup (app/booking/registro)
- Add customers API endpoint (app/api/customers/route)
- Implement business hours for locations (mon-fri 10-7, sat 10-6, sun closed)
- Fix availability function type casting issues
- Add business hours utilities (lib/utils/business-hours.ts)
- Update Location type to include business_hours JSONB
- Add mock payment component for testing
- Remove Supabase auth from booking flow
- Fix /cita redirect path in booking flow

Database migrations:
- Add category column to services table
- Add business_hours JSONB column to locations table
- Fix availability functions with proper type casting
- Update get_detailed_availability to use business_hours

Features:
- Customer lookup by email or phone
- Auto-redirect to registration if customer not found
- Pre-fill customer data if exists
- Business hours per day of week
- Location-specific opening/closing times
2026-01-17 00:29:49 -06:00
Marco Gallegos
fb60178c86 feat: implement public API routes and staff authentication
- Add public API endpoints for locations, services, and availability
- Implement staff login system with password authentication
- Update auth context to support password sign-in
- Protect aperture dashboard with authentication
- Update project documentation with new domains
2026-01-16 21:45:47 -06:00
Marco Gallegos
0f6fe9bf7b docs: update project documentation and types for Jan 2026 kiosk completion 2026-01-16 21:38:53 -06:00
Marco Gallegos
8fc9d3717e docs: add comprehensive code comments, update README and TASKS, create training and troubleshooting guides
- Add JSDoc comments to API routes and business logic functions
- Update README.md with Phase 2 status and deployment/production notes
- Enhance TASKS.md with estimated timelines and dependencies
- Create docs/STAFF_TRAINING.md for team onboarding
- Create docs/CLIENT_ONBOARDING.md for customer experience
- Create docs/OPERATIONAL_PROCEDURES.md for daily operations
- Create docs/TROUBLESHOOTING.md for common setup issues
- Fix TypeScript errors in hq/page.tsx
2026-01-16 18:42:45 -06:00
Marco Gallegos
28e98a2a44 feat: Complete SalonOS implementation with authentication, payments, reports, and documentation
- Implement client authentication with Supabase magic links
- Add Stripe payment integration for deposits
- Complete The Boutique booking flow with payment processing
- Implement Aperture backend with staff/resources management
- Add comprehensive reports: sales, payments, payroll
- Create permissions management system by roles
- Configure kiosk system with enrollment
- Add no-show logic and penalization system
- Update project documentation and API docs
- Enhance README with current project status
2026-01-16 17:35:29 -06:00
Marco Gallegos
0016bfb1e5 feat: Completar implementación de The Boutique
**The Boutique - Frontend completo para clientes:**
- Página de login/signup (/booking/login)
  - Autenticación con email/password
  - Registro de nuevos clientes
  - Validación de formularios
  - Diseño responsive y accesible

- Página de perfil (/booking/perfil)
  - Información personal del cliente
  - Edición de datos (modal)
  - Estadísticas de actividad
  - Historial de citas recientes
  - Información de membresía (tier)

- Página Mis Citas (/booking/mis-citas)
  - Lista completa de citas
  - Filtros: todas, próximas, pasadas
  - Detalles completos de cada cita
  - Opción de cancelar citas pendientes
  - Estados visuales por estatus
  - Información de códigos de reserva

- Layout mejorado (/booking/layout)
  - Navbar completo con todas las opciones
  - Navegación entre secciones
  - Estilos consistentes con anchor23.mx

**Funcionalidades implementadas:**
- Gestión completa del perfil de cliente
- Historial y gestión de citas
- Sistema de autenticación básico
- Navegación fluida entre secciones
- Estados de carga y manejo de errores
- Diseño responsive para móviles

**Datos mock/simulados:**
- Perfiles de cliente con tiers
- Historial de citas con diferentes estados
- Información de staff y servicios
- Validación de formularios

**Próximos pasos:**
- Integración con APIs reales de autenticación
- Conexión con Stripe para pagos
- Sincronización con base de datos real
- Notificaciones por email/WhatsApp
2026-01-16 16:36:54 -06:00
Marco Gallegos
aeb11e1e96 feat: Implementar base de Aperture (aperture.anchor23.mx)
**Aperture - Backend para staff/manager/admin:**
- Crear página principal de admin (/aperture)
  - Dashboard con estadísticas del día (citas, ingresos, pendientes)
  - Navegación por tabs (Dashboard, Staff, Recursos, Reportes)
  - Diseño limpio con métricas y cards

- Crear APIs administrativas:
  - /api/aperture/staff - Staff disponible por ubicación
  - /api/aperture/staff/schedule - CRUD de horarios de staff
    - GET: Listar horarios con filtros
    - POST: Crear bloqueo de horario
    - DELETE: Eliminar horario
  - /api/aperture/resources - Recursos por ubicación
  - /api/aperture/dashboard - Bookings por fecha y staff

**The Boutique - Mejoras:**
- Página de confirmación por código (/booking/confirmacion)
  - Verificación por short_id
  - Detalles completos de cita
  - Información sobre políticas
- Layout personalizado con navbar específico

**TASKS.md - Actualización:**
- Aperture marcado como 'En Progreso' con APIs implementadas
- The Boutique actualizado con página de confirmación
- Reorganización de tareas prioritarias
- Estado del proyecto actualizado (Fase 2: 30%)

**Arquitectura:**
- Separación clara: anchor23.mx (marketing), booking (cliente), aperture (operaciones)
- APIs RESTful para gestión administrativa
- Dashboard responsive con métricas operativas
2026-01-16 16:32:43 -06:00
Marco Gallegos
cf2d8f9b4d feat: Agregar botones Book Now y Memberships al navbar
**Navbar Principal (anchor23.mx):**
- Reemplazar botón único "Solicitar Membresía" por dos botones:
  - "Book Now" → /booking/servicios (The Boutique)
  - "Memberships" → /membresias
- Mantener estructura limpia con 2 botones en nav-actions

**The Boutique (booking.anchor23.mx):**
- Crear layout específico con navbar personalizada
- Navbar incluye: logo, "Book Now", "Memberships", "Mis Citas", "Perfil"
- Estilos .booking-header y .booking-nav para header personalizado
- Compartir estilos base con anchor23.mx

**Páginas The Boutique:**
- /booking/servicios - Selección de servicios con calendario interactivo
- /booking/cita - Confirmación de reserva con formulario de cliente
- /booking/confirmacion - Página de confirmación por código (short_id)
- API endpoints para servicios y ubicaciones

**Estilos:**
- Mantener paleta de colores de anchor23.mx (Bone White, Soft Cream, Membresías)
- Consistencia visual entre anchor23.mx y The Boutique
- Responsive para móviles
2026-01-16 16:21:46 -06:00
Marco Gallegos
fbd3038ace feat: Iniciar implementación de The Boutique (booking.anchor23.mx)
**Frontend (booking.anchor23.mx):**
- Crear página de selección de servicios (/booking/servicios)
  - Catálogo de servicios con precios y duración
  - Selección de ubicación
  - Calendario interactivo para selección de fecha y hora
  - Validación de disponibilidad en tiempo real
  - Resumen de reserva con precio

- Crear página de confirmación de reserva (/booking/cita)
  - Resumen detallado de la cita (servicio, fecha, hora, ubicación)
  - Formulario para datos del cliente (nombre, email, teléfono, notas)
  - Confirmación visual de la reserva
  - Redirección a página de confirmación exitosa

**Backend APIs:**
- Crear /api/services para obtener servicios activos
  - Filtrar por ubicación si se especifica
  - Retornar precio y duración de cada servicio

- Crear /api/locations para obtener ubicaciones activas
  - Retornar lista de locations con timezone

**Documentación:**
- Actualizar TASKS.md con progreso de The Boutique (20%)
- Agregar nuevas tareas pendientes (aperture, api pública)
- Actualizar README.md con:
  - Nueva estructura de rutas (/booking/*)
  - Nuevas APIs (/api/services, /api/locations)
  - Estado actualizado de The Boutique
  - Actualizar Fase 2 al 20% completado

**Estilos:**
- Mantener paleta de colores de anchor23.mx
- Diseño consistente con el resto del sitio
- Responsive para móviles
2026-01-16 16:15:21 -06:00
Marco Gallegos
c864f47382 style: Ajustar estilos según site_requirements.md
- Aplicar paleta de colores específica (Bone White, Soft Cream, Mocha Taupe, Deep Earth, Charcoal Brown)
- Eliminar colores saturados, gradientes y sombras duras
- Usar fuente serif Playfair Display para headings
- Aumentar márgenes y espaciado (grid amplio, espacio negativo dominante)
- Ajustar copy de landing page según especificaciones
  - Subtítulo: "Belleza anclada en exclusividad"
  - Fundamento: Texto completo de site_requirements
  - Servicios: Descripciones actualizadas
- Actualizar servicios page con descripciones correctas
- Layout: Ritmo vertical lento, sin UI densa
2026-01-16 15:58:28 -06:00
Marco Gallegos
bf607f7aa6 feat: Implementar frontend completo de anchor23.mx
- Crear landing page con hero, fundamento, servicios y testimoniales
- Crear página de servicios con grid y descripciones
- Crear página de historia con filosofía de la marca
- Crear página de contacto con formulario
- Crear página de franchises con solicitud
- Crear página de membresías con 3 tiers (Gold, Black, VIP)
- Crear páginas de Privacy Policy y Legal
- Implementar header y footer global
- Estilos con Tailwind CSS según especificaciones
- HTML semántico y estructura clara
- Conversión silenciosa hacia booking.anchor23.mx
2026-01-16 15:45:28 -06:00
Marco Gallegos
0785d5230f feat: Implementar HQ Dashboard
- Crear página principal de HQ Dashboard
- Mostrar calendario diario con reservas
- Listado de reservas con información detallada
- Vista de disponibilidad de staff
- PATCH endpoint para actualizar estado de reservas
- Integrar con API de disponibilidad y reservas
2026-01-16 15:20:24 -06:00
Marco Gallegos
8d33778779 feat: Implementar API de reservas para clientes
- Crear route /api/bookings con POST y GET
- Validar disponibilidad de staff y recursos
- Crear cliente si no existe
- Generar short_id para reservas
- Utilizar RPC functions de disponibilidad
- Agregar utilidad generateShortId
2026-01-16 15:17:01 -06:00
Marco Gallegos
accf0e81e1 feat: Implementar sistema de disponibilidad y corregir errores de kiosko
- Agregar API routes de disponibilidad (blocks, staff, time-slots, staff-unavailable)
- Corregir autenticación en availability routes (reemplazar get_current_user_role con validación Bearer)
- Corregir DELETE en blocks/route.ts para usar query parameters
- Corregir errores de tipos en kiosk routes (supabase → supabaseAdmin)
- Agregar layout raíz de Next.js y estilos globales
- Agregar componente Badge UI
- Corregir tipos TypeScript en WalkInFlow
- Instalar dependencias necesarias (@radix-ui/*, class-variance-authority, etc)
- Agregar migraciones de disponibilidad
2026-01-16 15:12:57 -06:00
Marco Gallegos
fed5cb6850 feat: Implementar sistema de kiosko, enrollment e integración Telegram
## Sistema de Kiosko 
- Nuevo rol 'kiosk' en enum user_role
- Tabla kiosks con autenticación por API key (64 caracteres)
- Funciones SQL: generate_kiosk_api_key(), is_kiosk(), get_available_resources_with_priority()
- API Routes: authenticate, bookings (GET/POST), confirm, resources/available, walkin
- Componentes UI: BookingConfirmation, WalkInFlow, ResourceAssignment
- Página kiosko: /kiosk/[locationId]/page.tsx

## Sistema de Enrollment 
- API routes para administración: /api/admin/users, /api/admin/kiosks, /api/admin/locations
- Frontend enrollment: /admin/enrollment con autenticación por ADMIN_KEY
- Creación de staff (admin, manager, staff, artist) con Supabase Auth
- Creación de kiosks con generación automática de API key
- Componentes UI: card, button, input, label, select, tabs

## Actualización de Recursos 
- Reemplazo de recursos con códigos estándarizados
- Estructura por location: 3 mkup, 1 lshs, 4 pedi, 4 mani
- Migración de limpieza: elimina duplicados
- Total: 12 recursos por location

## Integración Telegram y Scoring 
- Campos agregados a staff: telegram_id, email, gmail, google_account, telegram_chat_id
- Sistema de scoring: performance_score, total_bookings_completed, total_guarantees_count
- Tablas: telegram_notifications, telegram_groups, telegram_bots
- Funciones: update_staff_performance_score(), get_top_performers(), get_performance_summary()
- Triggers automáticos: notificaciones al crear/confirmar/completar booking
- Cálculo de score: base 50 +10 por booking +5 por garantía +1 por $100

## Actualización de Tipos 
- UserRole: agregado 'kiosk'
- CustomerTier: agregado 'black', 'VIP'
- Nuevas interfaces: Kiosk

## Documentación 
- KIOSK_SYSTEM.md: Documentación completa del sistema
- KIOSK_IMPLEMENTATION.md: Guía rápida
- ENROLLMENT_SYSTEM.md: Sistema de enrollment
- RESOURCES_UPDATE.md: Actualización de recursos
- PROJECT_UPDATE_JAN_2026.md: Resumen de proyecto

## Componentes UI (7)
- button.tsx, card.tsx, input.tsx, label.tsx, select.tsx, tabs.tsx

## Migraciones SQL (4)
- 20260116000000_add_kiosk_system.sql
- 20260116010000_update_resources.sql
- 20260116020000_cleanup_and_fix_resources.sql
- 20260116030000_telegram_integration.sql

## Métricas
- ~7,500 líneas de código
- 32 archivos creados/modificados
- 7 componentes UI
- 10 API routes
- 4 migraciones SQL
2026-01-16 10:51:12 -06:00