Files
geointel/docs/DEPENDENCY_POLICY.md
T
Codex da2371d662
GeoIntel CI / docs-smoke (push) Canceled after 0s
GeoIntel CI / contract-smoke (push) Canceled after 0s
Add governed Statbel edition probe
2026-07-16 22:14:48 +02:00

92 lines
2.7 KiB
Markdown

# Dependency Policy
GeoIntel deliberately uses technologies matching the GeoAI Engineer profile. Dependencies must support the core goal: geospatial processing, remote sensing, AI inference, QA/QC, and professional frontend visualization.
## Approved backend core
- FastAPI
- Uvicorn
- Pydantic
- SQLAlchemy
- Alembic
- GeoAlchemy2
- psycopg
- python-multipart
- RDFLib for standards-compliant parsing of bounded official RDF/DCAT source
catalogues. It is pure Python and does not fetch provider distributions.
## Approved GIS/remote-sensing
- GeoPandas
- Shapely
- PyProj
- Rasterio
- GDAL where available
- Fiona or pyogrio where needed
- NumPy
- OpenCV when needed for image processing
## Docker GIS runtime
The backend Docker image may install the approved `gis` optional dependency
group so the deployed workbench has real raster/vector runtime capability:
- rasterio
- numpy
- pillow
- geopandas
- pyogrio
The Docker image may also install GDAL, GEOS and PROJ system packages required
by those GIS libraries. This does not enable new product behavior by itself; it
only allows existing raster/vector endpoints to run when requested.
AI dependencies remain separate in the `ai` optional dependency group and must
not be installed by the default Docker backend image unless an explicit AI image
or profile is introduced later.
The opt-in Unraid all-in-one AI build is CPU-oriented because its documented
runtime sets `YOLO_DEVICE=cpu`. It installs the pinned PyTorch/torchvision pair
from PyTorch's CPU wheel index before installing the `ai` extra. This avoids
shipping unused CUDA runtime libraries. The index and versions remain explicit
Docker build arguments so a future, separately validated GPU image can override
them without changing the base dependency group.
Docker dependency metadata is copied before application source. Backend source
changes therefore reuse the dependency layer while changes to `pyproject.toml`
still invalidate it correctly. Runtime GIS and YOLO import/preflight smokes run
after the complete backend source is copied.
## Approved AI
- PyTorch
- Ultralytics
- Segment Anything only after detection foundation works
## Approved frontend
- React
- TypeScript
- Vite
- MapLibre GL
- Deck.gl
- TanStack Query
- Zustand or React context for local UI state
- Recharts for charts
## Add-dependency rule
Before adding a dependency:
1. Explain why existing dependencies are insufficient.
2. Add it to this document.
3. Add setup notes if it has native/system requirements.
4. Ensure Docker build still works.
## Avoid in V1
- Heavy MLOps platforms.
- User auth frameworks.
- Full workflow orchestration stacks beyond simple queueing.
- Unnecessary UI component mega-libraries.