Frontend — Visão Geral (Next.js)
O frontend público do Galgal é uma aplicação Next.js 16 (App Router) em apps/broker-web/. Serve o portal público multi-corretor, o dashboard de gestão e as páginas de autenticação.
Stack
| Tecnologia | Versão | Uso |
|---|---|---|
| Next.js | 16 | Framework (App Router, SSR/SSG) |
| React | 19 | UI |
| TypeScript | 5 | Tipagem |
| Tailwind CSS | 3 | Estilos utilitários |
| shadcn/ui + Base UI | — | Componentes UI primitivos |
| Playwright | — | Testes E2E |
| vitest | — | Testes unitários |
Comunicação com o backend
Toda comunicação com dados reais passa pela FastAPI (api.viacorretor.com.br). O cliente HTTP central é src/lib/api.ts:
// src/lib/api.ts
export async function fetchAPI<T>(endpoint: string, options?: RequestInit): Promise<T>
Configuração via variável de ambiente NEXT_PUBLIC_API_URL.
Autenticação é via JWT em cookie (galgal_token). O middleware Next.js (src/middleware.ts) protege as rotas do dashboard.
Layouts
app/layout.tsx # Root layout (fontes, metadata global)
app/(main)/layout.tsx # Layout público (Header + Footer comuns)
app/broker/[brokerSlug]/layout.tsx # Layout do corretor (BrokerHeader, brand color, WhatsApp button)
app/dashboard/layout.tsx # Layout protegido (requer JWT válido)
app/admin/layout.tsx # Layout admin
O layout do corretor injeta a brand_color do corretor como CSS custom property --brand, permitindo tematização por corretor sem rebuild.
Variáveis de ambiente
| Variável | Obrigatória | Descrição |
|---|---|---|
NEXT_PUBLIC_API_URL |
Sim | URL base da FastAPI (ex: https://api.viacorretor.com.br) |
NEXT_PUBLIC_ROOT_DOMAIN |
Sim | Domínio raiz para subdomain routing (ex: viacorretor.com.br) |
NEXT_PUBLIC_SITE_URL |
Sim | URL completa do site (ex: https://viacorretor.com.br) |
RESEND_API_KEY |
Opcional | Para envio de email na simulação de financiamento |
CONTACT_EMAIL |
Opcional | Email destino do formulário de contato/simulação |
Comandos
cd apps/broker-web
pnpm dev # Dev server :3000 com hot-reload
pnpm build # Build de produção
pnpm start # Inicia build de produção
pnpm lint # ESLint
pnpm test # vitest (unitários)
pnpm test:e2e # Playwright E2E