Pack de Prompts • Tetra

Prompts prontos para criar software de verdade com IA.

Seis prompts completos para gerar sistemas web no V0 ou no Lovable. Cada um já vem com dados, telas e integrações prontas. Você cola, ajusta o que falta e publica.

6
sistemas completos
6
design systems exclusivos
2
plataformas: V0 e Lovable
0
linhas de código necessárias
O que é

Um pack de prompts. Não um curso, não um template.

Cada prompt descreve o objetivo do sistema, o design do nicho, as funcionalidades e os recursos de IA. Você cola no V0 ou no Lovable e recebe uma interface funcional em minutos, sem precisar programar.

Prompts completos

Cada prompt já tem objetivo, design, funcionalidades e sugestões de IA. Texto pronto para colar, sem precisar adivinhar o que pedir.

Design system por nicho

Cada sistema vem com sua própria identidade visual (cores, tipografia, componentes, CSS), pensada para o mercado que ele atende.

Foco em demanda real

Os seis sistemas resolvem necessidades reais: finanças, vendas, agenda, estoque, conteúdo e pedido por WhatsApp. São tipos de projeto fáceis de vender e entregar.

Da ideia ao entregável

Gere a base, personalize para o cliente e entregue. O mesmo prompt funciona para vários negócios com poucos ajustes.

Como funciona

Do prompt ao produto em três passos.

01

Copie o prompt

Escolha um dos seis sistemas e copie o prompt completo (modelo de dados, telas, regras e fonte de dados).

→ botão "Copiar prompt"
02

Gere no V0 ou Lovable

Cole na ferramenta de IA e escolha a fonte de dados: localStorage (demo), Supabase grátis ou Excel.

→ v0.dev · lovable.dev
03

Configure e publique

Cole as credenciais (WhatsApp, Pix, etc.), escolha o banco e publique. ~80% já vem pronto.

→ configurar + deploy
Os 6 sistemas

Seis soluções com alta demanda em negócios locais.

Cada um tem design system próprio. Clique para ver o prompt completo.

Prompts detalhados

Tudo o que você cola na IA.

Para cada sistema: objetivo, funcionalidades, recursos de IA, e um bloco único com modelo de dados, telas, regras e a escolha de banco (localStorage, Supabase grátis ou Excel).

01

Gestão Financeira Simplificada

Design System · FinTech UI
Resultado real · gerado no V0
FinControl · gerado a partir deste prompt
Sistema financeiro FinControl gerado no V0

Sistema web de gestão financeira para pequenos negócios — consultórios, mercados e autônomos — que precisam de controle de fluxo de caixa, despesas, receitas e relatórios essenciais. Visual que transmite confiança e clareza.

Funcionalidades essenciais

  • Dashboard resumo — saldo atual, receitas e despesas do mês, gráfico de fluxo de caixa.
  • Registro de transações — valor, descrição, data, categoria e status.
  • Listagem com filtros — tabela paginada por data, categoria e tipo; valores à direita.
  • Categorias — aluguel, vendas, salários e personalizadas.
  • Relatórios — visão mensal de entradas vs. saídas.

Regras inteligentes (sem ML)

  • Categorização automática pela descrição digitada.
  • Alerta de anomalia em despesas acima da média.
  • Previsão de saldo de fim de mês.

Base visual

  • Fonte Inter, tabular-nums em valores.
  • Azul confiança, verde receita, vermelho despesa.
Prompt completo: modelo de dados, telas, regras e fonte de dados
prompt-financeiro.txt
Crie um sistema web de gestão financeira para pequenos negócios, em português do Brasil. Nome: FinControl.

STACK
Next.js (App Router) + React + TypeScript + Tailwind + shadcn/ui. Tema claro (padrão) e escuro com next-themes (toggle no header). Ícones lucide-react. Datas com date-fns. Validação com zod + react-hook-form. Componentes shadcn: Card, Table, Dialog, Select, Tabs, Badge, Input, DropdownMenu, Toast (sonner), Recharts para gráficos.

MODELO DE DADOS (TypeScript)
type Categoria = { id: string; nome: string; tipo: 'receita' | 'despesa'; cor: string }
type Transacao = { id: string; tipo: 'receita' | 'despesa'; valor: number; descricao: string; categoriaId: string; data: string /*ISO*/; status: 'pago' | 'pendente' }
Regra de saldo: soma das receitas pagas menos soma das despesas pagas.

SEED (popular ao abrir)
8 categorias (ex.: Vendas, Serviços, Aluguel, Fornecedores, Salários, Energia, Marketing, Impostos) e 24 transações dos últimos 60 dias, com valores realistas em reais, misturando pago/pendente, receitas e despesas.

TELAS / ROTAS
1. /dashboard — 3 cards no topo: Saldo Atual, Receitas do mês e Despesas do mês, cada um com variação percentual vs. mês anterior. Abaixo: gráfico de linha do fluxo de caixa (30 dias) e gráfico de barras de despesas por categoria. Lista das 5 últimas transações.
2. /transacoes — tabela paginada com Data, Descrição, Categoria (Badge colorido), Valor (verde receita / vermelho despesa, alinhado à direita) e Status. Filtros combináveis: período, tipo, categoria e busca por texto. Botão "Nova transação" abre Dialog com formulário validado (valor > 0, descrição obrigatória, data, categoria, status). Editar e excluir por linha. Toast de sucesso.
3. /categorias — CRUD de categorias com seletor de cor.
4. /relatorios — resumo mensal (entradas, saídas, resultado) e tabela mês a mês dos últimos 6 meses.

REGRAS INTELIGENTES (lógica determinística, sem ML)
- Sugestão de categoria: ao digitar a descrição, sugerir a categoria por palavras-chave (ex.: "aluguel"→Aluguel, "fornecedor"→Fornecedores). Função pura e editável.
- Alerta de anomalia: marcar despesa cujo valor seja mais de 50% acima da média das 3 últimas da mesma categoria (ícone + tooltip).
- Previsão de saldo: projetar o saldo do fim do mês = saldo atual + receitas pendentes − despesas pendentes do mês.

ESTADOS
Empty state com ação em cada lista. Validação inline nos formulários. Toast de erro em falha. Skeleton no carregamento inicial.

FORMATAÇÃO
Moeda com Intl.NumberFormat('pt-BR', { style:'currency', currency:'BRL' }). Datas dd/MM/yyyy. Números com tabular-nums.

VISUAL E LAYOUT (referência: a tela real FinControl)
Tema escuro elegante como visual principal (ofereça claro também). Acento verde esmeralda; receita #10B981, despesa #EF4444, alerta #F59E0B, info azul/roxo.
Layout: navegação lateral fixa à esquerda com logo + nome do app no topo (Dashboard, Transações, Clientes, Relatórios, Configurações) e selo "Versão Demo · Dados de exemplo" no rodapé da sidebar. Conteúdo à direita com título + subtítulo.
- 4 cards de métrica no topo (Receitas, Despesas, Saldo/Lucro líquido, Clientes), cada um com ícone no canto, valor grande e variação % colorida com seta.
- Card grande "Fluxo Financeiro": gráfico de área Receitas (verde) vs Despesas (vermelho) com preenchimento em gradiente, eixo em R$ e meses.
- Card "Atividade Recente": últimas transações com ícone, data e valor colorido.
- Cards inferiores: "Pagamentos Pendentes" (lista com valores) e "Principais Clientes" (ranking com numeração/avatar e total gasto).
Cards radius 12px, sombra leve, densidade confortável; no mobile a sidebar vira bottom nav.

RÓTULOS EXATOS (use iguais à referência)
Sidebar: "FinControl" / "Gestão Financeira"; itens Dashboard, Transações, Clientes, Relatórios, Configurações; rodapé "Versão Demo · Dados de exemplo".
Topo: título "Dashboard", subtítulo "Visão geral do seu negócio".
Cards: "Receitas" (com "% este mês" em verde), "Despesas" (com "% este mês" em vermelho), "Saldo" ("Lucro líquido"), "Clientes" ("Cadastrados").
Gráfico: "Fluxo Financeiro" / "Receitas vs Despesas nos últimos 6 meses".
Listas: "Atividade Recente" / "Últimas transações"; "Pagamentos Pendentes" / "Aguardando recebimento" (total em âmbar); "Principais Clientes" / "Por valor total gasto" (ranking de 1 a 5 com avatar).

RESPONSIVO
Desktop, tablet e mobile. A tabela vira cards empilhados no mobile.

CRITÉRIOS DE ACEITE
Abrir já mostra dados (seed). Criar/editar/excluir atualiza dashboard e relatórios em tempo real. Filtros funcionam combinados. Tema persiste. Nenhuma tela vazia sem orientação.

CAMADA DE DADOS (o usuário escolhe a fonte)
Toda leitura/escrita passa por UMA interface (padrão repository/adapter), ex.: TransacaoRepository com list/create/update/remove. A UI nunca acessa o banco direto; trocar de fonte = mexer só nesse arquivo.
- Se a ferramenta for interativa (chat do Lovable): ANTES de construir, pergunte qual fonte eu quero, explique cada opção em uma linha e implemente a escolhida.
- Se for geração única (V0): implemente a Opção A por padrão e deixe B e C documentadas e prontas para trocar.

Opção A · Demonstração (padrão, sem conta, sem custo): armazenar em localStorage e popular com o SEED na primeira execução. Serve para testar a interface agora; dados ficam só neste navegador.

Opção B · Supabase (gratuito, recomendado para produto real): Postgres na nuvem, multiusuário. Crie as tabelas com este SQL (com RLS habilitada):
create table categorias ( id uuid primary key default gen_random_uuid(), nome text not null, tipo text not null check (tipo in ('receita','despesa')), cor text not null default '#3B82F6' );
create table transacoes ( id uuid primary key default gen_random_uuid(), tipo text not null check (tipo in ('receita','despesa')), valor numeric(12,2) not null check (valor > 0), descricao text not null, categoria_id uuid references categorias(id), data date not null default now(), status text not null default 'pago' check (status in ('pago','pendente')), created_at timestamptz default now() );
alter table categorias enable row level security;  alter table transacoes enable row level security;
Use as variáveis NEXT_PUBLIC_SUPABASE_URL e NEXT_PUBLIC_SUPABASE_ANON_KEY. Passos do usuário: criar projeto free em supabase.com, copiar URL + anon key e colar nas variáveis de ambiente.

Opção C · Excel / Google Sheets (importar e exportar): não é banco em tempo real. Implemente "Importar CSV/Excel" e "Exportar para Excel/CSV" com a biblioteca SheetJS, mapeando as colunas da planilha para os campos do modelo. Sincronização ao vivo com Google Sheets exige Google Sheets API + credenciais (opcional, avançado).

GUIA RÁPIDO (mostre ao usuário): só testar agora → A (localStorage); clientes reais usando → B (Supabase free); já controlo em planilha → C (importar/exportar Excel).

ENTREGÁVEL E EXPECTATIVA (importante)
Faça o app já impressionar na 1ª geração: dados de exemplo, todas as telas, validação e estados tratados — pronto para clicar e navegar, sem tela quebrada.
Onde depender de serviço externo, NÃO deixe vazio: crie a função/stub com a assinatura pronta, um comentário // TODO e o local exato de colar a credencial, e faça rodar em MODO DEMO (simulado) enquanto a credencial não existir. Assim nada parece faltando — parece configurável.

Integrações já fiadas (stubs prontos para plugar):
- Importar extrato bancário: função importarExtrato(arquivo) com parser de CSV/OFX (em demo lê um CSV de exemplo). // TODO: mapear o layout do banco do usuário.
- Exportar para o contador: exportarContador() gera CSV/Excel com SheetJS, já funcional.

Ao final, gere um README curto com duas listas, em tom claro:
✅ JÁ PRONTO: dashboard, lançamentos, categorias, relatórios, filtros e as regras de sugestão/alerta/previsão, com dados de exemplo
🔧 VOCÊ SÓ CONFIGURA (rápido): escolher o banco (Opção A/B/C da camada de dados), colar as credenciais das integrações acima e publicar (deploy).
Deixe explícito que ~80% já está feito e faltam apenas ajustes de configuração.
02

Dashboard de Vendas e Marketing

Design System · DataViz Pro
Resultado real · gerado no V0
Dashboard de Vendas · gerado a partir deste prompt
Dashboard de vendas gerado no V0

Dashboard interativo para lojas, e-commerce local e prestadores acompanharem vendas, leads, conversão e campanhas. Visualmente atraente e fácil de interpretar.

Funcionalidades essenciais

  • Cards de métrica — Vendas Totais, Ticket Médio, Novos Leads, Conversão, com variação %.
  • Gráficos — linha (vendas no tempo), barras (por produto/canal), pizza (leads por fonte).
  • Filtros dinâmicos — Hoje, 7 dias, Mês atual, Personalizado e por categoria.
  • Tabela de desempenho — campanhas ou produtos com suas métricas.

Regras inteligentes (sem ML)

  • Análise automática de tendências com alertas.
  • Sugestões de otimização de vendas/marketing.
  • Identificação de padrões incomuns.
  • Geração de relatórios narrativos.

Base visual

  • Fonte Roboto ou Inter; cores distintas por série de dados.
  • Sombras leves, foco na informação.
Prompt completo: modelo de dados, telas, regras e fonte de dados
prompt-dashboard.txt
Crie um dashboard de vendas e marketing para pequenos negócios, em português do Brasil. Nome: SalesBoard.

STACK
Next.js (App Router) + React + TypeScript + Tailwind + shadcn/ui. Tema claro (padrão) e escuro com next-themes (toggle no header). Ícones lucide-react. Datas com date-fns. Validação com zod + react-hook-form. Componentes shadcn: Card, Table, Dialog, Select, Tabs, Badge, Input, DropdownMenu, Toast (sonner), Recharts para gráficos.

MODELO DE DADOS (TypeScript)
type Venda = { id: string; data: string; canal: 'loja'|'online'|'whatsapp'|'indicacao'; produto: string; valor: number }
type Lead = { id: string; data: string; fonte: 'instagram'|'google'|'indicacao'|'site'; status: 'novo'|'qualificado'|'convertido'|'perdido' }
type Campanha = { id: string; nome: string; canal: string; investimento: number; leadsGerados: number; conversoes: number }
type Vendedor = { id: string; nome: string; avatarUrl: string }
type Negocio = { id: string; vendedorId: string; valor: number; status: 'negociacao'|'ganho'|'perdido'; data: string }

SEED (popular ao abrir)
90 dias de vendas (volume variável por dia), ~120 leads distribuídos entre as fontes e 5 campanhas com investimento e conversões realistas. Inclua também 5 vendedores e ~3000 negócios com status variados (ganho/perdido/negociação) para alimentar o pódio.

TELAS / ROTAS
1. /dashboard — 4 cards de métrica: Vendas Totais, Ticket Médio, Novos Leads e Taxa de Conversão, cada um com variação percentual vs. período anterior e ícone Lucide. Gráficos: linha de vendas ao longo do tempo, barras de vendas por canal e pizza/rosca de leads por fonte (tooltips claros). Tabela de campanhas com investimento, conversões e ROI calculado.
2. Filtros no topo: período (Hoje, 7 dias, 30 dias, Mês atual, Personalizado) e canal. Os filtros recalculam todos os cards, gráficos e tabela.

REGRAS INTELIGENTES (lógica determinística, sem ML)
- Variação %: comparar a janela selecionada com a janela anterior de mesmo tamanho.
- Alerta de queda: destacar métrica que cair mais de 15% vs. período anterior.
- Resumo narrativo: gerar um parágrafo por template de texto (sem ML) destacando melhor canal, campanha de pior ROI e tendência geral.

ESTADOS
Empty state quando o filtro não retorna dados. Skeleton no carregamento. Tooltips nos gráficos.

FORMATAÇÃO
Moeda BRL com Intl.NumberFormat('pt-BR'). Percentuais com 1 casa. Números com tabular-nums.

VISUAL E LAYOUT (referência: a tela real Dashboard de Vendas)
Tema escuro/navy como visual principal (ofereça claro também). Primária azul #3B82F6; séries #10B981, #8B5CF6, #F59E0B; sucesso #22C55E; erro #EF4444; barra de conversão com gradiente ciano.
Header com título + subtítulo "Análise de performance em tempo real", seletor de período ("Todos os meses") e relógio ao vivo.
- Linha de cards de métrica grandes: Total de Negócios, Valor Fechado (verde), Valor em Negociação (azul), Conversão Geral (% com variação).
- Linha de cards de status: Negócios Fechados (verde), Negócios Perdidos (vermelho), Em Negociação (azul), cada um com ícone.
- Seção "Top 3 Vendedores" em pódio: medalha #1 ouro, #2 prata, #3 bronze, avatar redondo, Valor Fechado em destaque, mini-stats Ganhos/Perdidos/Negociação e barra de Taxa de Conversão com gradiente.
Mantenha também os gráficos (linha, barras, pizza) abaixo do pódio. Cards radius 8-12px, sombra muito leve.

RÓTULOS EXATOS (use iguais à referência)
Topo: título "Dashboard de Vendas", subtítulo "Análise de performance em tempo real", seletor "Todos os meses", relógio ao vivo no canto.
Cards linha 1: "Total de Negócios", "Valor Fechado", "Valor em Negociação", "Conversão Geral".
Cards linha 2: "Negócios Fechados", "Negócios Perdidos", "Em Negociação".
Seção "Top 3 Vendedores": cada card com medalha #1 (ouro) / #2 (prata) / #3 (bronze), avatar redondo, "Valor Fechado" em destaque, linha "Ganhos / Perdidos / Negocia." e "Taxa de Conversão" com barra em gradiente ciano.

RESPONSIVO
Desktop, tablet e mobile. Gráficos e cards reorganizam em coluna no mobile.

CRITÉRIOS DE ACEITE
Filtros recalculam tudo em tempo real. Variações e resumo narrativo atualizam com os dados. Nenhum gráfico quebra quando o filtro fica sem dados.

CAMADA DE DADOS (o usuário escolhe a fonte)
Toda leitura/escrita passa por UMA interface (padrão repository/adapter), ex.: VendasRepository com list/create/update/remove. A UI nunca acessa o banco direto; trocar de fonte = mexer só nesse arquivo.
- Se a ferramenta for interativa (chat do Lovable): ANTES de construir, pergunte qual fonte eu quero, explique cada opção em uma linha e implemente a escolhida.
- Se for geração única (V0): implemente a Opção A por padrão e deixe B e C documentadas e prontas para trocar.

Opção A · Demonstração (padrão, sem conta, sem custo): armazenar em localStorage e popular com o SEED na primeira execução. Serve para testar a interface agora; dados ficam só neste navegador.

Opção B · Supabase (gratuito, recomendado para produto real): Postgres na nuvem, multiusuário. Crie as tabelas com este SQL (com RLS habilitada):
create table vendas ( id uuid primary key default gen_random_uuid(), data date not null, canal text not null, produto text, valor numeric(12,2) not null );
create table leads ( id uuid primary key default gen_random_uuid(), data date not null, fonte text not null, status text not null default 'novo' check (status in ('novo','qualificado','convertido','perdido')) );
create table campanhas ( id uuid primary key default gen_random_uuid(), nome text not null, canal text, investimento numeric(12,2) default 0, leads_gerados int default 0, conversoes int default 0 );
alter table vendas enable row level security;  alter table leads enable row level security;  alter table campanhas enable row level security;
Use as variáveis NEXT_PUBLIC_SUPABASE_URL e NEXT_PUBLIC_SUPABASE_ANON_KEY. Passos do usuário: criar projeto free em supabase.com, copiar URL + anon key e colar nas variáveis de ambiente.

Opção C · Excel / Google Sheets (importar e exportar): não é banco em tempo real. Implemente "Importar CSV/Excel" e "Exportar para Excel/CSV" com a biblioteca SheetJS, mapeando as colunas da planilha para os campos do modelo. Sincronização ao vivo com Google Sheets exige Google Sheets API + credenciais (opcional, avançado).

GUIA RÁPIDO (mostre ao usuário): só testar agora → A (localStorage); clientes reais usando → B (Supabase free); já controlo em planilha → C (importar/exportar Excel).

ENTREGÁVEL E EXPECTATIVA (importante)
Faça o app já impressionar na 1ª geração: dados de exemplo, todas as telas, validação e estados tratados — pronto para clicar e navegar, sem tela quebrada.
Onde depender de serviço externo, NÃO deixe vazio: crie a função/stub com a assinatura pronta, um comentário // TODO e o local exato de colar a credencial, e faça rodar em MODO DEMO (simulado) enquanto a credencial não existir. Assim nada parece faltando — parece configurável.

Integrações já fiadas (stubs prontos para plugar):
- Conectores de dados: conectarMetaAds(), conectarPlanilha() e conectarPDV() como stubs em modo demo (retornam dados de exemplo). // TODO: colar token/endpoint.
- Importar CSV/Excel já funcional para alimentar os gráficos sem nenhuma integração.

Ao final, gere um README curto com duas listas, em tom claro:
✅ JÁ PRONTO: todos os cards, gráficos, filtros, variações % e o resumo narrativo, rodando com dados de exemplo
🔧 VOCÊ SÓ CONFIGURA (rápido): escolher o banco (Opção A/B/C da camada de dados), colar as credenciais das integrações acima e publicar (deploy).
Deixe explícito que ~80% já está feito e faltam apenas ajustes de configuração.
03

Sistema de Agendamento Online

Design System · BookingFlow UI
Resultado real · gerado no V0
AgendaFácil · gerado a partir deste prompt
Painel admin do AgendaFácil gerado no V0

Agendamento online para consultórios, salões, barbearias e prestadores que precisam gerenciar horários e clientes. Intuitivo, profissional e fácil de usar.

Funcionalidades essenciais

  • Página do cliente — escolher serviço, ver disponibilidade no calendário, marcar e preencher contato.
  • Painel do cliente — ver, reagendar ou cancelar, com histórico.
  • Painel do administrador — visão geral, gestão de agendamentos, de serviços e de disponibilidade.
  • Notificações — confirmações e lembretes por e-mail/SMS.

Regras inteligentes (sem ML)

  • Sugestão inteligente de horários.
  • Previsão de não comparecimento (no-show).
  • Otimização de preços por demanda.
  • Chatbot de agendamento.

Base visual

  • Fonte Poppins ou Open Sans; verde-água/ciano como cor principal.
  • Calendário limpo, layout arejado.
Prompt completo: modelo de dados, telas, regras e fonte de dados
prompt-agendamento.txt
Crie um sistema web de agendamento online para prestadores de serviço (consultórios, salões, barbearias), em português do Brasil. Nome: AgendaFácil.

STACK
Next.js (App Router) + React + TypeScript + Tailwind + shadcn/ui. Tema claro (padrão) e escuro com next-themes (toggle no header). Ícones lucide-react. Datas com date-fns. Validação com zod + react-hook-form. Componentes shadcn: Card, Table, Dialog, Select, Tabs, Badge, Input, DropdownMenu, Toast (sonner).

MODELO DE DADOS (TypeScript)
type Servico = { id: string; nome: string; duracaoMin: number; preco: number; descricao: string }
type Disponibilidade = { id: string; diaSemana: number /*0-6*/; horaInicio: string; horaFim: string }
type Agendamento = { id: string; servicoId: string; clienteNome: string; clienteEmail: string; clienteTel: string; data: string; hora: string; status: 'confirmado'|'pendente'|'cancelado' }

SEED (popular ao abrir)
5 serviços com durações e preços diferentes, disponibilidade de segunda a sexta das 09:00 às 18:00, e 15 agendamentos nos próximos 14 dias.

TELAS / ROTAS
1. / (fluxo público do cliente): escolher serviço → calendário mostrando só os dias com horário livre → grade de horários disponíveis daquele dia → formulário (nome, e-mail, telefone) → confirmar → tela de sucesso com resumo.
2. /minha-agenda: cliente busca por e-mail e vê seus agendamentos, podendo reagendar ou cancelar.
3. /admin: visão geral (próximos agendamentos + ocupação do dia), lista/calendário com filtro de status e edição/cancelamento, CRUD de serviços (duração, preço, descrição) e edição de disponibilidade e bloqueios.

REGRAS INTELIGENTES (lógica determinística, sem ML)
- Gerar os horários a partir da duração do serviço + disponibilidade − agendamentos já existentes.
- Impedir conflito de horário e impedir agendar no passado.
- Cancelar um agendamento libera o horário imediatamente.
- Lembrete simulado via toast ao confirmar.

ESTADOS
Mensagem clara quando não há horário disponível no dia. Validação inline no formulário. Toast de sucesso/erro.

FORMATAÇÃO
Datas dd/MM/yyyy, horas HH:mm, preço em BRL.

VISUAL E LAYOUT (referência: a tela real AgendaFácil)
Tema escuro e quente como visual principal (fundo quase preto amarronzado), acento dourado/âmbar (ex.: #C8A24B); ofereça claro também. Status: Confirmado em verde, Pendente em âmbar. Título em fonte serifada elegante, corpo sem serifa.
Layout: navegação lateral à esquerda com logo (ícone de tesoura) + nome "AgendaFácil" e selo "PAINEL ADMIN"; grupo "Gestão" com Visão geral, Calendário, Agendamentos, Serviços, Disponibilidade. Topo com breadcrumb "PAINEL / Visão geral", link "Ver site público" e botão de tema (sol).
- Página Visão geral: 3 cards de indicador no topo — HOJE (nº de agendamentos), OCUPAÇÃO DO DIA (%), TOTAL NO SISTEMA (nº) — cada um com ícone à esquerda.
- Card "Próximos agendamentos": tabela Cliente, Serviço, Data, Hora, Status (badge Confirmado verde / Pendente âmbar), com leve zebra nas linhas.
Cards radius 10-12px; no mobile a sidebar vira menu.

RÓTULOS EXATOS (use iguais à referência)
Sidebar: "AgendaFácil" / "PAINEL ADMIN"; grupo "Gestão"; itens Visão geral, Calendário, Agendamentos, Serviços, Disponibilidade.
Topo: título "Visão geral", subtítulo "Indicadores do dia e próximos atendimentos"; link "Ver site público".
Cards: "HOJE" ("X agendamentos"), "OCUPAÇÃO DO DIA" ("X%"), "TOTAL NO SISTEMA".
Tabela "Próximos agendamentos": colunas Cliente, Serviço, Data, Hora, Status; serviços de exemplo Corte de Cabelo, Barba Completa, Manicure, Corte + Barba, Coloração.

RESPONSIVO
Desktop, tablet e mobile; o calendário e a grade de horários adaptam para toque.

CRITÉRIOS DE ACEITE
Nunca oferece horário já ocupado. Cliente e admin enxergam os mesmos dados. Cancelar libera o horário na hora.

CAMADA DE DADOS (o usuário escolhe a fonte)
Toda leitura/escrita passa por UMA interface (padrão repository/adapter), ex.: AgendamentoRepository com list/create/update/remove. A UI nunca acessa o banco direto; trocar de fonte = mexer só nesse arquivo.
- Se a ferramenta for interativa (chat do Lovable): ANTES de construir, pergunte qual fonte eu quero, explique cada opção em uma linha e implemente a escolhida.
- Se for geração única (V0): implemente a Opção A por padrão e deixe B e C documentadas e prontas para trocar.

Opção A · Demonstração (padrão, sem conta, sem custo): armazenar em localStorage e popular com o SEED na primeira execução. Serve para testar a interface agora; dados ficam só neste navegador.

Opção B · Supabase (gratuito, recomendado para produto real): Postgres na nuvem, multiusuário. Crie as tabelas com este SQL (com RLS habilitada):
create table servicos ( id uuid primary key default gen_random_uuid(), nome text not null, duracao_min int not null, preco numeric(12,2) not null default 0, descricao text );
create table disponibilidades ( id uuid primary key default gen_random_uuid(), dia_semana int not null check (dia_semana between 0 and 6), hora_inicio time not null, hora_fim time not null );
create table agendamentos ( id uuid primary key default gen_random_uuid(), servico_id uuid references servicos(id), cliente_nome text not null, cliente_email text, cliente_tel text, data date not null, hora time not null, status text not null default 'pendente' check (status in ('confirmado','pendente','cancelado')) );
alter table servicos enable row level security;  alter table disponibilidades enable row level security;  alter table agendamentos enable row level security;
Use as variáveis NEXT_PUBLIC_SUPABASE_URL e NEXT_PUBLIC_SUPABASE_ANON_KEY. Passos do usuário: criar projeto free em supabase.com, copiar URL + anon key e colar nas variáveis de ambiente.

Opção C · Excel / Google Sheets (importar e exportar): não é banco em tempo real. Implemente "Importar CSV/Excel" e "Exportar para Excel/CSV" com a biblioteca SheetJS, mapeando as colunas da planilha para os campos do modelo. Sincronização ao vivo com Google Sheets exige Google Sheets API + credenciais (opcional, avançado).

GUIA RÁPIDO (mostre ao usuário): só testar agora → A (localStorage); clientes reais usando → B (Supabase free); já controlo em planilha → C (importar/exportar Excel).

ENTREGÁVEL E EXPECTATIVA (importante)
Faça o app já impressionar na 1ª geração: dados de exemplo, todas as telas, validação e estados tratados — pronto para clicar e navegar, sem tela quebrada.
Onde depender de serviço externo, NÃO deixe vazio: crie a função/stub com a assinatura pronta, um comentário // TODO e o local exato de colar a credencial, e faça rodar em MODO DEMO (simulado) enquanto a credencial não existir. Assim nada parece faltando — parece configurável.

Integrações já fiadas (stubs prontos para plugar):
- WhatsApp (confirmação e lembrete): função enviarWhatsApp(telefone, mensagem) preparada para a Evolution API (URL da instância + apikey nas variáveis de ambiente). Em demo, registra a mensagem e mostra toast. // TODO: colar URL da instância e apikey.
- Pix (sinal antecipado, reduz no-show): função cobrarSinal(valor, agendamento) como stub de cobrança Pix (ex.: Mercado Pago/Asaas). Em demo, marca 'sinal simulado pago'. // TODO: colar a chave do provedor.
- Evite horário duplicado com índice único no banco: create unique index uniq_slot on agendamentos (servico_id, data, hora) where status <> 'cancelado';

Ao final, gere um README curto com duas listas, em tom claro:
✅ JÁ PRONTO: agendamento público, calendário com horários reais, painel do cliente e do admin, CRUD de serviços e disponibilidade e as regras de horário, com dados de exemplo
🔧 VOCÊ SÓ CONFIGURA (rápido): escolher o banco (Opção A/B/C da camada de dados), colar as credenciais das integrações acima e publicar (deploy).
Deixe explícito que ~80% já está feito e faltam apenas ajustes de configuração.
04

Controle de Estoque e Pedidos

Design System · SupplyFlow UI
Resultado real · gerado no V0
EstoquePro · gerado a partir deste prompt
Dashboard de estoque EstoquePro gerado no V0

Sistema para lojas físicas, e-commerce local e distribuidores gerenciarem estoque, registrarem pedidos e acompanharem entregas. Prático e focado em eficiência operacional.

Funcionalidades essenciais

  • Dashboard — Total de Produtos, Valor em Estoque, Pedidos Pendentes, Estoque Baixo.
  • Gestão de estoque — SKU, categoria, preço, quantidade e status; formulário, busca e filtros.
  • Gestão de pedidos — número, cliente, total e status; criação e atualização.
  • Clientes — cadastro básico (nome, e-mail, telefone, endereço).

Regras inteligentes (sem ML)

  • Previsão de reposição por histórico de vendas.
  • Alerta inteligente de estoque baixo.
  • Otimização de armazenamento.

Base visual

  • Fonte Roboto Mono ou Inter; tabular-nums em quantidades.
  • Azul industrial, layout denso e eficiente.
Prompt completo: modelo de dados, telas, regras e fonte de dados
prompt-estoque.txt
Crie um sistema web de controle de estoque e pedidos para pequenos comércios, em português do Brasil. Nome: EstoquePro.

STACK
Next.js (App Router) + React + TypeScript + Tailwind + shadcn/ui. Tema claro (padrão) e escuro com next-themes (toggle no header). Ícones lucide-react. Datas com date-fns. Validação com zod + react-hook-form. Componentes shadcn: Card, Table, Dialog, Select, Tabs, Badge, Input, DropdownMenu, Toast (sonner).

MODELO DE DADOS (TypeScript)
type Produto = { id: string; sku: string; nome: string; categoria: string; preco: number; quantidade: number; estoqueMinimo: number }
type Cliente = { id: string; nome: string; email: string; tel: string; endereco: string }
type Pedido = { id: string; numero: number; clienteId: string; data: string; total: number; status: 'pendente'|'processando'|'enviado'|'entregue'|'cancelado' }
type ItemPedido = { id: string; pedidoId: string; produtoId: string; qtd: number; precoUnit: number }
Status do produto (derivado): quantidade 0 = "Sem Estoque"; quantidade ≤ estoqueMinimo = "Estoque Baixo"; senão "Em Estoque".

SEED (popular ao abrir)
20 produtos variados (com SKU, categoria, preço, quantidade e mínimo), 8 clientes e 12 pedidos com itens.

TELAS / ROTAS
1. /dashboard — cards: Total de Produtos, Valor em Estoque, Pedidos Pendentes e Produtos com Estoque Baixo.
2. /produtos — tabela com SKU, nome, categoria, preço, quantidade e status (Badge colorido). CRUD em Dialog. Busca por texto e filtros por categoria e status.
3. /pedidos — criar pedido escolhendo cliente e adicionando produtos com quantidade (calcula o total); ao confirmar, dá baixa automática no estoque. Lista de pedidos com filtros e atualização de status.
4. /clientes — CRUD básico.

REGRAS INTELIGENTES (lógica determinística, sem ML)
- Calcular o status do produto pela quantidade vs. estoque mínimo.
- Alerta de estoque baixo destacado no dashboard.
- Previsão de reposição: média de saída diária dos últimos 30 dias → estimar dias até zerar.
- Impedir vender mais do que há em estoque (sem quantidade negativa).

ESTADOS
Empty state com ação. Validação inline. Toast de sucesso/erro.

FORMATAÇÃO
Moeda BRL, números com tabular-nums, SKU em fonte monoespaçada.

VISUAL E LAYOUT (referência: a tela real EstoquePro)
Tema escuro como visual principal (ofereça claro também). Acento azul #3B82F6; sucesso #10B981; aviso/estoque baixo #F59E0B; erro/sem estoque #EF4444. Cada card de métrica tem borda superior colorida e ícone.
Layout: sidebar à esquerda com logo + "EstoquePro / DASHBOARD", grupo MENU (Dashboard, Produtos, Pedidos, Clientes) e rodapé com Configurações, Ajuda e usuário (Admin Demo). Topo com título + subtítulo.
- Dashboard: 4 cards de métrica no topo — TOTAL DE PRODUTOS (com "X sem estoque"), VALOR EM ESTOQUE ("custo de reposição estimado"), PEDIDOS PENDENTES ("de X pedidos totais") e ESTOQUE BAIXO ("produtos abaixo do mínimo").
- Linha de AÇÕES: botões "Novo Produto" (azul), "Novo Pedido" e "Importar Planilha".
- Dois cards lado a lado: "Produtos com Estoque Baixo" (nome, SKU, X/Y e badge âmbar "Estoque Baixo") e "Produtos Sem Estoque" (nome, SKU, categoria e badge vermelho "Sem Estoque").
- Card "Previsão de Reposição" com estado vazio quando faltam dados.
Cards radius 8-12px, densidade compacta; SKU em fonte monoespaçada.

RÓTULOS EXATOS (use iguais à referência)
Sidebar: "EstoquePro" / "DASHBOARD"; grupo MENU: Dashboard, Produtos, Pedidos, Clientes; rodapé Configurações, Ajuda.
Topo: título "Dashboard", subtítulo "Visão geral do estoque".
Cards: "TOTAL DE PRODUTOS", "VALOR EM ESTOQUE" ("custo de reposição estimado"), "PEDIDOS PENDENTES", "ESTOQUE BAIXO" ("produtos abaixo do mínimo").
Ações: "Novo Produto", "Novo Pedido", "Importar Planilha".
Listas: "Produtos com Estoque Baixo" / "Quantidade igual ou abaixo do mínimo"; "Produtos Sem Estoque" / "Quantidade zero — reposição urgente". Previsão: "Previsão de Reposição" / "Estimativa de dias até zerar o estoque com base nas saídas dos últimos 30 dias".

RESPONSIVO
Desktop, tablet e mobile; tabela vira cards no mobile.

CRITÉRIOS DE ACEITE
Confirmar pedido reduz o estoque e recalcula o status do produto. Dashboard reflete na hora. Nunca permite estoque negativo.

CAMADA DE DADOS (o usuário escolhe a fonte)
Toda leitura/escrita passa por UMA interface (padrão repository/adapter), ex.: EstoqueRepository com list/create/update/remove. A UI nunca acessa o banco direto; trocar de fonte = mexer só nesse arquivo.
- Se a ferramenta for interativa (chat do Lovable): ANTES de construir, pergunte qual fonte eu quero, explique cada opção em uma linha e implemente a escolhida.
- Se for geração única (V0): implemente a Opção A por padrão e deixe B e C documentadas e prontas para trocar.

Opção A · Demonstração (padrão, sem conta, sem custo): armazenar em localStorage e popular com o SEED na primeira execução. Serve para testar a interface agora; dados ficam só neste navegador.

Opção B · Supabase (gratuito, recomendado para produto real): Postgres na nuvem, multiusuário. Crie as tabelas com este SQL (com RLS habilitada):
create table produtos ( id uuid primary key default gen_random_uuid(), sku text unique not null, nome text not null, categoria text, preco numeric(12,2) not null default 0, quantidade int not null default 0, estoque_minimo int not null default 0 );
create table clientes ( id uuid primary key default gen_random_uuid(), nome text not null, email text, tel text, endereco text );
create table pedidos ( id uuid primary key default gen_random_uuid(), numero serial, cliente_id uuid references clientes(id), data date not null default now(), total numeric(12,2) not null default 0, status text not null default 'pendente' check (status in ('pendente','processando','enviado','entregue','cancelado')) );
create table itens_pedido ( id uuid primary key default gen_random_uuid(), pedido_id uuid references pedidos(id) on delete cascade, produto_id uuid references produtos(id), qtd int not null check (qtd > 0), preco_unit numeric(12,2) not null );
alter table produtos enable row level security;  alter table clientes enable row level security;  alter table pedidos enable row level security;  alter table itens_pedido enable row level security;
Use as variáveis NEXT_PUBLIC_SUPABASE_URL e NEXT_PUBLIC_SUPABASE_ANON_KEY. Passos do usuário: criar projeto free em supabase.com, copiar URL + anon key e colar nas variáveis de ambiente.

Opção C · Excel / Google Sheets (importar e exportar): não é banco em tempo real. Implemente "Importar CSV/Excel" e "Exportar para Excel/CSV" com a biblioteca SheetJS, mapeando as colunas da planilha para os campos do modelo. Sincronização ao vivo com Google Sheets exige Google Sheets API + credenciais (opcional, avançado).

GUIA RÁPIDO (mostre ao usuário): só testar agora → A (localStorage); clientes reais usando → B (Supabase free); já controlo em planilha → C (importar/exportar Excel).

ENTREGÁVEL E EXPECTATIVA (importante)
Faça o app já impressionar na 1ª geração: dados de exemplo, todas as telas, validação e estados tratados — pronto para clicar e navegar, sem tela quebrada.
Onde depender de serviço externo, NÃO deixe vazio: crie a função/stub com a assinatura pronta, um comentário // TODO e o local exato de colar a credencial, e faça rodar em MODO DEMO (simulado) enquanto a credencial não existir. Assim nada parece faltando — parece configurável.

Integrações já fiadas (stubs prontos para plugar):
- Importar planilha de produtos (CSV/Excel) já funcional com SheetJS.
- Emissão de NF-e: função emitirNFe(pedido) como stub (ex.: Focus NFe/eNotas) em modo demo. // TODO: colar token do emissor.
- Leitor de código de barras: campo de busca por código + função lerCodigoBarras() (stub câmera/leitor USB).

Ao final, gere um README curto com duas listas, em tom claro:
✅ JÁ PRONTO: dashboard, produtos com status, pedidos com baixa de estoque, clientes, filtros e a previsão de reposição, com dados de exemplo
🔧 VOCÊ SÓ CONFIGURA (rápido): escolher o banco (Opção A/B/C da camada de dados), colar as credenciais das integrações acima e publicar (deploy).
Deixe explícito que ~80% já está feito e faltam apenas ajustes de configuração.
05

Estúdio de Conteúdo com IA

App · Brand Engine
Resultado real · gerado no V0
Brand Engine · Publicações e canais conectados
Tela de publicações Brand Engine

Estúdio que gera posts alinhados à identidade da marca: configura marca, objetivo e formato, gera a arte com preview ao vivo, dá uma nota de aderência ao brandbook e publica nos canais conectados.

Funcionalidades essenciais

  • Gerador de posts — marca, objetivo, formato e preset com preview ao vivo e 3 variações.
  • Nota de aderência — pontua o post contra o brandbook com checks.
  • Publicações — canais conectados e legenda gerada pela IA.
  • Brand DNA & calendário — identidade da marca e agenda editorial.

Regras inteligentes (sem ML)

  • Nota de aderência por critérios objetivos (contraste, paleta, tom, tamanho).
  • Legenda e hashtags geradas por template.
  • Contador de caracteres/hashtags por rede.
  • 3 variações determinísticas de layout.

Base visual

  • Tema escuro + acento azul/teal; arte do post nas cores da marca.
  • Cards de aderência com check e canais com badge de status.
Prompt completo: modelo de dados, telas, regras e fonte de dados
prompt-brand-engine.txt
Crie um estúdio de criação de posts com IA alinhados à identidade da marca, em português do Brasil. Nome: Brand Engine.

STACK
Next.js (App Router) + React + TypeScript + Tailwind + shadcn/ui. Tema escuro (padrão) com next-themes. Ícones lucide-react. Validação com zod + react-hook-form. Geração da arte do post em <canvas> (sem serviço externo).

MODELO DE DADOS (TypeScript)
type Marca = { id: string; nome: string; slug: string; coresPrimarias: string[]; coresSecundarias: string[]; tomDeVoz: string; fonte: string; logoUrl?: string }
type Canal = { id: string; marcaId: string; rede: 'instagram'|'tiktok'|'facebook'|'linkedin'; status: 'conectado'|'pendente'|'nao_conectado' }
type Post = { id: string; marcaId: string; objetivo: 'educar'|'vender'|'engajar'|'anuncio'; formato: 'feed'|'story'|'reels'; preset: string; headline: string; textoApoio: string; cta: string; imagemUrl?: string; legenda: string; aderencia: number; status: 'rascunho'|'aprovado'|'agendado'|'publicado'; dataHora?: string }

SEED (popular ao abrir)
2-3 marcas (ex.: "Vivo Bem" — azul céu + amarelo, tom informal e acolhedor), canais com status variados (Instagram conectado, TikTok pendente, Facebook conectado, LinkedIn não conectado) e alguns posts (rascunho/aprovado/publicado) com nota de aderência.

TELAS / ROTAS
1. /gerador — "Gerador de Posts com IA". Esquerda: card "Configurar post" (Marca, Objetivo do post, Formato, Preset visual) e card "Conteúdo" (Headline, Texto de apoio, CTA, Imagem opcional com arrastar-e-soltar) + botão "Gerar arte". Centro: preview ao vivo da arte (badge do preset, headline, texto, CTA e rodapé da marca) e abas Variação 1/2/3. Direita: "Nota de aderência X/100" com barra e checklist (Contraste aprovado, Cores dentro do brandbook, Tom de voz compatível, Pronto para publicação).
2. /publicacoes — "Canais conectados" (Instagram, TikTok, Facebook, LinkedIn com badge Conectado/Pendente/Não conectado e botão Conectar). "Post aprovado para publicação" com preview, "Legenda gerada pela IA" e meta (Tom · Hashtags · Caracteres). Ações: Publicar agora, Agendar, Baixar imagem, Copiar legenda. Painel "Detalhes do post" (Marca, Formato, Preset, Canal, Aderência, checks).
3. /marcas — CRUD de marcas (cores, tom de voz, fonte, logo).
4. /brand-dna — identidade da marca (paleta, tom de voz, regras de uso).
5. /calendario — calendário editorial dos posts agendados.
6. /dashboard — visão geral: posts criados, aderência média, próximos agendados.

REGRAS INTELIGENTES (determinísticas, sem ML)
- Nota de aderência (0-100): critérios objetivos — razão de contraste WCAG do texto sobre o fundo (cálculo real), cores usadas pertencem à paleta da marca, tom de voz compatível com palavras-chave da marca e dimensão correta do formato. Cada critério é um check verde/vermelho e compõe a nota.
- Legenda gerada por template (headline + texto + objetivo) com hashtags por palavras-chave.
- Contador de caracteres e hashtags por rede.
- 3 variações de layout/preset, determinísticas.

ESTADOS
Empty states com ação, validação inline, toast de sucesso/erro, skeleton no carregamento.

FORMATAÇÃO
Datas dd/MM/yyyy HH:mm; contadores de caracteres e hashtags visíveis.

VISUAL E LAYOUT (referência: as telas reais Brand Engine)
Tema escuro (quase preto) com acento azul/teal; a arte do post em fundo claro usando as cores da marca (ex.: azul céu + amarelo no CTA). Sidebar à esquerda com logo "Brand Engine / STUDIO" e itens Dashboard, Marcas, Brand DNA, Gerador de Posts, Calendário, Publicações, Configurações; rodapé com usuário e plano. Topbar com título + subtítulo, busca "Buscar posts, marcas...", sino, botão "+ Nova criação" e avatar.
Cards de aderência com ícone, título e check verde à direita. Canais como cards com ícone da rede e badge de status.

RÓTULOS EXATOS (use iguais à referência)
Sidebar: "Brand Engine" / "STUDIO"; itens Dashboard, Marcas, Brand DNA, Gerador de Posts, Calendário, Publicações, Configurações.
Gerador: título "Gerador de Posts com IA", subtítulo "Crie posts alinhados à sua marca em segundos"; cards "Configurar post" (Marca, Objetivo do post, Formato, Preset visual) e "Conteúdo" (Headline, Texto de apoio, CTA, Imagem (opcional)); botão "Gerar arte"; abas "Variação 1/2/3".
Aderência: "Nota de aderência X/100" + checks "Contraste aprovado", "Cores dentro do brandbook", "Tom de voz compatível", "Pronto para publicação".
Publicações: título "Publicações", subtítulo "Publique diretamente nos seus canais conectados"; seção "Canais conectados"; "Post aprovado para publicação" + "Legenda gerada pela IA"; ações "Publicar agora", "Agendar", "Baixar imagem", "Copiar legenda"; painel "Detalhes do post".

CRITÉRIOS DE ACEITE
Abrir já mostra dados (seed). Gerar art atualiza o preview e a nota de aderência na hora. Mudar a marca troca cores/tom no preview. Conectar canal muda o badge. Nenhuma tela vazia sem orientação.
CAMADA DE DADOS (o usuário escolhe a fonte)
Toda leitura/escrita passa por UMA interface (padrão repository/adapter), ex.: PostRepository/MarcaRepository com list/create/update/remove. A UI nunca acessa o banco direto; trocar de fonte = mexer só nesse arquivo.
- Se a ferramenta for interativa (chat do Lovable): ANTES de construir, pergunte qual fonte eu quero, explique cada opção em uma linha e implemente a escolhida.
- Se for geração única (V0): implemente a Opção A por padrão e deixe B e C documentadas e prontas para trocar.

Opção A · Demonstração (padrão, sem conta, sem custo): armazenar em localStorage e popular com o SEED na primeira execução.

Opção B · Supabase (gratuito, recomendado para produto real): Postgres na nuvem, multiusuário. Crie as tabelas com este SQL (com RLS habilitada):
create table marcas ( id uuid primary key default gen_random_uuid(), nome text not null, slug text, cores_primarias text[] default '{}', cores_secundarias text[] default '{}', tom_de_voz text, fonte text, logo_url text );
create table canais ( id uuid primary key default gen_random_uuid(), marca_id uuid references marcas(id), rede text not null, status text not null default 'nao_conectado' check (status in ('conectado','pendente','nao_conectado')) );
create table posts ( id uuid primary key default gen_random_uuid(), marca_id uuid references marcas(id), objetivo text, formato text, preset text, headline text, texto_apoio text, cta text, imagem_url text, legenda text, aderencia int default 0, status text not null default 'rascunho' check (status in ('rascunho','aprovado','agendado','publicado')), data_hora timestamptz );
alter table marcas enable row level security;  alter table canais enable row level security;  alter table posts enable row level security;
Use as variáveis NEXT_PUBLIC_SUPABASE_URL e NEXT_PUBLIC_SUPABASE_ANON_KEY. Passos do usuário: criar projeto free em supabase.com, copiar URL + anon key e colar nas variáveis de ambiente.

Opção C · Excel / Google Sheets (importar e exportar): não é banco em tempo real. Implemente "Importar CSV/Excel" e "Exportar para Excel/CSV" com a biblioteca SheetJS, mapeando as colunas da planilha para os campos do modelo.

GUIA RÁPIDO (mostre ao usuário): só testar agora -> A (localStorage); clientes reais usando -> B (Supabase free); já controlo em planilha -> C (importar/exportar Excel).

ENTREGÁVEL E EXPECTATIVA (importante)
Faça o app já impressionar na 1a geração: dados de exemplo, todas as telas, validação e estados tratados — pronto para clicar e navegar, sem tela quebrada.
Onde depender de serviço externo, NÃO deixe vazio: crie a função/stub com a assinatura pronta, um comentário // TODO e o local exato de colar a credencial, e faça rodar em MODO DEMO (simulado) enquanto a credencial não existir.

Integrações já fiadas (stubs prontos para plugar):
- Publicação nas redes: função publicarPost(post, canal) preparada para a Graph API da Meta (Instagram/Facebook), TikTok e LinkedIn. Em demo, marca como "publicado" e mostra preview. // TODO: criar app na Meta, verificar negócio e colar os tokens.
- Geração da arte do post: já funcional offline em <canvas> (com botão "Baixar imagem"), sem integração.
- Nota de aderência: calculada localmente (contraste WCAG, paleta da marca, tom de voz, tamanho do formato), sem serviço externo.

Ao final, gere um README curto com duas listas, em tom claro:
✅ JÁ PRONTO: gerador com preview ao vivo e 3 variações, nota de aderência com checks, canais conectados, legenda gerada, publicações e calendário, com dados de exemplo.
🔧 VOCÊ SÓ CONFIGURA (rápido): escolher o banco (Opção A/B/C da camada de dados), colar as credenciais das integrações acima e publicar (deploy).
Deixe explícito que ~80% já está feito e faltam apenas ajustes de configuração.
06

Site de Pizzaria BÔNUS

App · Tetra Pizza
Resultado real · gerado no V0
Tetra Pizza · gerado a partir deste prompt
Site de pizzaria Tetra Pizza gerado no V0

Site institucional + cardápio + pedido online para pizzaria ou restaurante. Vitrine que vende: hero apetitoso, especialidades, carrinho e pedido direto no WhatsApp — a integração que de fato resolve a dor.

Funcionalidades essenciais

  • Landing apetitosa — hero, especialidades e sobre.
  • Cardápio — categorias, tamanhos P/M/G e preços.
  • Carrinho e checkout — itens, entrega e pagamento.
  • Pedido por WhatsApp — envia o resumo direto pro Zap.

Regras inteligentes (sem ML)

  • Cálculo de subtotal, taxa de entrega e total.
  • Preço por tamanho e por item.
  • Montagem do pedido em texto para o WhatsApp.

Base visual

  • Fundo creme, vermelho italiano; cards com foto.
  • Hero com imagem de forno/pizza e CTA forte.
Prompt completo: modelo de dados, telas, regras e fonte de dados
prompt-pizzaria.txt
Crie um site para uma pizzaria (institucional + cardápio + pedido online), em português do Brasil. Nome: Tetra Pizza.

STACK
Next.js (App Router) + React + TypeScript + Tailwind + shadcn/ui. Tema claro (creme) como padrão. Ícones lucide-react. Carrinho com Context/estado. Validação com zod + react-hook-form.

MODELO DE DADOS (TypeScript)
type Categoria = { id: string; nome: string }
type Produto = { id: string; nome: string; descricao: string; ingredientes: string[]; precoP: number; precoM: number; precoG: number; imagemUrl: string; categoriaId: string; destaque: boolean }
type ItemCarrinho = { produtoId: string; tamanho: 'P'|'M'|'G'; qtd: number }
type Pedido = { id: string; itens: ItemCarrinho[]; subtotal: number; taxaEntrega: number; total: number; clienteNome: string; clienteTel: string; endereco: string; pagamento: 'pix'|'dinheiro'|'cartao'; status: 'novo'|'em_preparo'|'saiu'|'entregue' }

SEED (popular ao abrir)
~12 produtos com fotos (use placeholders de pizza), categorias (Tradicionais, Especiais, Doces, Bebidas) e preços por tamanho; 3-4 marcados como destaque para a seção de especialidades.

TELAS / SEÇÕES
1. Home (landing): header com logo "Tetra Pizza" + nav (Início, Cardápio, Sobre) + ícone de carrinho com contador. Hero vermelho com imagem de forno/pizza ao fundo, título "Pizzas Artesanais Feitas com Amor", subtexto e botões "Ver Cardápio" e "Fazer Pedido". Seção "Nossas Especialidades" (grid de cards com foto, nome, descrição, preço e botão "Adicionar"). Seção "Sobre". Rodapé com endereço, horário e contato.
2. Cardápio: grid filtrável por categoria; cada item com seleção de tamanho P/M/G, preço e botão adicionar ao carrinho.
3. Carrinho / Checkout: lista de itens com ajuste de quantidade, subtotal + taxa de entrega + total; formulário de entrega (nome, telefone, endereço) e forma de pagamento (Pix, dinheiro, cartão); botão "Finalizar pedido".

REGRAS INTELIGENTES (determinísticas, sem ML)
- Carrinho: cálculo de subtotal por item/tamanho, taxa de entrega (fixa ou por bairro) e total.
- Finalizar pedido monta um resumo em texto e abre o WhatsApp do estabelecimento (link wa.me) com o pedido preenchido.
- Validação de telefone e endereço.

ESTADOS
Empty state no carrinho. Validação inline. Toast ao adicionar/finalizar.

FORMATAÇÃO
Moeda BRL com Intl.NumberFormat('pt-BR').

VISUAL E LAYOUT (referência: a tela real Tetra Pizza)
Fundo creme (#FAF6EE), vermelho italiano #C8102E como primária, texto escuro. Header claro com logo "Tetra Pizza" (ícone de fatia) e nav. Hero em vermelho com imagem de forno/pizza ao fundo (com overlay), título grande e forte, subtexto claro e dois botões ("Ver Cardápio" creme, "Fazer Pedido" contornado). Cards de produto brancos, com foto no topo, sombra suave e cantos arredondados. Tipografia marcante nos títulos.

RÓTULOS EXATOS (use iguais à referência)
Logo "Tetra Pizza"; nav "Início", "Cardápio", "Sobre" + ícone de carrinho.
Hero: título "Pizzas Artesanais Feitas com Amor"; subtexto "Ingredientes frescos, massa artesanal e o sabor autêntico da Itália. Peça agora e receba quentinha em casa!"; botões "Ver Cardápio" e "Fazer Pedido".
Seção: "Nossas Especialidades" / "Pizzas preparadas com ingredientes selecionados e receitas tradicionais".

CRITÉRIOS DE ACEITE
Abrir já mostra o cardápio com fotos (seed). Adicionar ao carrinho atualiza o contador e o total. Finalizar abre o WhatsApp com o pedido montado. Responsivo (cardápio em coluna no mobile).
CAMADA DE DADOS (o usuário escolhe a fonte)
Toda leitura/escrita passa por UMA interface (padrão repository/adapter), ex.: ProdutoRepository/PedidoRepository. A UI nunca acessa o banco direto; trocar de fonte = mexer só nesse arquivo.
- Lovable (interativo): pergunte qual fonte eu quero antes de construir e implemente a escolhida.
- V0 (geração única): implemente a Opção A por padrão e deixe B e C documentadas.

Opção A · Demonstração (padrão, sem conta): localStorage com o SEED na primeira execução.

Opção B · Supabase (gratuito, recomendado): Postgres na nuvem. SQL (com RLS):
create table categorias ( id uuid primary key default gen_random_uuid(), nome text not null );
create table produtos ( id uuid primary key default gen_random_uuid(), nome text not null, descricao text, ingredientes text[] default '{}', preco_p numeric(10,2), preco_m numeric(10,2), preco_g numeric(10,2), imagem_url text, categoria_id uuid references categorias(id), destaque boolean default false );
create table pedidos ( id uuid primary key default gen_random_uuid(), cliente_nome text, cliente_tel text, endereco text, subtotal numeric(10,2), taxa_entrega numeric(10,2), total numeric(10,2), pagamento text check (pagamento in ('pix','dinheiro','cartao')), status text default 'novo' check (status in ('novo','em_preparo','saiu','entregue')), created_at timestamptz default now() );
create table itens_pedido ( id uuid primary key default gen_random_uuid(), pedido_id uuid references pedidos(id) on delete cascade, produto_id uuid references produtos(id), tamanho text check (tamanho in ('P','M','G')), qtd int not null check (qtd > 0), preco_unit numeric(10,2) );
alter table categorias enable row level security;  alter table produtos enable row level security;  alter table pedidos enable row level security;  alter table itens_pedido enable row level security;
Use NEXT_PUBLIC_SUPABASE_URL e NEXT_PUBLIC_SUPABASE_ANON_KEY. Criar projeto free em supabase.com, copiar URL + anon key e colar nas variáveis de ambiente.

Opção C · Excel / Google Sheets (importar e exportar): para cadastrar o cardápio por planilha. Importar/Exportar CSV/Excel com SheetJS.

GUIA RÁPIDO: só testar -> A; clientes reais -> B (Supabase free); cardápio em planilha -> C.

ENTREGÁVEL E EXPECTATIVA (importante)
Faça o site já impressionar na 1a geração: cardápio com fotos (seed), todas as seções, carrinho funcional — pronto para navegar.
Onde depender de serviço externo, NÃO deixe vazio: crie a função/stub com a assinatura pronta, // TODO e o local de colar a credencial, rodando em MODO DEMO.

Integrações já fiadas (stubs prontos para plugar):
- Pedido por WhatsApp: função enviarPedidoWhatsApp(pedido) monta o texto do pedido e abre wa.me/NUMERO (ou Evolution API). Em demo, abre com um número de exemplo. // TODO: colar o número do estabelecimento.
- Pagamento Pix: função gerarPix(total) como stub (ex.: Mercado Pago) em demo. // TODO: colar a chave do provedor.
- Imagens dos produtos: URL ou upload; em demo usa placeholders de pizza.

Ao final, gere um README curto:
✅ JÁ PRONTO: landing completa, cardápio com tamanhos e preços, carrinho com cálculo de total e pedido montado para o WhatsApp, com dados de exemplo.
🔧 VOCÊ SÓ CONFIGURA (rápido): escolher o banco (A/B/C), colar o número de WhatsApp e a chave Pix, trocar fotos e publicar (deploy).
Deixe explícito que ~80% já está feito e faltam apenas ajustes de configuração.
O que esperar

Adianta ~80%. Você configura o resto.

Cada prompt entrega um app navegável com dados reais logo na primeira geração. As integrações já vêm prontas em modo demo: você cola a credencial e pronto.

Já vem pronto

Telas completas, dados de exemplo, validação, filtros e regras já funcionando. Roda e impressiona na primeira geração, sem tela em branco.

🔧

Você só configura

Escolher o banco (localStorage, Supabase grátis ou Excel), colar credenciais das integrações (WhatsApp, Pix, NF-e, Meta) e publicar. Ajuste, não construção.

Comece pelo sistema mais fácil de vender na sua cidade.

Pegue um prompt, gere no V0 ou Lovable, personalize com a marca do cliente e entregue. Repita para o próximo negócio.

Cada prompt equivale a 20+ tentativas de prompts comuns. Você pula a etapa de descobrir o que pedir e já parte de um modelo estruturado, com dados, telas, regras e integrações fiadas.

Importante: estes prompts geram um ponto de partida profissional. Eles não substituem as integrações e configurações específicas de cada projeto. WhatsApp, Pix, NF-e, publicação em redes, autenticação, banco de dados e deploy ficam a cargo de quem implementa.

Tetra Educação

Acesse o Pack de Prompts

Digite o e-mail com o qual você se cadastrou na Tetra para liberar o acesso.

Ainda não tem acesso? Adquira em tetraeducacao.com.br