Case study

Plataforma de Portfólio e CMS Pessoal

Plataforma de portfólio full-stack desenvolvida com Next.js, TypeScript, Prisma e MySQL, com CMS administrativo próprio para gerenciamento de projetos, carreira, tecnologias, mídia e currículo. A aplicação possui conteúdo bilíngue, analytics próprios com foco em privacidade, integração com OneDrive, autenticação administrativa, SEO e pipeline automatizada de qualidade e segurança.

jul. de 2026ago. de 2026
portfolio

Tecnologias

TypeScriptNext.jsReactshadcn/uiTailwind CSSMySQLPrismaGitHub ActionsOneDrive

O problema

Portfólios tradicionais normalmente dependem de conteúdo estático no código, exigindo alterações e novos deploys sempre que um projeto, experiência profissional ou informação precisa ser atualizada. Além disso, soluções externas de analytics e armazenamento adicionam dependências desnecessárias e oferecem pouco controle sobre privacidade, estrutura dos dados e experiência administrativa. O objetivo foi construir uma plataforma própria que permitisse administrar todo o conteúdo profissional através de um painel, acompanhar a interação dos visitantes e manter a aplicação com práticas semelhantes às utilizadas em sistemas de produção.

A solução

Foi desenvolvida uma aplicação full-stack utilizando Next.js e TypeScript, com um painel administrativo responsável pelo gerenciamento completo do conteúdo exibido publicamente. Projetos, experiências profissionais e tecnologias são armazenados em MySQL através do Prisma, incluindo conteúdo independente em português e inglês. O painel permite gerenciar projetos, status de publicação, destaque, tecnologias relacionadas, imagens, currículo e configurações gerais do site. Uma integração com uma API própria do OneDrive é utilizada como camada de armazenamento para imagens e documentos, enquanto o banco mantém os metadados necessários para disponibilização desses arquivos. Também foi implementado um sistema próprio de analytics para acompanhar visualizações, downloads de currículo e interações com projetos e links, priorizando coleta mínima de dados e privacidade dos visitantes.

Responsabilidades

Responsável pela concepção, arquitetura e desenvolvimento completo da plataforma, incluindo interface pública, CMS administrativo, modelagem do banco de dados, autenticação, internacionalização, gerenciamento de mídia e analytics. Também fui responsável pela integração com o serviço de armazenamento baseado em OneDrive, implementação dos mecanismos de segurança do painel administrativo, configuração de migrations e seeds, SEO, testes automatizados, pipeline de CI e processo de deploy.

Decisões técnicas

Next.js foi escolhido como framework full-stack para concentrar interface pública, painel administrativo e lógica server-side dentro da mesma aplicação. TypeScript foi utilizado em toda a base para melhorar segurança de tipos e manutenção do projeto. Prisma com MySQL/MariaDB foi adotado para persistência, utilizando relações específicas para projetos, traduções, tecnologias, experiências, mídia, sessões e eventos de analytics. O conteúdo internacionalizado foi modelado separadamente por locale, permitindo manter versões em português e inglês sem duplicar a entidade principal. O sistema administrativo utiliza sessões persistidas no banco, com armazenamento seguro do token de sessão e mecanismos adicionais de rate limiting para tentativas de autenticação. Em vez de utilizar diretamente um serviço tradicional de object storage, a aplicação integra uma API própria baseada em OneDrive para armazenamento de imagens e currículos. Analytics próprios foram implementados para manter controle sobre os dados coletados e limitar informações potencialmente identificáveis. A pipeline do GitHub Actions valida lint, TypeScript, testes, coverage, build e vulnerabilidades de dependências antes da integração das alterações.

Resultados

O projeto resultou em uma plataforma completa para gerenciamento e publicação do meu portfólio profissional sem necessidade de alterações manuais no código para atualizar o conteúdo. O CMS permite administrar projetos, carreira, tecnologias, mídia e configurações gerais, enquanto a internacionalização mantém toda a experiência disponível em português e inglês. A aplicação também fornece métricas próprias sobre comportamento dos visitantes, integra armazenamento externo de arquivos e utiliza um processo automatizado de qualidade antes do deploy. O resultado final transforma um portfólio tradicional em uma aplicação full-stack administrável e extensível, construída utilizando práticas próximas às adotadas em produtos reais.