Skip to content

unb-mds/2025-2-Portal-dos-Professores

Repository files navigation

🏛️ Portal de Professores da UnB - Squad 04

Status License Coverage

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

📖 Sobre o Projeto

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.


✨ Acesso Rápido

Recurso Link
🚀 Aplicação Publicada Acesse o site via GitHub Pages
🎨 Template Figma Visualizar no Figma
🐞 Tracker de Issues Ver Tarefas e Bugs

🚀 Funcionalidades Principais

  • 👤 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.

🏛️ Arquitetura

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 pasta data/, 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 arquivo professores.json.


📂 Estrutura de Diretórios

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 Docs
  • docker-compose.yml # Define os serviços para rodar com Docker
  • LICENSE # Licença de uso do projeto
  • mkdocs.yml # Arquivo de configuração do MkDocs
  • package-lock.json # Lockfile de dependências do Node.js
  • README.md # Documentação principal do projeto
  • requirements.txt # Lista de dependências do Python

🛠️ Tecnologias Utilizadas

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.

🚀 Como Rodar Localmente

Siga os passos abaixo para configurar e executar o projeto no seu ambiente de desenvolvimento.

📋 Pré-requisitos

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.

📥 Clonando o Repositório

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

🐳 Subindo os Contêineres com Docker

Com 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 

🌐 Acessando a Aplicação

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

🤖 Mineração de Dados

A 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 arquivo data/professores.json.

Como Executar a Mineração Manualmente

  • Se precisar forçar uma atualização dos dados localmente, você pode executar o script principal de mineração.
  1. 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
  1. Instalar as Dependências Com o ambiente virtual ativado, instale todas as dependências necessárias:
pip install -r requirements.txt
  1. Executar o Script de Mineração Agora você pode executar o script principal de mineração:
python backend/scripts/scraper_runner.py

🤝 Como Contribuir

Agradecemos 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:

  1. Faça um Fork deste repositório.
  2. Crie uma Branch para sua nova funcionalidade ou correção (git checkout -b feature/sua-feature-incrivel).
  3. Faça o Commit das suas alterações com uma mensagem clara (git commit -m 'feat: Adiciona funcionalidade X').
  4. Faça o Push para a sua branch (git push origin feature/sua-feature-incrivel).
  5. Abra um Pull Request detalhando as mudanças que você fez.

👥 Equipe (Squad 04)

Foto Nome GitHub
Caio Lacerda Caio Lacerda @caiolacerdamt
Ian Pedersoli Ian Pedersoli @ianpedersoli
Arthur Scartezini Arthur Scartezini @Ascartezin
Paulo Sérgio Paulo Sérgio @Paulosrsr
Kaio Amoury Kaio Amoury @KaioAmouryUnB
Bruno Augusto Bruno Augusto @brunodantas9

📜 Licença

Este projeto está sob a licença MIT.