diff --git a/docs/README.md b/docs/README.md index 8746e689..06f9ba29 100644 --- a/docs/README.md +++ b/docs/README.md @@ -34,6 +34,7 @@ Outros apps no repositório (**ApplyFlow** como case de portfólio local-first, | [**shared/**](./shared/) | Monorepo, deploy, Prisma, monetização, ADRs | | [**ecossistema/**](./ecossistema/) | Rotas, URLs e visão do hub | | [**site/**](./site/) | Inventário de rotas e decisões de routing | +| [**portal/**](./portal/README.md) | Portal canónico: terminologia comercial, guardrails e status de `apps/site` | | [**seo/**](./seo/) | Pilares, clusters, indexação | | [**backlinks/**](./backlinks/) | Rascunhos de artigos / link building | | [**ai-ops/**](./ai-ops/) | Workflow de IA, checklists de demo | diff --git a/docs/portal/COMMERCIAL-TERMINOLOGY.md b/docs/portal/COMMERCIAL-TERMINOLOGY.md new file mode 100644 index 00000000..d1361d1c --- /dev/null +++ b/docs/portal/COMMERCIAL-TERMINOLOGY.md @@ -0,0 +1,55 @@ +# Terminologia comercial do portal + +Guia de linguagem para o portal canónico. Não descreve comportamento de runtime. + +## Produto + +Preferir `WhatsApp Platform`. + +Categoria: operação de conversas no WhatsApp. + +## Inbox + +Preferir `inbox compartilhado`. + +## Responsável + +Linguagem de compra: `responsável`. + +No runtime, o conceito é o dono da conversa (`assignedToUserId`), com assumir, transferir e devolver. + +## Fila + +Linguagem de compra: `fila`. + +A fila organiza o que precisa de resposta. Não implica roteamento por IA, habilidade, presença ou carga. + +## Handoff + +Preferir `handoff` ou transferência para uma pessoa, com o histórico. + +## Automação + +Preferir `automação supervisionada`. + +Forma curta: automação no repetitivo; pessoa quando precisa. + +Evitar recepcionista autônoma, IA 24/7 e bot inteligente. + +## Implantação + +Preferir `implantação acompanhada`. + +Evitar self-service. + +## Demonstrações + +Separar prova de cliente real de dados ilustrativos e simulação. + +A demo do portal é uma demonstração da plataforma, com dados ilustrativos. + +## API + +Preferir `WhatsApp Cloud API oficial da Meta`. + +A implantação acompanhada não garante aprovação da conta. diff --git a/docs/portal/LEGACY-SITE-STATUS.md b/docs/portal/LEGACY-SITE-STATUS.md new file mode 100644 index 00000000..7f26f223 --- /dev/null +++ b/docs/portal/LEGACY-SITE-STATUS.md @@ -0,0 +1,25 @@ +# `apps/site` — status + +Classificação: **LEGACY BUT STILL REFERENCED**. + +## O que é + +Pacote `@devflow/app-site`. Espelho histórico de marketing. O portal canónico é `src/` na raiz, publicado pelo projeto Vercel `devflow` (root do repositório) em `devflowlabs.com.br`. + +## Por que permanece + +- O workspace inclui `apps/*`, então o pacote entra no lockfile. +- A remoção total está marcada como fase posterior, com confirmação humana (`apps/site/README.md`, issue #173, `docs/architecture/ROUTING_MIGRATION_EXECUCAO.md`). +- `docs/whatsapp-platform/REPOSITORY-PURITY-STATUS.md` classifica o pacote como LEGACY / FREEZE / BLOCKED. +- Nenhum projeto Vercel deste time usa `rootDirectory=apps/site`. Os projetos atuais são `devflow` (raiz), `devflow-whatsapp`, `devflow-financeiro` e `devflow-applyflow`. +- O workflow de CI não trata `@devflow/app-site` como owner do portal, mas um `pnpm -r` ainda enxerga o pacote. + +## O que não fazer + +- Não editar Header, navegação ou copy comercial aqui. +- Não sincronizar o espelho com o portal canónico. +- Não apagar o diretório neste ciclo: a exclusão muda workspace e lockfile e ainda depende de confirmação humana. + +## Bloqueio para remoção + +Confirmação humana de que nenhum deploy, script ou consumidor fora deste inventário ainda usa o pacote, seguida da retirada do workspace e do lockfile. diff --git a/docs/portal/README.md b/docs/portal/README.md new file mode 100644 index 00000000..1a4486c8 --- /dev/null +++ b/docs/portal/README.md @@ -0,0 +1,22 @@ +# Portal canónico + +O site público é o Next.js da raiz (`src/`), em `https://devflowlabs.com.br`. + +## Fonte + +- Rotas e copy públicas: `src/app` e `src/lib` do monorepo. +- Visual atual: Brand UI V2, já em produção. +- `apps/site` não é fonte de verdade. Ver [LEGACY-SITE-STATUS.md](./LEGACY-SITE-STATUS.md). + +## Posicionamento atual + +A WhatsApp Platform é a operação de conversas no WhatsApp: inbox compartilhado, responsável, fila, histórico, handoff, automação supervisionada e implantação acompanhada. + +Termos e limites: [COMMERCIAL-TERMINOLOGY.md](./COMMERCIAL-TERMINOLOGY.md). + +## Guardrails + +- Não reabrir copy do funil principal nem das páginas já normalizadas sem evidência nova de produto. +- Não tratar campo de schema, rótulo de UI ou follow-up como capacidade madura. +- Demonstração e cases públicos são simulação, salvo prova de cliente autorizada. +- `/pricing` é monetização do Financeiro (`noindex`). Não misturar com a verdade comercial do WhatsApp. diff --git a/docs/qa/CONTRASTE_LEGIBILIDADE_QA_CHECKLIST.md b/docs/qa/CONTRASTE_LEGIBILIDADE_QA_CHECKLIST.md index a3b76ea1..b7124dd2 100644 --- a/docs/qa/CONTRASTE_LEGIBILIDADE_QA_CHECKLIST.md +++ b/docs/qa/CONTRASTE_LEGIBILIDADE_QA_CHECKLIST.md @@ -37,7 +37,6 @@ Objetivo: garantir leitura confortável em uso real, sem zoom, mantendo identida ### Seções reutilizáveis da home - [ ] `HubPillarsSection`: títulos, descrições e CTAs legíveis em todos os cards. -- [ ] `WhereToStartSection`: ícones/labels não “somem” em fundos acentuados. - [ ] `ProductsSection`: descrição + bullets legíveis em cards ativos e desabilitados. - [ ] `ProblemSolutionSection`: coluna problema/solução com contraste claro de texto. - [ ] `ConnectedProductsSection` e `WhyUseSection` (light): texto escuro confortável. diff --git a/src/components/sections/antes-depois.tsx b/src/components/sections/antes-depois.tsx deleted file mode 100644 index 31dd04dd..00000000 --- a/src/components/sections/antes-depois.tsx +++ /dev/null @@ -1,69 +0,0 @@ -import { X, Check } from "lucide-react"; -import { cn } from "@/lib/utils"; - -const antes = [ - "Demora para responder", - "Mensagens perdidas", - "Atendimento manual o tempo todo", -]; - -const depois = [ - "Resposta imediata", - "Qualificação automática", - "Encaminhamento inteligente", -]; - -export function AntesDepois() { - return ( -
-
-
-

- Antes vs Depois -

-

- A transformação que a automação traz para o atendimento. -

-
- -
-
-

Antes

-
    - {antes.map((item) => ( -
  • - - {item} -
  • - ))} -
-
-
-

Depois

-
    - {depois.map((item) => ( -
  • - - {item} -
  • - ))} -
-
-
-
-
- ); -} diff --git a/src/components/sections/feature-grid.tsx b/src/components/sections/feature-grid.tsx deleted file mode 100644 index a943b551..00000000 --- a/src/components/sections/feature-grid.tsx +++ /dev/null @@ -1,76 +0,0 @@ -import { cn } from "@/lib/utils"; - -const features = [ - { - title: "Respostas automáticas", - description: - "O sistema responde sozinho perguntas frequentes, 24/7, sem ocupar a equipe.", - }, - { - title: "Handoff inteligente", - description: - "Quando o cliente pede atendente ou o fluxo exige, a conversa vai para humano na hora.", - }, - { - title: "Métricas por horário e intenção", - description: - "Veja o que foi automatizado e o que virou atendimento, em tempo real.", - }, - { - title: "Relatórios e visão operacional", - description: - "Dashboards simples para acompanhar performance e volume da operação.", - }, - { - title: "Alertas e limites mensais", - description: - "Configure avisos e limites para não perder o controle do volume ou custos.", - }, - { - title: "Segurança e confiabilidade", - description: - "Infraestrutura estável, logs e rastreabilidade para operar com tranquilidade.", - }, -]; - -export function FeatureGrid() { - return ( -
-
-
-
-

- Recursos que fazem diferença -

-

- O que a DevFlow entrega para sua operação de atendimento no WhatsApp. -

-
- -
- {features.map((feature) => ( -
-

{feature.title}

-

- {feature.description} -

-
- ))} -
-
-
- ); -} diff --git a/src/components/sections/hero.tsx b/src/components/sections/hero.tsx deleted file mode 100644 index c35f09a8..00000000 --- a/src/components/sections/hero.tsx +++ /dev/null @@ -1,238 +0,0 @@ -"use client"; - -import Link from "next/link"; -import { Check, ArrowRight, MessageCircle } from "lucide-react"; -import { WhatsAppCta } from "@/components/shared/whatsapp-cta"; -import { trackCtaDemoClick } from "@/lib/analytics"; -import { cn } from "@/lib/utils"; - -const proofSocial = "Infraestrutura pronta para automação de atendimento • WhatsApp • IA • Operação humana"; - -const microProof = [ - "Automação 24/7", - "Handoff humano", - "Métricas operacionais", - "Infraestrutura escalável", -]; - -const messages = [ - { - type: "user" as const, - text: "A entrega chega hoje?", - time: "14:32", - }, - { - type: "bot" as const, - text: "Temos motoboy até as 18h e app de delivery. Qual opção você prefere?", - time: "14:32", - }, - { - type: "user" as const, - text: "Prefiro falar com um atendente", - time: "14:33", - }, - { - type: "bot" as const, - text: "Conectando você com nossa equipe agora.", - time: "14:33", - }, -]; - -const proofBadges = [ - "Assinatura Meta", - "Dedupe por mensagem", - "AuditLog + trace_id", -]; - -function MessageBubble({ - type, - text, - time, -}: { - type: "user" | "bot"; - text: string; - time: string; -}) { - return ( -
-
- {text} -
- {time} -
- ); -} - -export function Hero() { - return ( -
- {/* Glow sutil + grid tecnológico */} -
-
-
-
-
-
-
- {/* Coluna esquerda */} -
-
- Automação - • - SaaS - • - Operação real -
- -
-

- Automação Inteligente de Atendimento no WhatsApp -

-

- Empresas que recebem muitas mensagens perdem vendas todos os dias. - Automatize respostas, organize conversas e nunca deixe um cliente - sem retorno. -

-
- - Atendimento automático - - - Qualificação de leads - - - Integração WhatsApp Cloud API - -
-
- -

- {proofSocial} -

- -
- trackCtaDemoClick("hero")} - className={cn( - "inline-flex items-center justify-center gap-2 h-14 rounded-xl px-6 text-lg font-semibold", - "bg-primary text-primary-foreground transition-all duration-200 hover:bg-primary/90" - )} - > - Ver uma conversa em ação - - - -
- -
    - {microProof.map((bullet, i) => ( -
  • - - {bullet} -
  • - ))} -
-
- - {/* Coluna direita - mockup conversa realista */} -
-

- Exemplo real de conversa -

-
-
- - -
-
-

DevFlow Bot

-

- - online -

-
-
- -
- {messages.map((msg, i) => ( - - ))} -
- - - - - - DevFlow Bot está digitando... -
-
-
-
- - {/* Micro-cards de prova técnica — azul tech para identidade */} -
- {proofBadges.map((badge) => ( -
- {badge} -
- ))} -
-
-
- ); -} diff --git a/src/components/sections/processo-3-passos.tsx b/src/components/sections/processo-3-passos.tsx deleted file mode 100644 index ba6b1c8b..00000000 --- a/src/components/sections/processo-3-passos.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import { MessageSquare, Settings, Rocket } from "lucide-react"; -import { cn } from "@/lib/utils"; - -const passos = [ - { - icon: MessageSquare, - numero: "1", - title: "Entendemos seu atendimento", - description: "Mapeamos as perguntas que mais chegam e como sua equipe responde hoje.", - }, - { - icon: Settings, - numero: "2", - title: "Configuramos o fluxo", - description: "Montamos as respostas automáticas e o handoff para humanos.", - }, - { - icon: Rocket, - numero: "3", - title: "Você começa a receber leads", - description: "Resposta automática 24/7. Sua equipe foca no que importa.", - }, -]; - -export function Processo3Passos() { - return ( -
-
-
-

- Como começamos -

-

- Três passos simples. Reduz a sensação de complexidade. -

-
- -
- {passos.map((passo) => ( -
-
- {passo.numero} -
-

{passo.title}

-

{passo.description}

-
- ))} -
-
-
- ); -} diff --git a/src/components/sections/where-to-start-section.tsx b/src/components/sections/where-to-start-section.tsx deleted file mode 100644 index 7a93a261..00000000 --- a/src/components/sections/where-to-start-section.tsx +++ /dev/null @@ -1,110 +0,0 @@ -"use client"; - -import Link from "next/link"; -import { Zap, TrendingUp, MessageCircle, ArrowRight } from "lucide-react"; -import { trackHomeCta } from "@/lib/analytics"; -import { - ECOSYSTEM_SECTION_LABEL, - PRIMARY_CONVERT_CTA_LABEL, - PRIMARY_CONVERT_HREF, -} from "@/lib/conversion-copy"; -import { cn } from "@/lib/utils"; - -const paths = [ - { - title: "Quer operação no WhatsApp?", - body: "Diagnóstico, implementação guiada e inbox com IA, handoff humano e dashboard operacional.", - cta: PRIMARY_CONVERT_CTA_LABEL, - href: PRIMARY_CONVERT_HREF, - icon: MessageCircle, - track: "hub_pillar_automation" as const, - foot: "Solução principal · API oficial Meta", - accent: "df-border-brand df-bg-brand-soft hover:border-[color-mix(in_srgb,var(--devflow-brand)_40%,transparent)]", - iconClass: "df-bg-brand-soft df-status-brand", - featured: true, - }, - { - title: "Precisa de uma ferramenta rápida?", - body: "Utilitários gratuitos no browser — CNPJ, divisão de contas e simuladores.", - cta: "Ver ferramentas gratuitas", - href: "/ferramentas", - icon: Zap, - track: "hub_pillar_tools" as const, - foot: "Grátis · Complementar à operação principal", - accent: "border-primary/30 bg-primary/[0.06] hover:border-primary/50", - iconClass: "bg-primary/15 text-primary", - featured: false, - }, - { - title: "Quer conhecer outros produtos?", - body: "Financeiro e módulos complementares do ecossistema DevFlow Labs.", - cta: "Ver catálogo de produtos", - href: "/produtos", - icon: TrendingUp, - track: "hub_pillar_products" as const, - foot: "Complementar · Não substitui a WhatsApp Platform", - accent: "df-border-brand bg-[var(--devflow-surface-elevated)] hover:border-[color-mix(in_srgb,var(--devflow-brand)_25%,transparent)]", - iconClass: "bg-muted/50 df-text-secondary", - featured: false, - }, -]; - -export function WhereToStartSection() { - return ( -
-
-
-
-

{ECOSYSTEM_SECTION_LABEL}

-

- Outros caminhos no ecossistema -

-

- Se atendimento no WhatsApp não é sua urgência agora, explore as opções complementares. -

-
- -
    - {paths.map((p) => ( -
  • - trackHomeCta(p.track)} - className={cn( - "flex h-full min-h-0 flex-col rounded-2xl border-2 p-5 sm:p-6 lg:p-7", - "shadow-sm transition-all duration-300", - "hover:-translate-y-1 hover:shadow-lg", - p.accent, - p.featured && "ring-1 ring-[color-mix(in_srgb,var(--devflow-brand)_20%,transparent)]" - )} - > -
    - -
    -

    {p.title}

    -

    {p.body}

    - - {p.cta} - - -

    {p.foot}

    - -
  • - ))} -
-
-
- ); -}