Pular para o conteúdo

2.1.0 — SSR, cache nativo e pacotes compartilhados

Data: 22/10/2026 · Todas as versões

Telas abrem com conteúdo

Rascunhos, pedidos, sacola, checkout, estúdio e painel chegam renderizados pelo servidor. Acabaram as telas intermediárias de “Carregando…” e “Verificando autenticação…”.

Acesso validado no servidor

Sessão expirada ou usuário sem papel de admin é barrado antes de qualquer HTML ser gerado, não só pela presença do cookie.

−23% de JavaScript

Os chunks do web caíram de 3,0 MB para 2,3 MB (o maior chunk, de 620 KB, deixou de existir).

Base para o editor 3D

Cliente HTTP, React Query, autenticação, Vitest e Playwright viraram pacotes compartilhados.

Melhoria Ganho
SSR primeiro (ADR-0014): páginas como Server Components que buscam os dados e hidratam o TanStack Query HTML útil na primeira resposta; uma ida à rede a menos por tela
Redirecionamentos de / e /home decididos no servidor Sem tela “Verificando autenticação…” ao abrir o site
Cache nativo do Next para conteúdo público (slide show do login, termos, catálogo, ajuda), invalidado quando o admin edita Login e catálogo sem chamada à API a cada visita
Carrossel do login reescrito (sem @material-tailwind/react) −620 KB de JavaScript; acessível (botões com rótulo, aria-roledescription, respeita “reduzir movimento”)
AuthProvider e contexts do estúdio só na área do cliente Login, catálogo e admin não carregam o código do estúdio
GlobalLoaderProvider deixou de re-renderizar a árvore a cada requisição Menos trabalho do React durante o polling de pedidos
Uma única versão do zod no monorepo Sem módulo duplicado no bundle
Melhoria Ganho
Layouts protegidos validam a sessão (requireUser) e o papel de admin (requireAdmin) no servidor Fecha o acesso às telas do painel com cookie de usuário comum
Usuário logado não é mais salvo no localStorage Menos dados pessoais persistidos no navegador
Removidos o antigo middleware de auth e o CookieValidator, que imprimiam cookies no console Atende parte de R-13
Better Auth em @moldape/auth: log warn em produção, OpenAPI só fora de produção, origens confiáveis por variável e sem duplicatas Atende parte de MF-20
axios, Jest/ts-jest (handlebars crítico), TanStack Router (seroval), Uploadcare e Material Tailwind fora do lockfile Atende parte de MF-17
Next 16.4 e React 19.3 (atualização feita antes desta entrega e incluída nesta versão) Sai da linha 14, deprecated e com avisos de segurança
  • Redefinição de senha: a página lia o token da URL de forma síncrona (no Next 15+ é uma Promise), então o token nunca chegava ao formulário.
  • Documentos: catálogo e termos usavam a mesma chave de cache e podiam trocar o conteúdo um do outro.
  • Sacola: “sacola inexistente” (404) era detectado pelo texto da mensagem; agora pelo status, e erros de sessão não criam sacola nova.
  • Estúdio: o redirecionamento automático para a plantigrafia acontecia durante a renderização; foi para um efeito.
  • Uploads: multipart/form-data fixo no header quebraria o boundary com fetch; o cliente agora deixa o navegador montar o header.
  • Formatação: pnpm format (vírgula final es5) e pnpm lint:fix (all) desfaziam um ao outro; padronizado em all.
  • order-lifecycle: usava zod sem declarar a dependência (vinha da raiz).
  • Novos pacotes: @moldape/api-client (fetch nativo, ApiError, fábrica do QueryClient), @moldape/auth, @moldape/vitest-config e @moldape/playwright-config. Ver Stack.
  • Serviços da API viraram fábricas (createDraftApi(http)…) usadas no navegador e no servidor; consultas definidas uma vez em lib/query/queries.ts.
  • Camada src/server/ (sessão, serviços com cookie, prefetch/hidratação, dados públicos, server actions) e páginas page.tsx + *-view.tsx.
  • Painel em admin/(panel)/ com um layout que exige admin.
  • proxy.ts roda só nas áreas protegidas (antes rodava em toda página pública).
  • useErrorToast reduzido de 170 para 50 linhas sobre o ApiError.
  • 58 arquivos sem uso removidos do web (hooks, componentes de teste, wizard antigo, utilitários e arquivos vazios), mais o workflow Azure/AKS, .lintstagedrc.json órfão e scripts de teste soltos na raiz.
  • Dependências removidas do web: 25 pacotes @radix-ui/* não importados, @material-tailwind/react, axios, @uploadcare/upload-client, clsx, tailwind-merge e toda a pilha do Jest. A raiz deixou de declarar dependências de runtime.
  • Versões compartilhadas no catálogo do pnpm (zod, React Query, Better Auth, Vitest, Playwright).
  • Só Vitest no monorepo (antes Jest no web/ui/logger e Vitest 1.6 na API); conclui o MF-25. Testes novos para o cliente HTTP, cookies e papéis, consultas e normalização de erros.
  • Playwright pronto para e2e no web, com login pela API e perfis cliente/admin. Ver Testes.
  • make setup: instala, cria os .env, gera o Prisma Client e builda. Ver Ambiente local.
Workspace Antes Agora
Plataforma (raiz) 1.1.0 2.1.0
web 0.0.0 2.1.0
@moldape/order-lifecycle-service 0.0.1 1.1.0
@moldape/docs 1.0.0 1.1.0
@moldape/ui 0.0.0 1.0.0
@moldape/logger 0.0.0 1.0.0
@moldape/swagger 1.0.0 1.1.0
@moldape/email 1.0.0 1.0.1
@moldape/prettier 0.0.0 1.0.0
@moldape/api-client, @moldape/auth, @moldape/vitest-config, @moldape/playwright-config — 1.0.0 (novos)
@moldape/jest-presets 0.0.0 removido
  • Defina ORDER_LIFECYCLE_INTERNAL_URL no web com o endereço interno da API na rede do Coolify, para o SSR não sair pela internet.
  • Opcional: BETTER_AUTH_TRUSTED_ORIGINS e BETTER_AUTH_LOG_LEVEL (Variáveis de ambiente).
  • Nenhuma migration de banco nesta versão.
Desenvolvido e documentado por
Nós Tecnologia · Desenvolvimento Criativo