Site institucional da E-Soluções (SST, clínica ocupacional e departamento pessoal — Recife/PE). Frontend 100% estático em Next.js; sem backend próprio nesta fase.
- Next.js 16 (App Router, tudo SSG) + React 19 + TypeScript strict
- Tailwind CSS 4 (tokens em
@themenosrc/app/globals.css— sem tailwind.config) + shadcn/ui (Radix) - Velite — blog em MDX com frontmatter validado por Zod (
velite.config.ts) - motion (Framer Motion) — só via
src/components/motion/{reveal,stagger}.tsx - Vitest — motor CIPA, catálogo, regressão de contraste WCAG dos tokens
npm install
npm run dev # velite dev + next dev
npm run build # velite + next build (todas as rotas estáticas)
npm run test # vitest
npm run lint- Conteúdo dos serviços: dados tipados em
src/data/services/*.tsrenderizados por um template único (src/components/sections/services/service-page.tsx). - Catálogo de treinamentos:
src/lib/trainings/— interfaceTrainingProvider; hoje um JSON local validado por Zod. Quando a API do Host existir, crieHostTrainingProvidere troque 1 linha emsrc/lib/trainings/index.ts. - Blog:
src/content/blog/*.mdx(3 publicados + 9 stubsdraft: true, fora de listagem/sitemap em produção). Componentes MDX: TldrBox, Checklist, PullQuote. - Diagnóstico CIPA: motor puro em
src/lib/cipa/engine.ts; dimensionamento transcrito do Quadro I da NR-5 vigente (fontes e ressalvas emsrc/lib/cipa/cipa-data.ts). - Contato: quiz de 3 perguntas pré-preenche o formulário (RHF + Zod + server action). E-mail via interface
EmailProvider— stub de console até plugar Resend (src/lib/email/index.ts). - Analytics: GA4 só com consentimento (banner LGPD); eventos tipados em
src/lib/analytics.ts. ConfigureNEXT_PUBLIC_GA_ID(ver.env.example). - SEO: metadata API + JSON-LD (Organization, LocalBusiness, Article, Course, Breadcrumb) em
src/lib/seo/schema.ts;sitemap.ts/robots.tsnativos; OG images do blog geradas no build. - Assets: fotos reais ainda não existem — slots documentados em ASSETS.md (troca 1:1 sem CLS).
- Lighthouse desktop 100/100/100/100 em home, serviço, treinamentos, blog post e sobre (CLS 0, LCP ≤ 0,7s local)
- 0 violações no accesslint (WCAG 2.2) nas 10 rotas
- Contraste dos tokens coberto por teste de regressão (
src/lib/design/tokens.contrast.test.ts)
Dados de contato/endereço reais (src/lib/site-config.ts), números de prova social, cases de cliente, revisão jurídica das páginas legais, bios/fotos, mapeamento setor→grau de risco do diagnóstico CIPA, GA4 property e domínio definitivo.
Projeto pronto para Vercel sem configuração especial (build = npm run build). Antes: definir env vars (NEXT_PUBLIC_GA_ID, futuramente RESEND_API_KEY + npm install resend), atualizar siteConfig.url para o domínio final.