Este repositório contém o meu portfólio pessoal, uma aplicação web moderna e responsiva desenvolvida para apresentar minha trajetória, habilidades técnicas, experiências e principais projetos.
O site foi construído com foco em organização, desempenho, responsividade e facilidade de manutenção, utilizando HTML, CSS e JavaScript puro, sem a necessidade de frameworks de front-end.
O portfólio está publicado na Vercel e pode ser acessado pelo link abaixo:
O portfólio possui funcionalidades voltadas à apresentação profissional e ao carregamento dinâmico de conteúdo.
Os projetos públicos são carregados automaticamente por meio da API REST do GitHub.
Para que um repositório seja exibido, ele precisa possuir:
- o tópico obrigatório
portfolio; - exatamente um tópico correspondente à categoria do projeto.
Os repositórios elegíveis são buscados, processados e inseridos automaticamente em suas respectivas seções.
O arquivo projetos.json continua sendo utilizado para projetos que:
- não estão disponíveis no GitHub;
- pertencem a repositórios compartilhados;
- possuem repositórios privados;
- estão hospedados em plataformas externas;
- precisam de título, descrição, imagem ou links personalizados.
Os projetos cadastrados no JSON têm prioridade sobre os projetos carregados automaticamente, evitando duplicações e permitindo personalizações.
Os projetos são organizados nas seguintes categorias:
- Acadêmico
- Análise de Dados
- Automação Web e RPA
- Banco de Dados
- Ciência de Dados
- Desenvolvimento Web
- Profissional
As categorias que não possuem projetos são ocultadas automaticamente.
Os projetos carregados pelo GitHub utilizam automaticamente o banner localizado no próprio repositório:
img/banner.png
Quando o banner não é encontrado, o portfólio utiliza uma imagem padrão correspondente à categoria.
A seção Sobre Mim possui um vídeo incorporado por meio de um iframe, permitindo uma apresentação mais dinâmica da minha trajetória, experiências e objetivos profissionais.
A interface se adapta a diferentes tamanhos de tela, oferecendo uma boa experiência de navegação em:
- computadores;
- notebooks;
- tablets;
- smartphones.
Em telas menores, a navegação é transformada em um menu hambúrguer animado e acessível, controlado por JavaScript.
O formulário de contato captura o nome e a mensagem do visitante e abre uma conversa no WhatsApp com o conteúdo preenchido automaticamente.
O portfólio utiliza recursos visuais como:
- efeito de glassmorphism;
- fundos com gradientes;
- sombras;
- bordas translúcidas;
- animações de entrada;
- efeitos de hover;
- transições suaves.
O projeto foi desenvolvido utilizando tecnologias web fundamentais.
Responsável pela estrutura semântica das páginas e organização das seções.
Principais recursos utilizados:
- elementos semânticos;
- atributos de acessibilidade;
- formulários;
- navegação por âncoras;
- incorporação de vídeo com
iframe.
Responsável por toda a identidade visual e responsividade.
Principais recursos utilizados:
- Flexbox;
- CSS Grid;
- variáveis CSS;
backdrop-filter;- animações com
@keyframes; - transições;
- pseudo-elementos;
- Media Queries;
- layout responsivo;
- efeito de glassmorphism.
Responsável pela interatividade e pelo carregamento dinâmico dos projetos.
Principais recursos utilizados:
- manipulação do DOM;
- Fetch API;
async/await;Promise.allSettled;- integração com a API REST do GitHub;
- leitura do arquivo
projetos.json; - filtragem por tópicos;
- categorização automática;
- remoção de projetos duplicados;
- tratamento de erros;
- carregamento e fallback de imagens;
- Event Listeners;
- controle do menu mobile;
- integração com WhatsApp.
Utilizado como fonte complementar de dados para projetos externos, privados ou compartilhados.
Para que um repositório próprio seja exibido automaticamente, ele precisa ser público e possuir o tópico:
portfolio
Também deve possuir exatamente um tópico de categoria:
academic
data-analysis
automation
database
data-science
web-development
profissional
Exemplo de tópicos para um projeto de desenvolvimento web:
portfolio
web-development
javascript
html
css
Exemplo para um projeto de Ciência de Dados:
portfolio
data-science
python
pandas
scikit-learn
O tópico opcional abaixo pode ser utilizado para priorizar o projeto:
destaque
Projetos com esse tópico são exibidos antes dos demais dentro da categoria.
Cada repositório exibido automaticamente deve possuir o banner no seguinte caminho:
nome-do-repositorio/
├── img/
│ └── banner.png
├── README.md
└── arquivos-do-projeto
O nome do arquivo deve ser exatamente:
banner.png
O GitHub diferencia letras maiúsculas e minúsculas. Portanto, nomes como Banner.png ou banner.PNG não serão reconhecidos pelo carregamento automático.
Projetos externos ou compartilhados podem ser cadastrados no arquivo projetos.json.
Exemplo:
{
"id": "projeto-compartilhado",
"categoria": "web-development",
"titulo": "Projeto Compartilhado",
"descricao": "Aplicação web desenvolvida em equipe.",
"linkRepositorio": "https://github.com/organizacao/projeto",
"linkAplicacao": "https://projeto.exemplo.com",
"arquivo": "./img/banners/projeto.png",
"repositorio": "organizacao/projeto",
"origem": "github-compartilhado",
"destaque": true
}Para projetos sem repositório:
{
"id": "projeto-privado",
"categoria": "profissional",
"titulo": "Automação Interna",
"descricao": "Automação desenvolvida para otimizar processos administrativos.",
"linkRepositorio": "",
"linkAplicacao": "",
"arquivo": "./img/banners/automacao-interna.png",
"repositorio": "",
"origem": "privado",
"destaque": false
}.
├── index.html
├── projetos.json
├── script.js
├── styles.css
├── README.md
│
├── css/
│ ├── animations.css
│ ├── components.css
│ ├── navigation.css
│ ├── responsive.css
│ └── sections.css
│
└── img/
├── banners/
└── icons/
-
index.htmlContém a estrutura principal do portfólio, incluindo navegação, apresentação, tecnologias, categorias de projetos, vídeo e formulário de contato. -
script.jsResponsável pela integração com a API do GitHub, leitura do JSON, categorização, criação dos cards, remoção de duplicações, carregamento de banners, menu mobile e integração com WhatsApp. -
projetos.jsonArmazena projetos complementares que não são carregados automaticamente pelo perfil do GitHub. -
styles.cssArquivo principal responsável por importar os módulos de estilização. -
css/navigation.cssEstilos da barra de navegação e do menu mobile. -
css/sections.cssEstilos das principais seções do portfólio. -
css/components.cssEstilos dos cards, formulários, imagens, links e componentes reutilizáveis. -
css/animations.cssAnimações, transições e efeitos visuais. -
css/responsive.cssMedia Queries e ajustes de responsividade.
Como o projeto utiliza fetch() para carregar o projetos.json, recomenda-se executá-lo por meio de um servidor local.
- Abra o projeto no Visual Studio Code.
- Instale a extensão Live Server.
- Clique com o botão direito no arquivo
index.html. - Selecione Open with Live Server.
Também é possível iniciar um servidor local com Python:
python -m http.server 8000Depois, acesse:
http://localhost:8000
Abrir diretamente o arquivo index.html pelo explorador de arquivos pode impedir o carregamento do JSON devido às políticas de segurança do navegador.
O portfólio está hospedado na Github Pages.
As atualizações enviadas para o repositório podem ser publicadas automaticamente conforme a configuração de integração entre GitHub e o Pages.
Para adicionar um novo projeto próprio ao portfólio:
- Crie ou atualize o repositório público no GitHub.
- Preencha a descrição do repositório.
- Adicione o tópico
portfolio. - Adicione exatamente um tópico de categoria.
- Adicione os tópicos técnicos relevantes.
- Crie o arquivo
img/banner.png. - Preencha o campo Website do GitHub quando houver uma aplicação publicada.
Para projetos externos, privados ou compartilhados, adicione um novo objeto ao arquivo projetos.json.
Sérgio Calazans
- GitHub: github.com/sergiocalazans
- LinkedIn: linkedin.com/in/sergiocalazans
- Portfólio: sergiocalazans.github.io/Portfolio/