Smart Booking
MVP⚡ Dor do Cliente
Problemas comuns em restaurantes sem um sistema de reservas
O cenário mais comum
A maioria dos restaurantes ainda gerencia reservas por WhatsApp, telefone e caderno. À medida que o movimento cresce, o processo quebra — e quem paga o preço é o cliente e a reputação do negócio.
Canais de atendimento sem resposta
WhatsApp, telefone e Instagram acumulam mensagens sem retorno. O cliente desiste silenciosamente e vai para a concorrência — sem que o restaurante perceba.
perda de receitaSem controle centralizado
Reservas anotadas em cadernos, planilhas ou na memória. A equipe não tem visibilidade, e overbooking ou mesas não preparadas viram rotina.
risco operacionalProcesso 100% manual e repetitivo
Confirmar, reagendar, lembrar e notificar são tarefas feitas uma a uma. Tempo e energia da equipe desperdiçados em tarefas que poderiam ser automatizadas.
ineficiência operacionalZero visibilidade sobre o negócio
Sem dados históricos, é impossível saber quais horários lotam, quais mesas rendem mais ou de onde vêm os clientes. Decisões baseadas em achismo.
sem dados para crescerO Smart Booking resolve exatamente isso
Painel centralizado para o admin, página pública para o cliente reservar sem friccão, e um agente de IA que atende no WhatsApp automaticamente — 24h por dia, 7 dias por semana.
🎯 Visão do Produto
O que é o Smart Booking e como funciona
Painel Admin
Área restrita para gerenciar perfil, mesas, reservas e relatórios.
adminPágina Pública
Vitrine com fotos, calendário e formulário de reserva. Sem login.
públicoAgente IA (n8n)
Atendimento no WhatsApp com consulta e notificações automáticas.
automaçãoFluxo — Reserva pela Página Pública
Cliente acessa a página pública do restaurante
URL: smartbooking.app/r/nome-do-restaurante
Seleciona data disponível no calendário
Apenas dias com vagas são clicáveis
Preenche nome, WhatsApp, horário e nº de pessoas
Sem necessidade de criar conta
Reserva criada com status pending
Aguarda aprovação manual do admin
Admin notificado via WhatsApp pelo agente IA
n8n dispara a mensagem automaticamente
Admin aprova ou rejeita pelo painel
Cliente recebe confirmação ou rejeição via WhatsApp
Agente IA envia automaticamente
Status possíveis de uma reserva
🏗 Arquitetura Técnica
Stack, repositórios e comunicação entre camadas
| Camada | Tecnologia | Justificativa |
|---|---|---|
| Frontend | React + Preline UI | Interface responsiva, componentes prontos, duas áreas no mesmo repo |
| Backend | Node.js + Express | API REST leve e de fácil manutenção |
| Banco de Dados | Supabase (PostgreSQL) | Gerenciado, autenticação nativa, Storage para fotos, SDK JS |
| Automação / IA | n8n + Agente IA | Orquestra fluxos de WhatsApp e webhooks |
| Fotos | Supabase Storage | Upload e CDN integrado |
Dois tipos de token
JWT (login): Autenticação do admin no painel. Rotativo a cada sessão.
API Token (UUID fixo): Usado pelo agente IA via n8n. Garante multitenancy — cada token só acessa dados do seu restaurante.
🗄 Banco de Dados
Modelo de dados — Supabase (PostgreSQL)
users
Admins da plataforma
restaurants
Perfil + token de API
restaurant_photos
Galeria pública
tables
Mesas por restaurante
reservations
Log completo de reservas
Tabela: reservations
| Coluna | Tipo | Descrição |
|---|---|---|
guest_name | VARCHAR(150) | Nome do cliente |
guest_whatsapp | VARCHAR(30) | WhatsApp para notificações |
source | VARCHAR(20) | public · agent · manual |
status | VARCHAR(20) | pendingconfirmedrejected |
approved_by | UUID FK nullable | Admin que aprovou/rejeitou |
notification_sent | BOOLEAN | Se o WhatsApp ao cliente foi disparado |
🔌 Endpoints da API
Todas as rotas agrupadas por domínio
Autenticação
| Método | Rota | Descrição | Auth |
|---|---|---|---|
| POST | /api/auth/register | Cadastro de novo admin | pública |
| POST | /api/auth/login | Login e retorno do JWT | pública |
| GET | /api/auth/me | Dados do usuário logado | JWT |
Reservas — Admin
| Método | Rota | Descrição | Auth |
|---|---|---|---|
| GET | /api/reservations | Lista com filtros | JWT |
| POST | /api/reservations | Cria reserva manual | JWT |
| PATCH | /api/reservations/:id/approve | Aprova + dispara webhook n8n | JWT |
| PATCH | /api/reservations/:id/reject | Rejeita + dispara webhook n8n | JWT |
Agente IA (X-API-Token)
Endpoints exclusivos para o n8n
Autenticação via header X-API-Token. Dados sempre filtrados pelo restaurante do token.
| Método | Rota | Descrição | Auth |
|---|---|---|---|
| GET | /api/agent/availability | Disponibilidade por data, hora e capacidade | X-API-Token |
| POST | /api/agent/reservations | Registra reserva como pending | X-API-Token |
📁 Repositórios
Estrutura de pastas e variáveis de ambiente
smart-booking-frontend
smart-booking-backend
🌐 Página Pública
Vitrine + calendário + formulário de reserva
Header / Capa
Imagem, nome, endereço e horários.
Galeria
Grid de fotos gerenciadas pelo Supabase Storage.
Calendário
Dias disponíveis clicáveis, passados bloqueados.
Formulário
Nome, WhatsApp, horário, nº de pessoas. Sem login.
Confirmação
"Solicitação recebida! Aguarde confirmação."
Lógica de disponibilidade
Dias passados → bloqueados · Fora do horário de funcionamento → bloqueados · Todas as mesas ocupadas → indisponível · Ao menos um horário livre → clicável · Ao clicar, exibe os horários com vagas.
💬 Notificações (n8n)
WhatsApp automatizado para admin e cliente
Nova reserva criada → Admin notificado
Backend dispara webhook → n8n envia WhatsApp para o admin com nome, data, hora e instrução para acessar o painel.
Admin aprova ou rejeita no painel
Ação no painel dispara webhook para o n8n com o status e os dados do cliente.
Aprovada → Cliente recebe confirmação
Agente IA envia mensagem com data, hora e informações do restaurante.
Rejeitada → Cliente recebe rejeição
Agente IA envia mensagem com sugestão de nova data ou contato direto.
📊 Relatórios
Métricas operacionais para decisões baseadas em dados
Reservas por Período
Total no intervalo selecionado, separado por status.
Card + gráfico de linhaReservas por Status
Distribuição entre todos os status possíveis.
Gráfico de pizzaTaxa de Ocupação
% de ocupação de cada mesa no período.
Tabela + barra de progressoHorários de Pico
Concentração de reservas confirmadas por hora.
Gráfico de barrasOrigem das Reservas
% por origem: página pública, agente IA ou manual.
Gráfico de pizzaDashboard — Cards do dia
Reservas pendentes · Confirmadas para hoje · Concluídas no mês · Taxa de ocupação atual
🚀 Sprints
Desenvolvimento incremental com entregas testáveis
Sistema funcionando para o restaurante gerenciar mesas e reservas com notificações via WhatsApp.
Autenticação: cadastro, login e proteção de rotas
Frontend + Backend
Perfil do restaurante: criar e editar dados básicos
Frontend + Backend
Geração e exibição do token de API
Backend
Cadastro, edição e desativação de mesas
Frontend + Backend
Listagem e criação manual de reservas pelo admin
Frontend + Backend
Aprovação e rejeição de reservas pelo painel
Frontend + Backend
Notificação WhatsApp ao admin — nova reserva (n8n)
Backend + n8n
Notificação WhatsApp ao cliente — aprovação/rejeição
Backend + n8n
Clientes reservam pelo site. Agente IA atende no WhatsApp.
Página pública com informações e horários
Frontend + Backend
Galeria de fotos: upload pelo admin + exibição pública
Frontend + Backend + Supabase Storage
Calendário de disponibilidade na página pública
Frontend + Backend
Formulário de reserva sem login
Frontend + Backend
Endpoints do agente IA + fluxo n8n completo
Backend + n8n
Métricas operacionais e melhorias baseadas no uso real.
Dashboard com cards de resumo do dia
Frontend + Backend
Relatórios: reservas, status, ocupação, pico e origem
Frontend + Backend
Refinamentos de UX e responsividade
Frontend
Preparar o produto para múltiplos restaurantes e monetização.
Landing page do Smart Booking
Frontend
Planos e assinaturas (gratuito, básico, premium)
Frontend + Backend
Onboarding guiado para novos restaurantes
Frontend
Exportação de relatórios em CSV
Backend