90 lines
2.5 KiB
Markdown
90 lines
2.5 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
|
|
|
|
## 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.
|