Open Source Dependencies

All major open source packages used in Nagelfluh, organized by layer.

Frontend (npm)

Core Framework

Package Purpose
react UI framework
react-dom React DOM renderer
react-router-dom Client-side routing and popout window support
react-scripts Build tooling (Create React App)

Data Fetching & State

Package Purpose
@tanstack/react-query Server state management and caching
axios HTTP client

UI Components

Package Purpose
react-bootstrap Bootstrap component wrappers
bootstrap CSS framework
@fortawesome/fontawesome-free Icon library
sass CSS preprocessor

Forms

Package Purpose
@rjsf/core Dynamic form generation from JSON Schema
@rjsf/validator-ajv8 AJV8-based validator for RJSF

Layout & Drag-and-Drop

Package Purpose
react-dnd Drag-and-drop primitives
react-dnd-html5-backend HTML5 drag-and-drop backend

Visualization

Package Purpose
gladly-plot WebGL-based scientific plotting (primary plot library)
regl WebGL abstraction (used by gladly-plot and custom layers)
d3 Data utilities and scales
reactflow Interactive node graph for process flow view
leaflet Slippy map (tile layers)
react-leaflet React bindings for Leaflet

Geo / Projection

Package Purpose
proj4 Coordinate reference system transformations
projnames EPSG code → proj4 string lookup

Data Formats

Package Purpose
geotiff GeoTIFF raster reading
msgpack-lite MessagePack serialization
msgpack-numpy-js NumPy array decode extension for msgpack
webxtile Tiled xarray/CF data loader (browser client)

Utilities

Package Purpose
uuid UUID generation

Backend (Python / pip)

Web Framework

Package Purpose
fastapi Async REST + WebSocket framework with auto OpenAPI docs
uvicorn ASGI server
watchfiles File watcher for uvicorn --reload
websockets WebSocket support
python-multipart Multipart form data parsing
fastapi-mcp Expose FastAPI routes as MCP tools

Database & Migrations

Package Purpose
sqlalchemy ORM and SQL toolkit (async via asyncio extra)
alembic Schema migrations
aiosqlite Async SQLite driver (development)
asyncpg Async PostgreSQL driver (production)
psycopg2-binary Sync PostgreSQL driver (Alembic offline mode)

Security & Auth

Package Purpose
python-jose JWT encoding / decoding
passlib Password hashing abstraction
bcrypt bcrypt hashing algorithm for passlib
PyJWT Lightweight JWT library

Storage

Package Purpose
fsspec Unified filesystem abstraction
s3fs S3-compatible fsspec backend (MinIO / AWS S3 / GCS via S3 compat)
minio MinIO Python client (bucket/policy management)

Kubernetes

Package Purpose
kubernetes Sync Kubernetes API client
kubernetes-asyncio Async Kubernetes API client (job dispatch and log streaming)

Data Formats & Scientific

Package Purpose
libaarhusxyz AEM (airborne EM) XYZ/MagData format handling
msgpack-numpy NumPy array MessagePack codec
projnames EPSG code → proj4 string lookup (shared with frontend)

Configuration & Utilities

Package Purpose
pydantic-settings Environment-based settings with validation
python-dotenv .env file loading
click CLI framework (management commands)
aiosmtplib Async SMTP for email notifications
setuptools Package management; used for process-type entrypoint discovery

Infrastructure

Component Purpose
Kubernetes Container orchestration — runs process jobs
Kueue Job queuing and resource quota management
Minikube Local Kubernetes cluster for development
Docker Container image builds
MinIO S3-compatible object storage (development)
PostgreSQL Production relational database