- Python 3.12
- uv (https://docs.astral.sh/uv/getting-started/installation/)
- Docker + Docker Compose (para ambiente completo com API, DB, Redis e MinIO)
git clone git@github.com:G2BC/BEM-api.git
cd BEM-apiuv sync --devsource .venv/bin/activate # Linux/macOS
.venv\Scripts\activate # Windowscp .env.example .envEm produção, as variáveis são gerenciadas pelo dashboard do Dotenv Vault. O servidor
não usa .env; o deploy via GitHub Actions usa o .env.vault versionado no repositório
e a secret DOTENV_KEY cadastrada em Settings > Secrets and variables > Actions.
uv run flask db upgradeuv run flask run --host=0.0.0.0 --port=4000Para subir ambiente completo com restore de banco e bootstrap de MinIO, siga:
- Siga primeiro o setup de Docker em docker/dev/README.md (incluindo
app-policy.jsonebackup.dump). - Abra o projeto no editor e execute:
Dev Containers: Reopen in Container. - Na primeira criação do container, o comando
uv sync --devroda automaticamente.
uv run flask db migrate -m "mensagem"uv run flask db upgrade| Sync | Script | Frequência (UTC) |
|---|---|---|
| BOLD | sync_bold.py |
Toda sexta-feira às 03:00AM |
| iNaturalist | sync_inaturalist.py |
Todo sábado às 03:00AM |
| iNaturalist Photos | import_inaturalist_photos.py |
Toda segunda-feira às 03:00AM |
| speciesLink | sync_specieslink.py |
Todo domingo às 03:00AM |
| Mushroom Observer | sync_mushroom_observer.py |
Toda quinta-feira às 03:00AM |
| IUCN Red List | sync_iucn_red_list.py |
Dia 1 de cada mês às 04:00AM |
| MycoBank | sync_mycobank.py |
Dia 2 de cada mês às 04:00AM |
Os syncs podem ser executados localmente com uv run python scripts/<script>.py.
Quando quiser limitar a execução a espécies específicas, use BEM_ID com os IDs internos da
tabela species ou BEM com os códigos BEM.
Exemplos:
BEM_ID=1 uv run python scripts/sync_mycobank.py
BEM=BEM1 uv run python scripts/sync_mycobank.pyPara a IUCN Red List, informe também a chave da API:
IUCN_API_KEY="sua-chave" BEM_ID=1 uv run python scripts/sync_iucn_red_list.py
IUCN_API_KEY="sua-chave" BEM=BEM1 uv run python scripts/sync_iucn_red_list.pySe a IUCN retornar HTML com Just a moment..., a requisição local foi bloqueada pelo
Cloudflare. Nesse caso, o código pode estar correto mesmo com HTTP 403; teste em outra rede
ou rode o workflow no runner self-hosted.
deactivatePara garantir a consistência e a qualidade do código neste projeto, antes de mesclar uma PR, certifique-se de que seu código passou na ferramenta de lint e formatação (ruff) durante a execução da action de CI.
Rode uv run ruff check . e uv run ruff format . antes de commitar.
Distribuído sob a Licença MIT. Veja LICENSE para mais informações.