Pular para conteúdo

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