Inclui:
- Arquitetura multi-tenant via subdominio + fallback dev
- Tabela de tenants de teste (grupo-1001 e motel-ocean)
- Credenciais de admin de teste
- Passo-a-passo pra criar novo tenant via SQL
- Documentacao das 8 abas do admin
- Instrucoes do bucket reserva-fotos no Supabase Storage
- Plano de deploy Vercel com wildcard domain
- CategoriasTab: edita marcas.categorias[] via lista reordenavel
- PrecosTab: grid categoria x permanencia, salva via delete + insert
- FotosTab: upload pro Supabase Storage (bucket reserva-fotos) + URL manual + reorder
- ExtrasTab: CRUD padrao com titulo/preco/descricao
- ReservasTab: read-only com filtros (status/datas) + link pra conversa no Chatwoot
- AdminLayout TABS com as 8 abas
- Router com todas as rotas
- react-router-dom + rotas / publica e /admin/*
- src/hooks/useAuth.ts com Supabase Auth
- AuthGate, LoginPage, AdminLayout com nav tabs e logout
- AparenciaTab edita identidade visual: textos, logo, 5 cores via
react-colorful, 2 fontes via dropdown curado (Fraunces/Playfair/etc)
- Apos salvar, TenantProvider.refresh() re-aplica tema
- App.tsx renomeado pra pages/ReservationPage.tsx
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- tenant_members mapeia auth.users a um tenant com role
- RLS: members_read_own (user ve so os tenants dos quais participa)
- Seed manual: admin@reserva.test (senha Admin1234!) associado ao
tenant grupo-1001 como admin
- Novas tabelas reserva_hotel.tenants e reserva_hotel.app_config
- Coluna tenant_id adicionada em todas as tabelas de catalogo/reservas
- Tenant default 'grupo-1001' criado + backfill das rows existentes
- RLS + grants pro anon ler tenants e app_config
- Types TS regenerados
Aplicado via MCP. Arquivos de migration sao source of truth historica.
Usa --project-id em vez de --linked pra evitar exigir senha do DB.
Tipos gerados diretamente do schema reserva_hotel do projeto InAudit Hotel
(acdvblhzzaneddlxqyst).