11 KiB
Tasks: Página Sobre
Input: Design documents from /specs/021-pagina-sobre/
Prerequisites: plan.md ✅, spec.md ✅, research.md ✅, data-model.md ✅, quickstart.md ✅
Tests: Não solicitados — feature 100% estática sem lógica testável via testes unitários.
Organização: Tarefas agrupadas por user story para permitir implementação e validação independente.
Format: [ID] [P?] [Story] Descrição
- [P]: Pode rodar em paralelo (arquivos diferentes, sem dependências entre si)
- [Story]: User story correspondente (US1, US2, US3)
- Caminhos de arquivo relativos à raiz do repositório
Phase 1: Setup
Propósito: Verificação do ambiente. Feature sem dependências novas — tudo já está instalado.
- T001 Confirmar que
react-router-domv6 está listado emfrontend/package.jsone quetailwind.config.tsdefine os tokensbg-canvas,bg-panel,text-text-primary,text-text-secondaryetext-text-tertiary
Checkpoint: Ambiente pronto — nenhuma instalação necessária.
Phase 2: Foundational (Pré-requisitos Bloqueantes)
Propósito: Garantir que os arquivos de referência foram lidos antes de qualquer implementação.
⚠️ CRÍTICO: Leia os arquivos de referência abaixo antes de iniciar qualquer tarefa das fases seguintes.
- T002 Ler
frontend/src/pages/PrivacyPolicyPage.tsxpara entender o padrão de página estática adotado no projeto (estrutura<Navbar />+<main>+<Footer />) - T003 [P] Ler
frontend/src/App.tsxpara identificar onde inserir a nova rota/sobree qual import seguir como padrão - T003 [P] Ler
frontend/src/components/Footer.tsxpara entender como o link "Sobre" está implementado atualmente (#sobre) e confirmar queLinkdereact-router-domjá está importado (padrão introduzido na feature 020)
Checkpoint: Padrões de referência entendidos — implementação pode iniciar.
Phase 3: User Story 1 — Visitante conhece a empresa na página Sobre (Priority: P1) 🎯 MVP
Goal: A rota /sobre é acessível publicamente, exibe as seis seções institucionais (Hero, História, Diferenciais, Números, Equipe, CTA Final) com Navbar e Footer, e o link "Sobre" no Footer navega para /sobre sem recarregar a aplicação.
Independent Test: Acessar http://localhost:5173/sobre e verificar que as seis seções são renderizadas com conteúdo visível em mobile (320 px) e desktop (1280 px), sem erros de console.
Implementação da User Story 1
-
T004 [US1] Criar
frontend/src/pages/AboutPage.tsx— componente sem props e sem estado seguindo o padrão dePrivacyPolicyPage.tsx:- Importar
Linkdereact-router-dom,NavbareFooter - Estrutura raiz:
<Navbar />+<main id="main-content" className="min-h-screen bg-canvas">+<Footer /> - Largura máxima do conteúdo:
max-w-[1200px] mx-auto px-6 - Definir tipos locais (não exportados):
DiferencialItem { icon, title, description }eMetricItem { value, label } - Seção Hero (JSX direto): label
text-[#5e6ad2] text-sm font-medium tracking-widest uppercase+ título da empresafont-semibold text-text-primary tracking-tight+ subtítulotext-text-secondary+ parágrafo de missão/valorestext-text-tertiary - Seção Nossa História (JSX direto): título de seção + 2–3 parágrafos narrativos
text-text-secondary - Seção Nossos Diferenciais (
.map()sobre arraydiferenciais: DiferencialItem[]com 3 itens): grid de cardsbg-panel border border-white/[0.06] rounded-2xl p-6, cada card com ícone (emoji UTF-8), títulotext-text-primary font-semibolde descriçãotext-text-secondary - Seção Números em Destaque (
.map()sobre arraynumeros: MetricItem[]com 4 itens — anos de mercado, imóveis negociados, satisfação de clientes, número de corretores): grid de cardsbg-panel border border-white/[0.06] rounded-2xl, cada card com valortext-[#5e6ad2] font-bold text-3xle labeltext-text-secondary text-sm - Seção Nossa Equipe (JSX direto): título de seção + texto introdutório +
<Link to="/corretores">"Conheça nosso time" - Seção CTA Final (JSX direto): título "Pronto para encontrar seu imóvel?" +
<Link to="/imoveis">com classebg-[#5e6ad2] hover:bg-[#6872e5] text-white rounded-lg px-5 py-2.5+<a href="https://wa.me/5500000000000?text=Olá!%20Gostaria%20de%20saber%20mais%20sobre%20os%20imóveis%20disponíveis." target="_blank" rel="noopener noreferrer">com classeborder border-white/[0.08] text-text-secondary hover:text-text-primary rounded-lg px-5 py-2.5
- Importar
-
T005 [US1] Editar
frontend/src/App.tsx— adicionar import e rota paraAboutPage:- Adicionar
import AboutPage from './pages/AboutPage';junto aos demais imports de páginas (apósPrivacyPolicyPageseguindo ordem alfabética/cronológica) - Adicionar
<Route path="/sobre" element={<AboutPage />} />na mesma camada das rotas públicas, após<Route path="/politica-de-privacidade" element={<PrivacyPolicyPage />} />
- Adicionar
-
T006 [US1] Editar
frontend/src/components/Footer.tsx— converter link "Sobre" de âncora para navegação SPA:- Localizar o item
{ label: 'Sobre', href: '#sobre' }(ou equivalente) - Substituir por
<Link to="/sobre">Sobre</Link>seguindo o mesmo padrão do link/politica-de-privacidadeintroduzido na feature 020 - Garantir que
Linkdereact-router-domjá está importado (não duplicar import)
- Localizar o item
Checkpoint: User Story 1 completa — http://localhost:5173/sobre exibe as seis seções, Navbar e Footer; link "Sobre" no Footer navega sem recarregar a página.
Phase 4: User Story 2 — Visitante usa o CTA final para iniciar contato ou buscar imóveis (Priority: P2)
Goal: O botão "Ver imóveis disponíveis" navega para /imoveis e o link de WhatsApp abre o app com mensagem pré-preenchida.
Independent Test: Na página /sobre, clicar em "Ver imóveis disponíveis" e confirmar navegação para /imoveis; clicar no link de WhatsApp e confirmar abertura do app/web com mensagem pré-preenchida.
Nota: Os CTAs de US2 são implementados dentro de
AboutPage.tsxna tarefa T004 (Seção CTA Final). Esta fase consiste apenas em validar o comportamento.
Validação da User Story 2
- T007 [US2] Validar na
AboutPage.tsx(já criada em T004) se os dois CTAs da seção final estão corretos:<Link to="/imoveis">usa classe primáriabg-[#5e6ad2] hover:bg-[#6872e5] text-white rounded-lg px-5 py-2.5<a href="https://wa.me/5500000000000?text=...">tem atributostarget="_blank"erel="noopener noreferrer"(requisito de segurança — evitawindow.openerexploit)- Em mobile, confirmar que o link
wa.meabre o WhatsApp nativo (comportamento padrão do protocolo)
Checkpoint: US1 e US2 funcionais — navegação e CTAs de conversão operantes.
Phase 5: User Story 3 — Visitante descobre a equipe e navega para listagem de corretores (Priority: P3)
Goal: A seção "Nossa Equipe" exibe texto introdutório e um CTA <Link to="/corretores"> funcional.
Independent Test: Na página /sobre, clicar em "Conheça nosso time" (ou equivalente) e confirmar navegação SPA para /corretores.
Nota: O CTA de US3 é implementado dentro de
AboutPage.tsxna tarefa T004 (Seção Nossa Equipe). Esta fase consiste apenas em validar o comportamento.
Validação da User Story 3
- T008 [US3] Validar na
AboutPage.tsx(já criada em T004) se a seção "Nossa Equipe" está correta:<Link to="/corretores">presente e com texto identificável (ex.: "Conheça nosso time")- Texto introdutório sobre a equipe visível acima do CTA
Checkpoint: Todas as três user stories funcionais e independentemente testáveis.
Phase 6: Polish & Validação Final
Propósito: Verificação de responsividade, consistência visual e ausência de erros.
- T009 [P] Executar checklist do
quickstart.mdemhttp://localhost:5173/sobre: verificar as seis seções visíveis, Navbar/Footer presentes, ausência de erros de console, link "Sobre" no Footer navegando sem reload - T010 [P] Validar responsividade em viewport mobile (320 px e 375 px) e desktop (1280 px e 1920 px) — garantir que nenhum elemento transborda horizontalmente (
overflow-xausente) - T011 Revisar se todos os tokens Tailwind usados (
bg-canvas,bg-panel,text-text-primary,text-text-secondary,text-text-tertiary,border-white/[0.06],border-white/[0.08]) estão definidos emfrontend/tailwind.config.tse não foram usados valores inline fora do sistema de design
Dependencies & Execution Order
Dependências entre Fases
- Phase 1 (Setup): Sem dependências — iniciar imediatamente
- Phase 2 (Foundational): Depende do Phase 1 — BLOQUEIA todas as user stories
- Phase 3 (US1): Depende do Phase 2 — MVP entregável ao final desta fase
- Phase 4 (US2): Depende do Phase 3 (T004 deve estar completo)
- Phase 5 (US3): Depende do Phase 3 (T004 deve estar completo)
- Phase 6 (Polish): Depende de todas as fases anteriores
Dependências entre User Stories
- US1 (P1): Independente — inicia após Phase 2
- US2 (P2): Depende de US1 (T004 cria os CTAs validados em T007)
- US3 (P3): Depende de US1 (T004 cria o CTA validado em T008)
Dentro de cada User Story (Phase 3)
- T004 → T005 → T006 (sequencial: página criada → rota registrada → footer atualizado)
- T005 e T006 podem ser feitos em paralelo após T004
Paralelo dentro da Phase 3
Após T004 (AboutPage.tsx criado):
[P] T005 — editar App.tsx (rota)
[P] T006 — editar Footer.tsx (link)
Parallel Example: User Story 1
# T004 deve estar completo antes de T005 e T006
# T005 e T006 podem ser executados em paralelo:
Task T005: "Editar frontend/src/App.tsx — adicionar import e rota /sobre"
Task T006: "Editar frontend/src/components/Footer.tsx — converter link #sobre para /sobre"
Implementation Strategy
MVP First (User Story 1 Only)
- Completar Phase 1: Setup (verificação rápida)
- Completar Phase 2: Foundational (leitura dos arquivos de referência)
- Completar Phase 3: User Story 1 (T004 → T005 + T006)
- PARAR E VALIDAR: Acessar
http://localhost:5173/sobree confirmar as seis seções - Deploy se validado
Entrega Incremental
- Setup + Foundational → Referências entendidas
- US1 completa → Página acessível, todas as seções visíveis, Footer atualizado → MVP!
- US2 validada → CTAs de conversão verificados
- US3 validada → CTA da equipe verificado
- Polish → Responsividade e consistência visual confirmadas
Estratégia para Desenvolvedor Único
Com um único desenvolvedor (cenário desta feature):
- Phase 1 + Phase 2: leitura e setup (~10 min)
- T004: criar
AboutPage.tsxcom todas as 6 seções (~30–45 min) - T005 + T006 em paralelo: editar
App.tsxeFooter.tsx(~5 min cada) - T007 + T008: validação dos CTAs (~10 min)
- T009–T011 (Polish): checklist e responsividade (~15 min)