# Sistema de Solicitação de Bolos e Doces Implementation Plan

> **For Hermes:** Use subagent-driven-development skill to implement this plan task-by-task.

**Goal:** Construir um sistema onde clientes possam escolher bolos, doces e kits, personalizar o pedido, agendar retirada ou entrega e enviar a solicitação para a loja confirmar.

**Architecture:** O MVP deve começar como uma aplicação web responsiva com catálogo público, configurador de produto, carrinho local persistente, checkout simplificado e handoff para WhatsApp. Em fases futuras, adicionar painel administrativo, status de pedidos, pagamento e calendário de produção.

**Tech Stack:** A definir. Recomendação inicial: Next.js ou Laravel para web app, banco PostgreSQL ou SQLite no MVP, Tailwind CSS para interface, integração WhatsApp via link `wa.me` no início e API oficial futuramente.

---

## 1. Visão do produto

O sistema será uma plataforma para confeitarias, boleiras, docerias e lojas de presentes receberem encomendas organizadas. A ideia é transformar um pedido informal de WhatsApp em um fluxo guiado:

1. Cliente escolhe uma categoria.
2. Cliente escolhe um produto.
3. Cliente personaliza tamanho, massa, recheio, cobertura e adicionais.
4. Cliente escolhe retirada ou entrega.
5. Cliente agenda data e horário.
6. Cliente informa nome e WhatsApp.
7. Sistema gera resumo e envia para a loja confirmar.

## 2. Referência analisada

Referência: `https://www.latrufeljoaopessoa.com.br/`

O site analisado funciona como cardápio online com carrinho, produtos por categoria, personalização obrigatória, horários programados, cadastro e finalização. O fluxo observado mostrou boa base funcional, mas com oportunidades claras de melhoria em UX, clareza, rotas, cadastro progressivo e CTAs.

## 3. Público-alvo

- Confeitarias.
- Boleiras independentes.
- Docerias.
- Cafeterias.
- Lojas de cestas e presentes.
- Pequenos negócios que vendem por encomenda.

## 4. Proposta de valor

Para a loja:

- Receber pedidos mais organizados.
- Reduzir erros de sabor, tamanho, data e endereço.
- Facilitar confirmação por WhatsApp.
- Organizar agenda de produção.
- Evitar excesso de mensagens repetitivas.

Para o cliente:

- Ver opções com preço.
- Personalizar pedido sem confusão.
- Saber prazo, tamanho e valor estimado.
- Agendar retirada ou entrega.
- Enviar pedido pronto para confirmação.

## 5. MVP recomendado

### 5.1 Catálogo público

Funcionalidades:

- Página pública da loja.
- Banner promocional.
- Categorias.
- Lista de produtos.
- Busca por produto.
- Destaques: mais vendidos, pronta entrega, encomenda.
- Produtos ativos/inativos.

Campos do produto:

- Nome.
- Slug.
- Descrição curta.
- Descrição completa.
- Imagem.
- Preço inicial.
- Categoria.
- Prazo mínimo de produção.
- Selo: pronta entrega, encomenda, presenteável, personalizado.
- Status: ativo/inativo.

### 5.2 Configurador de produto

Cada produto poderá ter grupos de opções.

Exemplo: Bolo de Morango

Grupo: Tamanho  
Obrigatório: sim  
Mínimo: 1  
Máximo: 1

- Mini — R$ 35,00 — ideal para 2 pessoas.
- PP — R$ 120,00 — ideal para 8 a 10 pessoas.
- Pequeno — R$ 180,00 — ideal para 15 pessoas.
- Médio — R$ 250,00 — ideal para 25 pessoas.

Grupo: Massa  
Obrigatório: sim  
Mínimo: 1  
Máximo: 1

- Branca.
- Chocolate.
- Red velvet.

Grupo: Recheio  
Obrigatório: sim  
Mínimo: 1  
Máximo: 2

- Brigadeiro.
- Ninho.
- Doce de leite.
- Morango.

Grupo: Adicionais  
Obrigatório: não  
Mínimo: 0  
Máximo: vários

- Topper.
- Velinha.
- Morangos extras.
- Embalagem presenteável.

Também deve existir campo de observações:

- Texto livre para mensagem no bolo, restrições ou instruções.

### 5.3 Carrinho

Funcionalidades:

- Adicionar item configurado.
- Editar item.
- Remover item.
- Alterar quantidade.
- Exibir opções escolhidas.
- Exibir subtotal.
- Exibir taxa de entrega quando aplicável.
- Exibir total estimado.
- Persistir carrinho no navegador.
- Manter rota `/carrinho` funcionando mesmo ao recarregar.

### 5.4 Entrega e retirada

Opções:

- Retirada na loja.
- Delivery.
- Delivery programado.
- Retirada programada.

Regras:

- Cada produto pode ter prazo mínimo de produção.
- Loja pode bloquear datas.
- Loja pode configurar faixas de horário.
- Loja pode limitar quantidade de pedidos por horário.
- Endereço só deve ser pedido quando o cliente escolher delivery.

Exemplo de faixas:

- 09:00 às 11:00.
- 11:00 às 13:00.
- 13:00 às 15:00.
- 15:00 às 17:00.
- 17:00 às 19:00.

### 5.5 Cadastro mínimo

No MVP, pedir apenas:

- Nome.
- WhatsApp.
- E-mail opcional.

Para delivery, pedir também:

- CEP.
- Rua.
- Número.
- Bairro.
- Complemento.
- Ponto de referência.

Evitar no MVP:

- CPF obrigatório.
- Data de nascimento obrigatória.
- Senha obrigatória.
- Cadastro longo antes do cliente ver o resumo.

### 5.6 Finalização pelo WhatsApp

No MVP, o pedido será enviado pelo WhatsApp da loja usando um link gerado automaticamente.

Mensagem exemplo:

```text
Olá! Quero fazer uma encomenda:

Produto: Bolo de Abacaxi
Tamanho: Mini
Massa: Branca
Quantidade: 1
Data: 24/05/2026
Horário: 09:00 às 11:00
Tipo: Retirada na loja
Total estimado: R$ 35,00

Nome: Júlio
WhatsApp: (83) 99999-9999
Observações: colocar mensagem de aniversário.
```

## 6. Diferenciais em relação à referência

O sistema deve melhorar os seguintes pontos observados no site analisado:

- CTA forte na primeira tela: “Pedir agora”, “Montar meu bolo”, “Ver mais vendidos”.
- Produto mais visual, com foto, preço e prazo mínimo claros.
- Cadastro progressivo: pedir endereço apenas para delivery.
- Mensagens de validação mais amigáveis.
- Rotas estáveis: `/carrinho` e `/checkout` não podem retornar 404.
- Melhor copy e revisão de português.
- Elementos de confiança: WhatsApp, endereço, formas de pagamento, avaliações, Instagram.
- Fluxo mobile-first, mas com boa experiência no desktop.

## 7. Modelo de dados inicial

### Loja

- id
- nome
- slug
- whatsapp
- endereço
- horário de funcionamento
- taxa de entrega padrão
- status aberta/fechada

### Categoria

- id
- loja_id
- nome
- ordem
- ativa

### Produto

- id
- categoria_id
- nome
- slug
- descrição curta
- descrição completa
- imagem
- preço_base
- prazo_minimo_horas
- ativo
- destaque

### Grupo de opções

- id
- produto_id
- nome
- obrigatório
- mínimo
- máximo
- ordem

### Opção

- id
- grupo_id
- nome
- preço_adicional
- descrição
- ativa

### Carrinho

- id
- sessão_id
- cliente_id opcional
- itens
- subtotal
- taxa_entrega
- total

### Pedido

- id
- loja_id
- cliente_id
- itens
- tipo_entrega
- data_hora
- endereço
- total
- status
- observações

### Cliente

- id
- nome
- whatsapp
- email
- endereço padrão opcional

## 8. Roadmap

### Fase 1: MVP de pedido via WhatsApp

Objetivo: permitir que uma loja receba pedidos organizados sem painel complexo.

Entregáveis:

- Cardápio público.
- Produto com personalização.
- Carrinho.
- Escolha de retirada/entrega.
- Agenda simples.
- Dados básicos do cliente.
- Resumo do pedido.
- Envio para WhatsApp.

### Fase 2: painel da loja

Objetivo: permitir que a loja gerencie produtos e veja pedidos.

Entregáveis:

- Login administrativo.
- CRUD de produtos.
- CRUD de categorias.
- CRUD de grupos de opções.
- CRUD de opções.
- Lista de pedidos.
- Mudança de status.

### Fase 3: operação profissional

Objetivo: organizar a produção e a rotina da confeitaria.

Entregáveis:

- Calendário de encomendas.
- Bloqueio de datas.
- Limite por horário.
- Impressão de pedido.
- Etiqueta de produção.
- Relatório diário.

### Fase 4: comercial e marketing

Objetivo: aumentar vendas.

Entregáveis:

- Cupons.
- Campanhas sazonais.
- Produtos em destaque.
- Recuperação de carrinho.
- Google Analytics/Pixel.
- Integração com Instagram/WhatsApp.

### Fase 5: pagamento

Objetivo: reduzir desistência e inadimplência.

Entregáveis:

- PIX copia e cola.
- Upload de comprovante.
- Pagamento parcial/sinal.
- Pagamento online.
- Confirmação automática.

## 9. Implementação sugerida por tarefas

### Task 1: Criar base do projeto

**Objective:** Inicializar a aplicação web com estrutura de rotas, layout e estilos.

**Files:**

- Create: `package.json`
- Create: `src/app/layout.tsx`
- Create: `src/app/page.tsx`
- Create: `src/styles/globals.css`

**Verification:** Rodar aplicação local e abrir a home.

### Task 2: Criar modelo estático de catálogo

**Objective:** Criar dados mockados para loja, categorias e produtos.

**Files:**

- Create: `src/data/store.ts`
- Create: `src/types/catalog.ts`

**Verification:** Home deve listar categorias e produtos.

### Task 3: Criar card de produto

**Objective:** Exibir produto com imagem, nome, preço inicial, descrição curta e CTA.

**Files:**

- Create: `src/components/ProductCard.tsx`

**Verification:** Produto deve aparecer corretamente no desktop e mobile.

### Task 4: Criar página/modal de configuração do produto

**Objective:** Permitir seleção de tamanho, massa, recheio, adicionais e observação.

**Files:**

- Create: `src/components/ProductConfigurator.tsx`
- Create: `src/lib/pricing.ts`

**Verification:** Preço deve atualizar conforme opções escolhidas.

### Task 5: Validar grupos obrigatórios

**Objective:** Impedir adicionar ao carrinho sem escolher opções obrigatórias.

**Files:**

- Create: `src/lib/validateConfiguredProduct.ts`

**Verification:** Mensagens amigáveis devem aparecer para tamanho/massa/recheio ausentes.

### Task 6: Criar carrinho persistente

**Objective:** Salvar itens configurados no navegador e permitir editar/remover.

**Files:**

- Create: `src/store/cart.ts`
- Create: `src/app/carrinho/page.tsx`

**Verification:** Recarregar `/carrinho` deve manter os itens.

### Task 7: Criar etapa de entrega/retirada

**Objective:** Permitir escolher retirada ou delivery e data/horário.

**Files:**

- Create: `src/app/checkout/entrega/page.tsx`
- Create: `src/lib/schedule.ts`

**Verification:** Endereço deve aparecer apenas para delivery.

### Task 8: Criar cadastro mínimo

**Objective:** Coletar nome, WhatsApp e e-mail opcional.

**Files:**

- Create: `src/app/checkout/cliente/page.tsx`
- Create: `src/lib/customerValidation.ts`

**Verification:** Deve validar nome e WhatsApp antes de continuar.

### Task 9: Criar resumo e envio para WhatsApp

**Objective:** Gerar mensagem formatada com todos os dados do pedido.

**Files:**

- Create: `src/app/checkout/resumo/page.tsx`
- Create: `src/lib/whatsapp.ts`

**Verification:** Link `wa.me` deve abrir com mensagem preenchida.

### Task 10: Criar documentação operacional

**Objective:** Documentar como cadastrar produtos, opções e horários.

**Files:**

- Create: `docs/manual-operacional.md`

**Verification:** Um operador deve conseguir entender como montar o cardápio.

## 10. Critérios de aceite do MVP

- Cliente consegue ver produtos por categoria.
- Cliente consegue buscar produtos.
- Cliente consegue abrir um produto.
- Cliente consegue selecionar opções obrigatórias.
- Sistema bloqueia carrinho se faltar opção obrigatória.
- Cliente consegue adicionar ao carrinho.
- Cliente consegue editar/remover item.
- Cliente consegue escolher retirada ou delivery.
- Cliente consegue escolher data e horário.
- Cliente informa nome e WhatsApp.
- Sistema gera resumo do pedido.
- Sistema abre WhatsApp com mensagem pronta.
- `/carrinho` e `/checkout` funcionam ao recarregar a página.

## 11. Riscos

- Produtos personalizados podem ter muitas regras específicas.
- Preço dinâmico pode ficar complexo se cada loja trabalha de um jeito.
- Agenda precisa respeitar prazo mínimo por produto.
- WhatsApp não confirma pedido automaticamente; loja ainda precisa responder.
- Pagamento online deve ficar para fase posterior para não atrasar o MVP.

## 12. Recomendação final

Começar simples: catálogo, personalização, carrinho, agendamento e WhatsApp. Esse fluxo já resolve o principal problema de uma confeitaria: receber pedidos completos e padronizados sem depender de longas conversas manuais.
