Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

ifpb/projects

Repository files navigation

Estudantes e Projetos do IFPB

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/

📋 Sumário

🚀 Tecnologias

  • 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

📝 Como Contribuir

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.

👤 Cadastro de Pessoas

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.

Exemplo: luiz-chaves-20051370420.yml

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

🏷️ Campos Obrigatórios

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ção
  • name.full - Nome completo
  • avatar.github - URL da imagem do GitHub (formato: https://github.com/username.png)
  • occupations[].id - Matrícula ou ID único
  • occupations[].type - Tipo: student, professor, collaborator
  • addresses.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)

📸 Avatar

A imagem de avatar deve ser do seu perfil do GitHub. Por exemplo:

  • Perfil: https://github.com/luizchaves
  • Avatar: https://github.com/luizchaves.png

🏫 Códigos de Cursos e Campus

  • 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)

📋 Campos Opcionais

Você pode adicionar outros endereços sociais e profissionais:

  • addresses.linkedin
  • addresses.instagram
  • addresses.homepage
  • addresses.lattes
  • addresses.researchgate
  • addresses.orcid
  • addresses.bluesky
  • addresses.twitter
  • addresses.email

👔 Múltiplas Ocupações

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

📦 Cadastro de Projetos

Para cadastrar um projeto, adicione um arquivo seguindo o formato titulo-do-projeto.yml no diretório src/content/projects/.

Exemplo: ifpb-projects.yml

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

🗂️ Tipos de Projetos

  1. 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" }
  2. Projeto de Pesquisa (research)

    • Requer: category.campus
    • Exemplo: category: { type: research, campus: "ifpb-jp" }
  3. Projeto de Extensão (extension)

    • Requer: category.campus
    • Exemplo: category: { type: extension, campus: "ifpb-jp" }
  4. Projeto Open Source (open source)

    • Requer: category.campus
    • Exemplo: category: { type: "open source", campus: "ifpb-jp" }

🔗 Endereços do Projeto

  • 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"]
  • addresses.preview (obrigatório) - Imagem de preview (500x262px recomendado)
  • addresses.homepage (opcional) - Site/demo do projeto
  • addresses.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:

📝 Campos com Múltiplos Valores

Alguns campos suportam múltiplos valores quando aplicável:

category.subject (Disciplinas)

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

addresses.repository (Repositórios)

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

🏷️ Tags

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

👥 Colaboradores

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/.

✨ Boas Práticas para um Projeto de Excelência

Para criar um projeto que se destaque e sirva de referência, siga estas orientações:

📖 README do Projeto

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).

🔄 Automação com GitHub Actions

Configure workflows automáticos para melhorar a qualidade do código:

.github/workflows/ci.yml - Integração Contínua

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 }}

Outros workflows recomendados:

  • Code Quality: ESLint, Prettier, TypeScript checking
  • Security: Dependabot, CodeQL analysis
  • Performance: Lighthouse CI, Bundle analyzer
  • Documentation: Auto-generate docs, deploy Storybook

📊 GitHub Projects (Kanban)

Organize o desenvolvimento com um quadro Kanban:

  1. Acesse GitHub Projects no seu repositório

  2. Crie um novo projeto com template "Team Planning"

  3. 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
  4. Crie issues detalhadas com:

    • Labels apropriadas (bug, feature, enhancement)
    • Assignees responsáveis
    • Milestones para organizar releases
    • Templates para padronizar reports

🎯 Outras Boas Práticas

Estrutura de Commits

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

Arquivos Essenciais

  • LICENSE - Licença do projeto (MIT, Apache, etc.)
  • .gitignore - Arquivos ignorados pelo Git
  • package.json - Dependências e scripts bem configurados
  • .env.example - Exemplo de variáveis de ambiente
  • CONTRIBUTING.md - Guia para contribuidores
  • CHANGELOG.md - Histórico de mudanças

Qualidade de Código

  • 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

Deploy e Monitoramento

  • 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

Documentação Adicional

  • Wiki: Documentação técnica detalhada
  • Storybook: Para componentes (se aplicável)
  • OpenAPI: Para APIs REST
  • Diagramas: Arquitetura, fluxos, banco de dados

🏆 Exemplos de Projetos Exemplares

Confira projetos do portal que seguem essas boas práticas:

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

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:

1. Fork e Clone

  1. Fork este repositório (ifpb/projectsseu-username/projects)

  2. Clone seu fork localmente:

    git clone https://github.com/seu-username/projects.git
    cd projects
  3. Configure o upstream para manter seu fork atualizado:

    git remote add upstream https://github.com/ifpb/projects.git

2. Atualize seu Fork (se já existir)

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

3. Adicione seus Arquivos

  • 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

4. Teste Localmente

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.

5. Commit e Push

# 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

6. Crie o Pull Request

  1. Acesse seu fork no GitHub
  2. Clique em "New Pull Request"
  3. Preencha título e descrição explicando as mudanças
  4. Envie o PR e aguarde a revisão

📝 Convenções de Commit

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 quebrados
  • fix: Ajustando validação de esquema

Funcionalidades:

  • feat: Adicionando novo componente [nome]
  • feat: Implementando busca avançada
  • feat: Adicionando filtro por [critério]

Melhorias:

  • refactor: Otimizando performance da página
  • refactor: Melhorando acessibilidade
  • refactor: Aprimorando UX do componente

Configuração:

  • config: Atualizando dependências
  • config: Configurando novo build script
  • config: 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ágina
  • style: Melhorando responsividade
  • style: Padronizando componentes

🛠️ Desenvolvimento

Comandos Disponíveis

# 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

Estrutura do Projeto

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

📊 Dados Atuais

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

📄 Licença

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! 🚀

About

Acervo de projetos do IFPB

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 227

AltStyle によって変換されたページ (->オリジナル) /