Pular para o conteúdo
Projetos e Componentes

Portfolio CMS

Aplicação monolítica modular desenvolvida com Nuxt 4, GraphQL, Drizzle ORM e PostgreSQL, com autenticação baseada em sessão, sistema de comentários com moderação e painel administrativo completo para gestão do portfólio.

Publicado em: 08/2026 - Ativo

Este portfólio foi construído como um Modular Monolith (Monólito Modular). Toda a aplicação é executada em um único deploy, mas organizada em camadas bem definidas:

Nuxt → GraphQL → Resolvers → Services → Drizzle ORM → PostgreSQL

Os resolvers GraphQL apenas recebem e encaminham as requisições. As regras de negócio ficam concentradas na camada de serviços, mantendo o código mais organizado e fácil de entender.

Banco de dados
O acesso ao PostgreSQL é feito pelo Drizzle ORM, com migrations versionadas pelo Drizzle Kit.

Autenticação e autorização
A autenticação utiliza sessões HttpOnly, validadas no servidor. As permissões também são verificadas no backend, sem confiar somente nas roles enviadas pelo frontend. O sistema oferece login com Google OAuth, e as senhas são armazenadas como hashes gerados com scrypt, utilizando a implementação nativa do Node.js.

Moderação de comentários
Novos comentários são criados como PENDENTE e somente um usuário ADMIN pode alterá-los para VISÍVEL. Essa operação é feita por uma mutation GraphQL protegida, garantindo que os comentários sejam moderados antes da publicação.

Catálogo de tecnologias
As tecnologias dos projetos são gerenciadas por um catálogo estruturado com 96 tecnologias em 16 categorias. O sistema de ícones suporta tanto SVGs que utilizam currentColor, adaptáveis aos temas claro e escuro, quanto logos completos e multicoloridos.

Fontes e performance
As fontes são auto-hospedadas com @nuxt/fonts, evitando dependência de CDNs externas e garantindo maior consistência no carregamento.

Rate limiting
As tentativas de login possuem rate limiting em memória. Para o volume de tráfego esperado de um portfólio pessoal, não há necessidade de adicionar uma infraestrutura como Redis ou mais robusta.

Infraestrutura e deploy
A aplicação roda em um container Docker no Google Cloud Run, utiliza PostgreSQL no Cloud SQL e Firebase Hosting como camada de hospedagem.

O CI/CD utiliza GitHub Actions para executar lint, typecheck, testes e build a cada push, além do deploy automático da branch principal.

Qualidade do código
O projeto utiliza TypeScript em modo strict, ESLint e Vitest para testes unitários e de integração de serviços, autenticação e autorização. O Playwright também está disponível para testes end-to-end.

Resumindo, é uma aplicação simples, mas completa, que reúne diferentes conceitos e tecnologias sem adicionar complexidade além do necessário.

Stack Tecnológica

Vue.js Nuxt TypeScript GraphQL PostgreSQL Drizzle Tailwind CSS Docker JavaScript Node.js GitHub Actions Vite Vitest Google OAuth Monolito GitHub