01

⚡ 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 receita
📋

Sem 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 operacional
🔁

Processo 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 operacional
📊

Zero 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 crescer
🎯

O 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.

02

🎯 Visão do Produto

O que é o Smart Booking e como funciona


3
Frentes integradas
4
Sprints planejadas
100%
Reservas automatizadas
Restaurantes
🖥

Painel Admin

Área restrita para gerenciar perfil, mesas, reservas e relatórios.

admin
🌐

Página Pública

Vitrine com fotos, calendário e formulário de reserva. Sem login.

público
🤖

Agente IA (n8n)

Atendimento no WhatsApp com consulta e notificações automáticas.

automação

Fluxo — Reserva pela Página Pública

1

Cliente acessa a página pública do restaurante

URL: smartbooking.app/r/nome-do-restaurante

2

Seleciona data disponível no calendário

Apenas dias com vagas são clicáveis

3

Preenche nome, WhatsApp, horário e nº de pessoas

Sem necessidade de criar conta

4

Reserva criada com status pending

Aguarda aprovação manual do admin

5

Admin notificado via WhatsApp pelo agente IA

n8n dispara a mensagem automaticamente

6

Admin aprova ou rejeita pelo painel

7

Cliente recebe confirmação ou rejeição via WhatsApp

Agente IA envia automaticamente

Status possíveis de uma reserva

pending confirmed rejected cancelled completed
03

🏗 Arquitetura Técnica

Stack, repositórios e comunicação entre camadas


CamadaTecnologiaJustificativa
FrontendReact + Preline UIInterface responsiva, componentes prontos, duas áreas no mesmo repo
BackendNode.js + ExpressAPI REST leve e de fácil manutenção
Banco de DadosSupabase (PostgreSQL)Gerenciado, autenticação nativa, Storage para fotos, SDK JS
Automação / IAn8n + Agente IAOrquestra fluxos de WhatsApp e webhooks
FotosSupabase StorageUpload 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.

04

🗄 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

ColunaTipoDescrição
guest_nameVARCHAR(150)Nome do cliente
guest_whatsappVARCHAR(30)WhatsApp para notificações
sourceVARCHAR(20)public · agent · manual
statusVARCHAR(20)
pendingconfirmedrejected
approved_byUUID FK nullableAdmin que aprovou/rejeitou
notification_sentBOOLEANSe o WhatsApp ao cliente foi disparado
05

🔌 Endpoints da API

Todas as rotas agrupadas por domínio


Autenticação

MétodoRotaDescriçãoAuth
POST/api/auth/registerCadastro de novo adminpública
POST/api/auth/loginLogin e retorno do JWTpública
GET/api/auth/meDados do usuário logadoJWT

Reservas — Admin

MétodoRotaDescriçãoAuth
GET/api/reservationsLista com filtrosJWT
POST/api/reservationsCria reserva manualJWT
PATCH/api/reservations/:id/approveAprova + dispara webhook n8nJWT
PATCH/api/reservations/:id/rejectRejeita + dispara webhook n8nJWT

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étodoRotaDescriçãoAuth
GET/api/agent/availabilityDisponibilidade por data, hora e capacidadeX-API-Token
POST/api/agent/reservationsRegistra reserva como pendingX-API-Token
06

📁 Repositórios

Estrutura de pastas e variáveis de ambiente


smart-booking-frontend

smart-booking-frontend/ ├── src/ │ ├── components/ │ ├── layouts/ │ │ ├── AdminLayout.jsx │ │ └── PublicLayout.jsx │ ├── pages/ │ │ ├── admin/ │ │ │ ├── Dashboard.jsx │ │ │ ├── Restaurant.jsx │ │ │ ├── Tables.jsx │ │ │ ├── Reservations.jsx │ │ │ └── Reports.jsx │ │ └── public/ │ │ └── RestaurantProfile.jsx │ ├── services/ │ ├── context/ │ └── hooks/

smart-booking-backend

smart-booking-backend/ ├── src/ │ ├── config/ │ ├── middlewares/ │ │ ├── auth.js # JWT │ │ └── apiToken.js │ ├── modules/ │ │ ├── auth/ │ │ ├── restaurant/ │ │ ├── tables/ │ │ ├── reservations/ │ │ ├── public/ │ │ ├── agent/ │ │ └── reports/ │ └── utils/ │ └── n8nNotifier.js
07

🌐 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.

08

💬 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.

09

📊 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 linha
🥧

Reservas por Status

Distribuição entre todos os status possíveis.

Gráfico de pizza
🪑

Taxa de Ocupação

% de ocupação de cada mesa no período.

Tabela + barra de progresso
🕐

Horários de Pico

Concentração de reservas confirmadas por hora.

Gráfico de barras
🔀

Origem das Reservas

% por origem: página pública, agente IA ou manual.

Gráfico de pizza
🖥

Dashboard — Cards do dia

Reservas pendentes · Confirmadas para hoje · Concluídas no mês · Taxa de ocupação atual

10

🚀 Sprints

Desenvolvimento incremental com entregas testáveis


SPRINT 1 MVP Core — Painel Admin + Reservas + Notificações 🎯 MVP

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

SPRINT 2 Página Pública + Agente IA no WhatsApp 🌐 público

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

SPRINT 3 Relatórios + Refinamentos de UX 📊 dados

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

SPRINT 4 Escalabilidade SaaS + Modelo de Assinatura 💰 SaaS

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