mirror of
https://github.com/marcogll/AnchorOS.git
synced 2026-03-15 16:24:30 +00:00
✅ COMENTARIOS AUDITABLES IMPLEMENTADOS: - 80+ archivos con JSDoc completo para auditoría manual - APIs críticas con validaciones business/security/performance - Componentes con reglas de negocio documentadas - Funciones core con edge cases y validaciones ✅ CALENDARIO MULTI-COLUMNA FUNCIONAL (95%): - Drag & drop con reprogramación automática - Filtros por sucursal/staff, tiempo real - Indicadores de conflictos y disponibilidad - APIs completas con validaciones de colisión ✅ GESTIÓN OPERATIVA COMPLETA: - CRUD staff: APIs + componente con validaciones - CRUD recursos: APIs + componente con disponibilidad - Autenticación completa con middleware seguro - Auditoría completa en todas las operaciones ✅ DOCUMENTACIÓN ACTUALIZADA: - TASKS.md: FASE 4 95% completado - README.md: Estado actual y funcionalidades - API.md: 40+ endpoints documentados ✅ SEGURIDAD Y VALIDACIONES: - RLS policies documentadas en comentarios - Business rules validadas manualmente - Performance optimizations anotadas - Error handling completo Próximos: Nómina/POS/CRM avanzado (FASE 4 final)
6.3 KiB
6.3 KiB
AnchorOS API Documentation
Overview
AnchorOS is a comprehensive salon management system built with Next.js, Supabase, and Stripe integration.
Authentication
- Client Authentication: Magic link via Supabase Auth
- Staff/Admin Authentication: Supabase Auth with role-based access
- Kiosk Authentication: API key based
API Endpoints
Public APIs
Services
GET /api/services- List all available servicesPOST /api/services- Create new service (Admin only)
Locations
GET /api/locations- List all salon locations
Availability
GET /api/availability/time-slots- Get available time slots for bookingPOST /api/availability/staff-unavailable- Mark staff unavailable (Staff auth required)GET /api/availability/blocks- Get manual availability blocksGET /api/public/availability- Get public availability information (no auth required)POST /api/availability/staff- Set staff availability
Customers
GET /api/customers- Search customer by email or phonePOST /api/customers- Register new customer
Bookings (Public)
POST /api/bookings- Create new booking (supports customer_id or customer info)GET /api/bookings/[id]- Get booking detailsPATCH /api/bookings/[id]- Update booking (partial update)PUT /api/bookings/[id]- Update booking (full replacement)
Staff/Admin APIs (Aperture)
Dashboard
GET /api/aperture/dashboard- Dashboard dataGET /api/aperture/stats- Statistics
Staff Management
GET /api/aperture/staff- List staff with filters (location, role, schedule)POST /api/aperture/staff- Create new staff memberGET /api/aperture/staff/[id]- Get specific staff memberPUT /api/aperture/staff/[id]- Update staff memberDELETE /api/aperture/staff/[id]- Deactivate staff member
Resources Management
GET /api/aperture/resources- List resources with availabilityPOST /api/aperture/resources- Create new resourceGET /api/aperture/resources/[id]- Get specific resourcePUT /api/aperture/resources/[id]- Update resourceDELETE /api/aperture/resources/[id]- Deactivate resource
Calendar Management
GET /api/aperture/calendar- Get calendar data with bookingsPOST /api/aperture/bookings/[id]/reschedule- Reschedule booking
Locations
GET /api/aperture/locations- List all locations
Reports
GET /api/aperture/reports/sales- Sales reportsGET /api/aperture/reports/payments- Payment reportsGET /api/aperture/reports/payroll- Payroll reports
Permissions
GET /api/aperture/permissions- Get role permissionsPOST /api/aperture/permissions- Update permissions
Kiosk APIs
POST /api/kiosk/authenticate- Authenticate kioskGET /api/kiosk/resources/available- Get available resources for kioskPOST /api/kiosk/bookings- Create walk-in bookingPOST /api/kiosk/walkin- Create walk-in booking without reservationPUT /api/kiosk/bookings/[shortId]/confirm- Confirm booking
Payment APIs
POST /api/create-payment-intent- Create Stripe payment intent
Admin APIs
GET /api/admin/locations- List locations (Admin key required)POST /api/admin/users- Create staff/userPOST /api/admin/kiosks- Create kiosk
Data Models
User Roles
customer- End customersstaff- Salon staffartist- Service providersmanager- Location managersadmin- System administratorskiosk- Kiosk devices
Key Tables
locations- Salon locations with business hours (JSONB)staff- Staff membersservices- Available services with categoryresources- Physical resources (stations)customers- Customer profilesbookings- Service bookingskiosks- Kiosk devicesaudit_logs- System audit trail
Business Hours Structure
Locations table includes business_hours JSONB column with format:
{
"monday": {"open": "10:00", "close": "19:00", "is_closed": false},
"tuesday": {"open": "10:00", "close": "19:00", "is_closed": false},
"wednesday": {"open": "10:00", "close": "19:00", "is_closed": false},
"thursday": {"open": "10:00", "close": "19:00", "is_closed": false},
"friday": {"open": "10:00", "close": "19:00", "is_closed": false},
"saturday": {"open": "10:00", "close": "18:00", "is_closed": false},
"sunday": {"is_closed": true}
}
Default business hours (updated via migration):
- Monday-Friday: 10:00 AM - 7:00 PM
- Saturday: 10:00 AM - 6:00 PM
- Sunday: Closed
Environment Variables
Required
NEXT_PUBLIC_SUPABASE_URLNEXT_PUBLIC_SUPABASE_ANON_KEYSUPABASE_SERVICE_ROLE_KEYNEXT_PUBLIC_STRIPE_PUBLISHABLE_KEYSTRIPE_SECRET_KEY
Optional
ADMIN_ENROLLMENT_KEY- For staff enrollmentGOOGLE_SERVICE_ACCOUNT_KEY- For Calendar sync
Deployment
Prerequisites
- Node.js 18+
- Supabase account
- Stripe account
- Google Cloud (for Calendar)
Setup Steps
- Clone repository
- Install dependencies:
npm install - Configure environment variables
- Run database migrations:
npm run db:migrate - Seed data:
npm run db:seed - Build:
npm run build - Start:
npm start
Features
Core Functionality
- Multi-location salon management
- Real-time availability system with business hours
- Customer registration and lookup by email/phone
- Location-specific opening/closing times
- Automated payment processing (currently mock)
- Staff scheduling and payroll
- Customer relationship management
- Kiosk system for walk-ins
Booking Flow
- Customer selects service and location
- Customer chooses date and time slot
- Customer searches by email or phone:
- If found: Pre-fill data and proceed
- If not found: Redirect to registration
- Customer completes registration if needed
- Customer confirms personal details
- Customer pays deposit (mock currently)
- Booking confirmed with email confirmation
Advanced Features
- Role-based access control
- Audit logging
- Automated no-show handling
- Commission-based payroll
- Sales analytics and reporting
- Permission management
Security
- Row Level Security (RLS) in Supabase
- API key authentication for kiosks
- Magic link authentication for customers
- Encrypted payment processing
Support
For API issues or feature requests, please check the TASKS.md for current priorities or create an issue in the repository.