83 lines
2.4 KiB
Markdown
83 lines
2.4 KiB
Markdown
# Reserva Rede 1001
|
|
|
|
Página pública de reserva para as marcas do Grupo Nova (Hotel 1001 Noites, Prime, Express, Dolce Amore).
|
|
|
|
**Status:** Fase 1 — Fundação
|
|
|
|
## Stack
|
|
|
|
- Vite 6 + React 19 + TypeScript
|
|
- Tailwind v4 com paleta premium (obsidian/champagne/rose-gold)
|
|
- Supabase (Postgres + Auth + Storage), schema `reserva_hotel` no projeto InAudit Hotel
|
|
- framer-motion + anime.js
|
|
- Vitest + Testing Library
|
|
|
|
## Setup local
|
|
|
|
1. Instale as dependências:
|
|
```bash
|
|
pnpm install
|
|
```
|
|
|
|
2. Copie as variáveis de ambiente:
|
|
```bash
|
|
cp .env.local.example .env.local
|
|
```
|
|
Preencha `VITE_SUPABASE_ANON_KEY` com a anon key do projeto Supabase `acdvblhzzaneddlxqyst` (InAudit Hotel).
|
|
|
|
3. Rode o dev server:
|
|
```bash
|
|
pnpm dev
|
|
```
|
|
Abre em `http://localhost:5173`.
|
|
|
|
## Comandos
|
|
|
|
| Comando | Descrição |
|
|
|---|---|
|
|
| `pnpm dev` | Dev server com HMR |
|
|
| `pnpm build` | Build de produção |
|
|
| `pnpm preview` | Preview do build |
|
|
| `pnpm lint` | Roda ESLint |
|
|
| `pnpm format` | Formata com Prettier |
|
|
| `pnpm test` | Roda testes (Vitest) |
|
|
| `pnpm test:watch` | Testes em watch mode |
|
|
| `pnpm typecheck` | TypeScript check |
|
|
| `pnpm supabase:types` | Regenera tipos do Supabase |
|
|
|
|
## Estrutura
|
|
|
|
```
|
|
src/
|
|
├── components/ # Componentes React
|
|
│ └── ui/ # Primitivos shadcn/ui
|
|
├── lib/ # Clientes (supabase) e utils
|
|
├── types/ # Tipos gerados do Supabase
|
|
└── __tests__/ # Testes Vitest
|
|
supabase/
|
|
└── migrations/ # SQL de schema (source of truth)
|
|
_poc-reference/ # POC antigo — só pra consultar
|
|
```
|
|
|
|
## Paleta premium
|
|
|
|
| Token | Hex | Uso |
|
|
|---|---|---|
|
|
| `obsidian` | `#0B0D12` | Fundo principal |
|
|
| `midnight` | `#0F1A2E` | Superfícies elevadas |
|
|
| `champagne` | `#C9A961` | Ação primária, luxo |
|
|
| `rose-gold` | `#E8B4A0` | Acento secundário |
|
|
| `ivory` | `#F5F1E8` | Texto principal |
|
|
| `slate` | `#6B7280` | Texto secundário |
|
|
| `emerald` | `#10B981` | Sucesso |
|
|
| `ruby` | `#E11D48` | Erro |
|
|
|
|
## Integração com Chatwoot
|
|
|
|
Esta fase **não** integra com Chatwoot ainda. A geração de PIX acontece na Fase 2, onde um endpoint novo é criado no Chatwoot (`POST /public/api/v1/captain/public_reservations`) e esta app passa a consumir.
|
|
|
|
## Referências
|
|
|
|
- Spec de design: `chatwoot/docs/superpowers/specs/2026-04-13-reserva-1001-design.md`
|
|
- Plano Fase 1: `chatwoot/docs/superpowers/plans/2026-04-13-reserva-1001-fase-1-fundacao.md`
|