Portfólio pessoal de Felipe Bruno, Tech Lead & Software Engineer.
O projeto apresenta produtos, plataformas, integrações, trabalhos Open Source e experimentos técnicos desenvolvidos em diferentes momentos da minha trajetória.
Site: felipecoder.com
Projeto produtos, integrações e plataformas que conectam tecnologia a operações reais de negócio.
O portfólio reúne trabalhos relacionados a:
- SaaS e plataformas multi-tenant;
- sistemas comerciais e operacionais;
- integrações com APIs e ERPs;
- sistemas em tempo real;
- e-commerce;
- automação fiscal e contábil;
- ferramentas e SDKs Open Source;
- game systems e FiveM;
- infraestrutura e experiência de desenvolvimento.
Alguns projetos profissionais são apresentados de forma resumida ou anonimizada por confidencialidade.
O portfólio foi construído com:
- Next.js 16;
- React 19;
- TypeScript;
- Tailwind CSS 4;
- React Compiler;
- App Router;
- React Server Components;
- geração estática com
generateStaticParams.
Não existe CMS, banco de dados, autenticação ou API para gerenciamento do conteúdo. Os projetos são versionados diretamente no repositório.
- Interface responsiva e dark-first;
- páginas de projetos geradas estaticamente;
- conteúdo local e tipado;
- metadata específica por projeto;
- Open Graph e Twitter Cards;
- dados estruturados com Schema.org;
- sitemap e robots.txt;
- manifesto web e favicon próprio;
- HTML semântico e recursos de acessibilidade;
- imagem Docker standalone;
- deploy por Docker Compose e Traefik.
Para executar localmente:
- Node.js 22 ou superior;
- pnpm 11.10 ou versão compatível;
- Corepack habilitado.
Para executar com containers:
- Docker;
- Docker Compose.
Clone o repositório:
git clone https://github.com/felipecoder/portfolio.git
cd portfolioO comando pressupõe que o repositório esteja publicado como
felipecoder/portfolio.
Habilite o Corepack e instale as dependências:
corepack enable
pnpm installInicie o servidor de desenvolvimento:
pnpm devAcesse http://localhost:3000.
Execute o lint:
pnpm lintCrie o build de produção:
pnpm buildExecute o build localmente:
pnpm startO projeto utiliza o modo standalone do Next.js e uma imagem Docker multi-stage. O container final executa apenas os arquivos necessários para produção, com um usuário sem privilégios.
Para compilar e iniciar:
docker compose up -d --buildPara acompanhar os logs:
docker compose logs -f portfolioPara encerrar:
docker compose downO arquivo compose.yaml publica a aplicação diretamente em felipecoder.com, sem subdomínio e sem expor a porta do container no host.
A configuração pressupõe que o servidor já possua:
- uma rede Docker externa chamada
proxy; - um entrypoint Traefik chamado
websecure; - um certificate resolver chamado
letsencrypt; - o DNS de
felipecoder.comapontando para o servidor.
Caso a rede ainda não exista:
docker network create proxyO healthcheck consulta a página inicial em http://127.0.0.1:3000/ dentro do container.
app/ Rotas, layouts, metadata e arquivos especiais do Next.js
components/ Componentes visuais compartilhados
content/ Projetos, arquivo e experimentos
lib/ Configurações e utilitários compartilhados
public/ Imagens e outros assets estáticos
Arquivos relacionados ao deploy:
Dockerfile Build multi-stage da aplicação
compose.yaml Serviço e labels do Traefik
.dockerignore Arquivos excluídos do contexto Docker
O conteúdo é mantido diretamente em TypeScript:
content/projects.ts: projetos em destaque, Open Source e arquivo;content/lab.ts: experimentos e trabalhos de laboratório;lib/constants.ts: domínio, contatos e links sociais.
Ao cadastrar um projeto com página individual, a rota, metadata e entrada no sitemap são geradas a partir da estrutura tipada.
Links externos só são exibidos quando uma URL real está cadastrada.
O portfólio apresenta SDKs, ferramentas e experimentos Open Source desenvolvidos durante diferentes fases da minha trajetória.
Outros projetos podem ser encontrados em github.com/felipecoder.
Felipe Bruno
Tech Lead & Software Engineer
Este é um projeto de portfólio pessoal. O código está disponível publicamente para consulta, mas nenhum direito de uso, cópia, modificação ou redistribuição é concedido sem autorização expressa do autor.
Caso o projeto passe a aceitar reutilização por terceiros, uma licença Open Source deverá ser adicionada explicitamente.