Projeto desenvolvido para a disciplina de Métodos de Desenvolvimento de Software (MDS) da Universidade de Brasília - Semestre 2025/2.
📚 Acesse a documentação completa aqui
O Portal de Professores é uma plataforma que centraliza e organiza as informações do corpo docente da UnB, solucionando a dificuldade de encontrar dados acadêmicos consolidados e facilitando a conexão na comunidade universitária. Este documento detalha a arquitetura do projeto, o fluxo de dados e as instruções para configuração e execução local, a fim de orientar novos contribuidores e usuários.
| Recurso | Link |
|---|---|
| 🚀 Aplicação Publicada | Acesse o site via GitHub Pages |
| 🎨 Template Figma | Visualizar no Figma |
| 🐞 Tracker de Issues | Ver Tarefas e Bugs |
- 👤 Perfis Unificados: Acesse currículos, Lattes, áreas de pesquisa e contato.
- 📚 Produção Acadêmica: Encontre publicações, artigos e projetos.
- 👨🏫 Histórico de Ensino: Consulte as disciplinas já ministradas.
- 🔍 Busca com Filtros Avançados: Encontre professores por nome, departamento ou área.
A arquitetura do projeto é desacoplada, dividida entre um frontend moderno e um backend Python que serve os dados através de uma API.
-
Frontend (Aplicação Estática): A interface do usuário é construída como uma aplicação estática (React, Vue, etc.). Ela não lê dados diretamente de arquivos, mas sim consome as rotas expostas pelo backend FastAPI, tornando a aplicação mais escalável e segura.
-
Backend (API com FastAPI): O núcleo do projeto é uma API desenvolvida em Python com o framework FastAPI. Ele é responsável por ler o arquivo
professores.json, processar os dados e expor endpoints (rotas) para o frontend consumir. -
Banco de Dados (Arquivo JSON): O arquivo
professores.json, localizado na pastadata/, continua atuando como a fonte de verdade (banco de dados). Ele é gerenciado e atualizado exclusivamente pelos scripts no backend. -
Mineração de Dados (GitHub Actions + Backend): A automação é feita via GitHub Actions. Um workflow agendado aciona os scripts de mineração localizados dentro do diretório
backend/. Esses scripts coletam os dados de fontes externas e atualizam o arquivoprofessores.json.
O projeto está organizado da seguinte forma para separar responsabilidades:
- .github/ # Automação de CI/CD (GitHub Actions)
- backend/ # Código-fonte do backend da aplicação
- data/ # Dados minerados e datasets (ex: professores.json)
- docs/ # Arquivos para a documentação (MkDocs)
- frontend/ # Código-fonte da interface do usuário (frontend)
- scripts/ # Scripts de mineração de dados (bots)
- venv/ # Ambiente virtual do Python (ignorado pelo Git)
.env.example# Exemplo de variáveis de ambiente necessárias.gitignore# Lista de arquivos e pastas ignorados pelo Git.readthedocs.yaml# Configuração para a plataforma Read the Docsdocker-compose.yml# Define os serviços para rodar com DockerLICENSE# Licença de uso do projetomkdocs.yml# Arquivo de configuração do MkDocspackage-lock.json# Lockfile de dependências do Node.jsREADME.md# Documentação principal do projetorequirements.txt# Lista de dependências do Python
| Categoria | Tecnologia | Descrição |
|---|---|---|
| Frontend | React |
Biblioteca/framework para a interface do usuário. |
| Frontend | Vite |
Ferramenta de build e servidor de desenvolvimento. |
| Backend | Python |
Linguagem principal para a API e scripts. |
| Backend | FastAPI |
Framework web para a criação da API. |
| Mineração de Dados | BeautifulSoup / Playwright |
Bibliotecas para extração de dados web. |
| Automação | GitHub Actions |
Orquestrador para execução automática dos scripts. |
Siga os passos abaixo para configurar e executar o projeto no seu ambiente de desenvolvimento.
Antes de começar, garanta que você tenha as seguintes ferramentas instaladas:
- Docker: Essencial para criar e gerenciar os contêineres da aplicação.
- Git: Necessário para clonar o repositório do projeto.
Abra seu terminal e execute os comandos abaixo para baixar o código-fonte e acessar a pasta do projeto:
git clone https://github.com/unb-mds/2025-2-Portal-dos-ProfessoresCom o Docker em execução, utilize o Docker Compose para construir as imagens e iniciar os serviços da aplicação:
# 1. Build das imagens (só é necessário na primeira vez ou após mudanças no Dockerfile)
docker-compose build
# 2. Inicia os serviços em background
docker-compose up Após os contêineres subirem, a aplicação estará disponível nos seguintes endereços:
Frontend: http://localhost:5173/2025-2-Portal-dos-Professores/
Backend (API): http://localhost:8000/docsA coleta de dados é automatizada e gerenciada pelo backend.
- O que acontece: Um workflow do GitHub Actions é configurado para rodar periodicamente. Ele aciona os scripts de mineração localizados dentro do diretório
backend/scripts/. Esses scripts navegam até as fontes públicas (Lattes, Scholar, etc.), extraem as informações e atualizam o arquivodata/professores.json.
- Se precisar forçar uma atualização dos dados localmente, você pode executar o script principal de mineração.
- Criar e Ativar o Ambiente Virtual Primeiro, crie um ambiente virtual Python para isolar as dependências do projeto:
# Criar o ambiente virtual
python -m venv venv
# Ativar o ambiente virtual (Linux/Mac)
source venv/bin/activate
# Ativar o ambiente virtual (Windows)
venv\Scripts\activate- Instalar as Dependências Com o ambiente virtual ativado, instale todas as dependências necessárias:
pip install -r requirements.txt- Executar o Script de Mineração Agora você pode executar o script principal de mineração:
python backend/scripts/scraper_runner.pyAgradecemos o seu interesse em contribuir com o Portal de Professores! Para garantir a qualidade e a organização do projeto, por favor, siga os passos abaixo:
- Faça um Fork deste repositório.
- Crie uma Branch para sua nova funcionalidade ou correção (
git checkout -b feature/sua-feature-incrivel). - Faça o Commit das suas alterações com uma mensagem clara (
git commit -m 'feat: Adiciona funcionalidade X'). - Faça o Push para a sua branch (
git push origin feature/sua-feature-incrivel). - Abra um Pull Request detalhando as mudanças que você fez.
| Foto | Nome | GitHub |
|---|---|---|
![]() |
Caio Lacerda | @caiolacerdamt |
![]() |
Ian Pedersoli | @ianpedersoli |
![]() |
Arthur Scartezini | @Ascartezin |
![]() |
Paulo Sérgio | @Paulosrsr |
![]() |
Kaio Amoury | @KaioAmouryUnB |
![]() |
Bruno Augusto | @brunodantas9 |
Este projeto está sob a licença MIT.





