Este repositório é um portal que exibe estudantes, professores e colaboradores do IFPB juntamente com seus projetos acadêmicos e de pesquisa. O objetivo é criar um catálogo colaborativo dos trabalhos desenvolvidos na instituição.
🌟 Portal disponível em: https://ifpb.github.io/projects/
- 🚀 Tecnologias
- 📝 Como Contribuir
- 👤 Cadastro de Pessoas
- 📦 Cadastro de Projetos
- ✨ Boas Práticas para um Projeto de Excelência
- 🤝 Contribuições
- 🛠️ Desenvolvimento
- 📊 Dados Atuais
- 📄 Licença
- Astro.js v4.15.4 - Framework web moderno para sites rápidos
- React v18.2.0 - Componentes interativos
- Tailwind CSS v3.3.1 - Framework CSS utilitário
- Pagefind v1.1.1 - Busca estática rápida
- TypeScript - Tipagem estática
- Zod - Validação de esquemas
- YAML - Formato de dados estruturados
Você pode contribuir adicionando seus dados pessoais, projetos ou atualizando informações existentes através de Pull Requests (PRs). Este documento orienta como fazer o cadastro de pessoas e projetos.
Para se cadastrar, adicione um arquivo seguindo o formato nome-sobrenome-id.yml no diretório src/content/people/. O nome do arquivo deve usar apenas letras minúsculas, hífens e sua matrícula/ID.
name: compact: Luiz Chaves full: Luiz Carlos Rodrigues Chaves avatar: github: https://github.com/luizchaves.png occupations: - id: 20051370420 type: student course: cstsi-jp # curso-campus (formato unificado) isFinished: true # true se já concluiu, false se ainda está cursando addresses: github: https://github.com/luizchaves linkedin: https://www.linkedin.com/in/luizcarloschaves/ instagram: https://www.instagram.com/luizcrchaves/ bluesky: https://bsky.app/profile/luizcarloschaves.bsky.social homepage: https://luizchaves.github.io email: luiz.chaves@ifpb.edu.br
Segundo o esquema de validação definido com Zod, os seguintes campos são obrigatórios:
Para todos os tipos:
name.compact- Nome resumido para exibiçãoname.full- Nome completoavatar.github- URL da imagem do GitHub (formato:https://github.com/username.png)occupations[].id- Matrícula ou ID únicooccupations[].type- Tipo:student,professor,collaboratoraddresses.github- Perfil no GitHub
Para estudantes:
occupations[].course- Código do curso + campus (ex:cstsi-jp,csbes-jp)
Para professores e colaboradores:
occupations[].campus- Campus de atuação (ex:ifpb-jp)
A imagem de avatar deve ser do seu perfil do GitHub. Por exemplo:
- Perfil:
https://github.com/luizchaves - Avatar:
https://github.com/luizchaves.png
- Cursos:
cstsi(TSI),cstrc(Redes),csbes(Engenharia de Software), etc. - Campus:
jp(João Pessoa),cz(Cabedelo),cg(Campina Grande), etc. - Formato curso:
{codigo-curso}-{campus}(ex:cstsi-jp)
Você pode adicionar outros endereços sociais e profissionais:
addresses.linkedinaddresses.instagramaddresses.homepageaddresses.lattesaddresses.researchgateaddresses.orcidaddresses.blueskyaddresses.twitteraddresses.email
Pessoas podem ter múltiplas ocupações (ex: estudante e professor, múltiplos cursos):
# Estudante de múltiplos cursos occupations: - id: 20051370420 type: student course: cstsi-jp isFinished: true - id: 20221370025 type: student course: csbes-jp isFinished: false # Estudante que virou professor occupations: - id: 20051370420 type: student course: cstsi-jp isFinished: true - id: 2680962 type: professor campus: ifpb-jp # Apenas professor occupations: - id: 2680962 type: professor campus: ifpb-jp
Para cadastrar um projeto, adicione um arquivo seguindo o formato titulo-do-projeto.yml no diretório src/content/projects/.
name: IFPB Projects description: Este portal tem como objetivo listar projetos construídos pelos estudantes, professores e colaboradores do IFPB. addresses: preview: https://github.com/ifpb/projects/blob/main/preview.png?raw=true homepage: https://ifpb.github.io/projects/ repository: https://github.com/ifpb/projects design: https://www.figma.com/design/example # figma, canva, etc. category: type: subject # ou 'subject', 'research', 'extension', 'open source' subject: pw2-csbes-jp period: 2025.1 # necessário para projetos de disciplina tags: - javascript - astro.js - typescript owners: - 20051370420 # matrícula/ID dos colaboradores - 2680962
-
Projeto de Disciplina (
subject)- Requer:
category.subject,category.period - Disciplina única:
category: { type: subject, subject: "dw-cstrc-jp", period: "2024.1" } - Múltiplas disciplinas:
category: { type: subject, subject: ["dw-cstrc-jp", "pw2-cstrc-jp"], period: "2024.1" }
- Requer:
-
Projeto de Pesquisa (
research)- Requer:
category.campus - Exemplo:
category: { type: research, campus: "ifpb-jp" }
- Requer:
-
Projeto de Extensão (
extension)- Requer:
category.campus - Exemplo:
category: { type: extension, campus: "ifpb-jp" }
- Requer:
-
Projeto Open Source (
open source)- Requer:
category.campus - Exemplo:
category: { type: "open source", campus: "ifpb-jp" }
- Requer:
addresses.repository(obrigatório) - Repositório(s) no GitHub- Pode ser um único repositório:
repository: "https://github.com/user/repo" - Ou múltiplos repositórios:
repository: ["https://github.com/user/frontend", "https://github.com/user/backend"]
- Pode ser um único repositório:
addresses.preview(obrigatório) - Imagem de preview (500x262px recomendado)addresses.homepage(opcional) - Site/demo do projetoaddresses.design(opcional) - Link do design/protótipo (Figma, etc.)addresses.workflow(opcional) - Link público para documentação do processo de desenvolvimento, metodologia ou fluxo de trabalho (ex: documentos sobre metodologia ágil, processo de desenvolvimento, pipeline CI/CD, etc.)
Exemplos de projetos com design e workflow:
- Projetos com design - Veja exemplos de projetos que incluem links para protótipos e designs
- Projetos com workflow - Veja exemplos de projetos que documentam seus processos de desenvolvimento
Alguns campos suportam múltiplos valores quando aplicável:
Para projetos que envolvem múltiplas disciplinas:
# Disciplina única category: type: subject subject: pw2-csbes-jp period: 2025.1 # Múltiplas disciplinas category: type: subject subject: - pw2-csbes-jp # Programação Web 2 - dw-csbes-jp # Desenvolvimento Web period: 2025.1
Para projetos com múltiplos repositórios (frontend/backend, monorepos, etc.):
# Repositório único addresses: repository: https://github.com/user/meu-projeto # Múltiplos repositórios addresses: repository: - https://github.com/user/frontend - https://github.com/user/backend - https://github.com/user/mobile
Use tags descritivas das tecnologias, frameworks e conceitos utilizados:
- Linguagens:
javascript,python,java,kotlin - Frameworks:
react,vue.js,spring boot,flutter - Ferramentas:
docker,git,figma - Conceitos:
machine learning,mobile,web,api - Tipos de projeto:
e-commerce,blog,portfolio,chatbot
No campo owners, liste as matrículas/IDs de todos os colaboradores do projeto. Certifique-se de que cada pessoa esteja cadastrada no diretório src/content/people/.
Para criar um projeto que se destaque e sirva de referência, siga estas orientações:
Todo projeto deve ter um README.md bem estruturado com:
# Nome do Projeto ## 📋 Descrição Descreva claramente o que o projeto faz, seus objetivos e contexto acadêmico. ## ✨ Funcionalidades - Lista das principais funcionalidades - Features implementadas - Diferenciais do projeto ## 🛠️ Tecnologias Utilizadas - Frontend: React, Vue.js, Vanilla JS... - Backend: Node.js, Spring Boot, Django... - Database: PostgreSQL, MySQL, MongoDB... - Deploy: Vercel, Netlify, Heroku... ## 🚀 Como Executar ### Pré-requisitos - Node.js 18+ - NPM ou Yarn - Outras dependências específicas ### Instalação 1. Clone o repositório git clone https://github.com/usuario/projeto.git 2. Instale as dependências npm install 3. Configure as variáveis de ambiente cp .env.example .env 4. Execute o projeto npm run dev ## 📱 Demo - [🌐 Site Online](https://seu-projeto.vercel.app) - [🎨 Design no Figma](https://figma.com/design/...) - [📊 Apresentação](https://slides.com/...) ## 🧪 Testes Instrua como executar os testes: npm test npm run test:e2e ## 📂 Estrutura do Projeto src/ ├── components/ # Componentes reutilizáveis ├── pages/ # Páginas da aplicação ├── services/ # Integração com APIs ├── utils/ # Funções utilitárias └── styles/ # Estilos globais ## 👥 Autores - **Seu Nome** - Desenvolvimento Full Stack - [@seuuser](https://github.com/seuuser) - **Colega** - Frontend - [@colega](https://github.com/colega) ## 📄 Licença Este projeto está sob licença [MIT](LICENSE).
Configure workflows automáticos para melhorar a qualidade do código:
name: CI/CD Pipeline on: push: branches: [main, develop] pull_request: branches: [main] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: '18' cache: 'npm' - run: npm ci - run: npm run lint - run: npm test - run: npm run build deploy: needs: test runs-on: ubuntu-latest if: github.ref == 'refs/heads/main' steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: '18' - run: npm ci - run: npm run build - name: Deploy to Vercel uses: amondnet/vercel-action@v25 with: vercel-token: ${{ secrets.VERCEL_TOKEN }} vercel-project-id: ${{ secrets.VERCEL_PROJECT_ID }} vercel-org-id: ${{ secrets.VERCEL_ORG_ID }}
- Code Quality: ESLint, Prettier, TypeScript checking
- Security: Dependabot, CodeQL analysis
- Performance: Lighthouse CI, Bundle analyzer
- Documentation: Auto-generate docs, deploy Storybook
Organize o desenvolvimento com um quadro Kanban:
-
Acesse GitHub Projects no seu repositório
-
Crie um novo projeto com template "Team Planning"
-
Configure colunas:
- 📋 Backlog - Ideias e funcionalidades futuras
- 🔄 To Do - Tarefas prontas para desenvolvimento
- 👷 In Progress - Em desenvolvimento
- 👀 In Review - Aguardando revisão
- ✅ Done - Concluído
- 🚀 Released - Em produção
-
Crie issues detalhadas com:
- Labels apropriadas (bug, feature, enhancement)
- Assignees responsáveis
- Milestones para organizar releases
- Templates para padronizar reports
Use Conventional Commits para histórico organizado:
- feat: adicionar autenticação com Google
- fix: corrigir erro de validação no formulário
- docs: atualizar documentação da API
- style: ajustar responsividade do header
- refactor: otimizar queries do banco de dados
- test: adicionar testes para componente Login
LICENSE- Licença do projeto (MIT, Apache, etc.).gitignore- Arquivos ignorados pelo Gitpackage.json- Dependências e scripts bem configurados.env.example- Exemplo de variáveis de ambienteCONTRIBUTING.md- Guia para contribuidoresCHANGELOG.md- Histórico de mudanças
- Linting: ESLint, Prettier para código limpo
- Testes: Jest, Vitest, Cypress para qualidade
- Types: TypeScript para tipagem estática
- Performance: Otimização de imagens, lazy loading
- Acessibilidade: Semantic HTML, ARIA labels
- Hosting: Vercel, Netlify, GitHub Pages
- Domain: Domínio personalizado quando possível
- Analytics: Google Analytics, Plausible
- Monitoring: Sentry para error tracking
- Performance: PageSpeed Insights, Core Web Vitals
- Wiki: Documentação técnica detalhada
- Storybook: Para componentes (se aplicável)
- OpenAPI: Para APIs REST
- Diagramas: Arquitetura, fluxos, banco de dados
Confira projetos do portal que seguem essas boas práticas:
- Projetos de disciplina
- Projetos de pesquisa
- Projetos de extensão
- Projetos com homepage
- Projetos open source
Um projeto bem estruturado não apenas demonstra conhecimento técnico, mas também profissionalismo e atenção aos detalhes que são muito valorizados no mercado de trabalho!
Contribuições são muito bem-vindas! Você pode:
- ✅ Adicionar seus dados pessoais e projetos
- ✅ Corrigir informações incorretas
- ✅ Melhorar a documentação
- ✅ Reportar bugs ou sugerir melhorias
- ✅ Contribuir com código (componentes, features, etc.)
Todas as contribuições para este projeto são realizadas através de Pull Requests (PRs). Este processo garante qualidade, permite revisão colaborativa e mantém o histórico organizado. Siga o passo a passo abaixo para contribuir de forma efetiva:
-
Fork este repositório (
ifpb/projects→seu-username/projects) -
Clone seu fork localmente:
git clone https://github.com/seu-username/projects.git cd projects -
Configure o upstream para manter seu fork atualizado:
git remote add upstream https://github.com/ifpb/projects.git
Antes de fazer mudanças, sempre sincronize com o repositório original:
git fetch upstream git checkout main git merge upstream/main git push origin main
- Adicione seu arquivo de pessoa em
src/content/people/ - Adicione seus projetos em
src/content/projects/ - Siga os exemplos e formatos descritos nas seções anteriores
Antes de enviar o PR, teste suas mudanças localmente:
# Instale as dependências npm install # Construa o projeto (verifica se não há erros) npm run build # Visualize o resultado npm run preview
Se não houver erros, abra o navegador no endereço sugerido pelo terminal para ver como ficaram seus dados.
# Adicione os arquivos git add . # Faça o commit com uma mensagem descritiva git commit -m "content: Adicionando [Seu Nome] e projeto [Nome do Projeto]" # Envie para seu fork git push origin main
- Acesse seu fork no GitHub
- Clique em "New Pull Request"
- Preencha título e descrição explicando as mudanças
- Envie o PR e aguarde a revisão
Use prefixos descritivos nas mensagens de commit:
Conteúdo:
content: Adicionando pessoa [Nome]content: Adicionando projeto [Nome do Projeto]content: Atualizando informações de [Nome]content: Removendo pessoa/projeto [Nome]
Correções:
fix: Corrigindo erro em [arquivo]fix: Corrigindo links quebradosfix: Ajustando validação de esquema
Funcionalidades:
feat: Adicionando novo componente [nome]feat: Implementando busca avançadafeat: Adicionando filtro por [critério]
Melhorias:
refactor: Otimizando performance da páginarefactor: Melhorando acessibilidaderefactor: Aprimorando UX do componente
Configuração:
config: Atualizando dependênciasconfig: Configurando novo build scriptconfig: Ajustando configurações do Astro
Documentação:
docs: Atualizando README com [informação]docs: Adicionando guia de [tópico]docs: Corrigindo documentação de [seção]
Estilos:
style: Ajustando layout da páginastyle: Melhorando responsividadestyle: Padronizando componentes
# Desenvolvimento com hot-reload npm run dev # Build para produção npm run build # Preview da build npm run preview # Build + Preview npm run buildpreview # Build + Pagefind + Preview (com busca) npm run buildpreviewpf # Carregar avatars do GitHub npm run load:github:avatar
src/
├── content/ # Dados em YAML
│ ├── people/ # Pessoas (estudantes, professores)
│ ├── projects/ # Projetos
│ ├── courses/ # Cursos do IFPB
│ ├── subjects/ # Disciplinas
│ └── config.ts # Esquemas de validação
├── components/ # Componentes React/Astro
├── helpers/ # Funções utilitárias
├── layouts/ # Layouts das páginas
├── pages/ # Rotas do site
└── styles/ # Estilos globais
O portal atualmente indexa:
- Pessoas (estudantes, professores, colaboradores)
- Projetos de diferentes categorias
- Busca rápida com Pagefind
- Filtros avançados por curso, campus, tecnologia
- Geração estática para performance máxima
Este projeto é open source. Veja o arquivo de licença para mais detalhes.
💡 Gostou da ideia? Compartilhe com seus colegas e professores! Vamos construir juntos o maior catálogo de projetos do IFPB! 🚀