Tecnologias e Dependências
Esta página documenta o ecossistema tecnológico, os gerenciadores de ambiente e as dependências principais que compõem o Open Journals Data e o seu website de documentação.
Ambiente e Gerenciamento
Section titled “Ambiente e Gerenciamento”| Tecnologia | Versão / Padrão | Finalidade no Projeto |
|---|---|---|
| Python | 3.12+ |
Linguagem principal do coletor e processamento de dados |
| uv | Atualizado | Gerenciador unificado de dependências, empacotamento e ambientes virtuais |
| Node.js | 22+ |
Ambiente de execução para compilação do website e documentação |
| npm | Integrado ao Node | Gerenciador de pacotes do ecossistema JavaScript do website |
Coleta e Raspagem de Dados
Section titled “Coleta e Raspagem de Dados”O processo de extração combina ferramentas para lidar com páginas estáticas e renderizadas dinamicamente via JavaScript:
Scrapy
Section titled “Scrapy”Framework principal de raspagem utilizado para orquestrar as requisições, gerenciar filas de URLs, aplicar pipelines de limpeza de metadados e estruturar os spiders de cada periódico.
Playwright (Python)
Section titled “Playwright (Python)”Biblioteca de automação de navegadores integrada ao Scrapy. É utilizada para acessar periódicos da plataforma SciELO e portais que exigem execução de JavaScript para renderização completa de metadados e botões de download de PDFs.
- Navegador utilizado: Chromium (
uv run playwright install chromium)
Armazenamento e Formatos
Section titled “Armazenamento e Formatos”TinyDB
Section titled “TinyDB”Banco de dados NoSQL orientado a documentos, leve e local-first.
- Armazenamento: Grava os registros em arquivos JSON estruturados no caminho
bd/<codigo_revista>/coleta_tinydb.json. - Isolamento: A pasta
bd/permanece fora do controle de versão (.gitignore), garantindo que grandes volumes de dados brutos não sobrecarreguem o repositório Git.
JSON Schema
Section titled “JSON Schema”Utilizado no arquivo config/journals.json para garantir que novas revistas adicionadas possuam obrigatoriamente os metadados requeridos (acronym, url, platform e subject).
Qualidade de Código e Testes
Section titled “Qualidade de Código e Testes”O projeto adota uma esteira rígida de testes e validações estáticas antes de cada commit e no fluxo de CI do GitHub Actions:
Pytest
Section titled “Pytest”Framework de testes automatizados para validação de parsers, rotinas de rede e tratamento de metadados.
- Marcação offline: Execução sem dependência de conexão externa via
pytest -m "not e2e".
Linter e formatador de código Python de alta performance, substituindo Flake8, Black e isort em uma única ferramenta integrada.
Verificador estático de tipagem para garantir a integridade dos tipos anotados na pasta src/.
Pre-commit
Section titled “Pre-commit”Gerenciador de ganchos Git que executa validações locais automáticas antes de confirmar qualquer commit:
- Validação de formatação com Ruff
- Verificação de tipos com Mypy
- Verificação do padrão de mensagens com Conventional Commits
Website e Documentação
Section titled “Website e Documentação”| Componente | Ferramenta | Papel |
|---|---|---|
| Framework Web | Astro | Gerador de sites estáticos de alta performance |
| Tema de Documentação | Starlight (@astrojs/starlight) |
Estruturação da documentação técnica, navegação e sumários |
| Motor de Busca Local | Pagefind | Indexação e busca textual em tempo real no website |
| Hospedagem e Deploy | Cloudflare Pages | Deploy contínuo automático a cada merge na branch main |