Contribute
Datafeeder is a monorepo: a FastAPI backend, an Angular frontend, Airflow ELT DAGs, and shared Python libraries,
managed together with uv (Python workspace) and npm/nx (frontend).
See also the Architecture page for how the pieces fit together.
Setting up a dev environment
See the prerequisites and quick-start pages. In short:
make install-python # installs Python deps via uv, writes AIRFLOW_UID into .env
make up # backend deps + docker compose (georchestra, airflow, geoserver, geonetwork)
make run-backend # backend, with auto-reload
cd apps/frontend && npm install && npm start
make help lists every available target.
Running the tests
make test-libs # libs/data_manipulation, pytest
make test-backend # apps/backend, pytest
make test-backend-coverage # apps/backend, pytest with html/term coverage report
Frontend tests (from apps/frontend/):
npm run test:ut # unit tests (Vitest)
npm run test:e2e # end-to-end tests (Cypress)
npm run test:e2e:ci # headless mode, used by CI
Linting and formatting
make fix-and-check-all-python # ruff lint --fix, format, then check --verbose
Frontend formatting/linting is run via npm run format (see apps/frontend/package.json).
Keeping the frontend API client in sync
The frontend's TypeScript API client is generated from the backend's OpenAPI schema and is not hand-written. Any change to a backend route or model must be followed by regenerating it — see Regenerating the API client.
AI agent skills
This repository ships domain-specific instructions for AI coding agents under .agents/skills/ (Airflow DAGs,
Angular components, FastAPI endpoints, frontend/API sync, geospatial data handling, Figma-to-code, Tailwind design
systems). agents.md at the repository root is the entry point.