
Plataforma e-commerce B2B completa para fabricante de plásticos injetáveis personalizados. Sistema de orçamentos, painel administrativo e storefront com arquitetura monorepo de 3 projetos independentes.
Storefront público com catálogo de 50+ produtos e sistema de orçamentos
Painel administrativo com CRUD completo, RBAC (4 roles) e dashboard
API REST com autenticação JWT dupla (cliente + admin), rate limiting e Swagger docs
Upload de imagens via Supabase Storage (S3) com organização por pastas
BFF pattern no storefront com cookies httpOnly para segurança
Sistema de carrinho de orçamentos via cookies com TTL de 7 dias
SEO otimizado com SSR, generateMetadata e generateStaticParams
Mock mode para desenvolvimento frontend independente da API
3 projetos independentes (Storefront Next.js 16, Admin Panel Next.js 15 + TS, API NestJS 10) comunicando via REST. Cada projeto roda em porta própria com deploys independentes. Padrão BFF no storefront para segurança de autenticação.
Fluxo completo de solicitação de orçamento substituindo carrinho tradicional. Cliente monta lista de produtos com cores e quantidades, solicita orçamento, e acompanha status pela área logada. Admin gerencia, precifica e responde pelo painel.
Autenticação com dois JWT secrets separados (cliente e admin), guards específicos por tipo de usuário, e sistema RBAC com 4 roles (admin, manager, seller, purchasing) controlando acesso tanto no middleware server-side quanto na sidebar client-side.
Factories genéricas como createCrudApi<T>() e hook useFetch<T>() no admin. Schema Drizzle com camelCase/snake_case automático. Mock mode no storefront para desenvolvimento desacoplado. Swagger auto-gerado para documentação da API.
Next.js 16 com App Router, RSC async pages e revalidate para cache ISR
Client Islands pattern: Server Components para SEO + Client Components para interatividade
BFF pattern com route handlers como proxy para API (cookies httpOnly)
React Hook Form + Zod para formulários com máscaras (CPF, CNPJ, CEP, telefone)
Carrinho via cookie JSON com chave única (product_id, color_product_id)
Mock mode automático quando API não está disponível
createCrudApi<T, TCreate, TUpdate>() factory para geração automática de endpoints CRUD
useFetch<T>(path) hook com suporte a skip condicional (path=null)
DataTable genérico com edição inline, exclusão e busca
RBAC em 3 camadas: middleware server-side, permissions.ts e sidebar filtering
Gestão de produtos com upload múltiplo de imagens, variantes e cores
Sistema de orçamentos com timeline de status e precificação
NestJS com módulos por domínio, DTOs com class-validator e Swagger auto-gerado
Drizzle ORM com PostgreSQL, migrations e schema type-safe
JWT duplo com guards separados (CustomerAuthGuard + AdminAuthGuard)
Soft delete padrão em entidades principais, hard delete em tabelas de junção N:N
Paginação padronizada com paginationMeta(total, page, perPage)
Upload S3 via Supabase Storage com organização por pastas (produtos, banners, etc.)
Rate limiting com ThrottlerGuard e proteção customizada em endpoints de auth
PostgreSQL como banco principal com schema relacional complexo (25+ entidades)
Supabase Storage (S3-compatible) para assets de imagens
Deploy independente de cada projeto com variáveis de ambiente separadas
Formatação unificada com Prettier (sem semi, single quotes, trailing comma none)