GeoIntel release gates / Compile, test, contracts and builds (push) Successful in 1m49s
GeoIntel release gates / Python and npm vulnerability policy (push) Successful in 21s
GeoIntel release gates / Production AI image, SBOM and container scan (push) Successful in 5m39s
GeoIntel release gates / Deploy exact gated revision to Unraid (push) Failing after 58m43s
4.3 KiB
4.3 KiB
Frontend Component Breakdown
Global layout
AppShell
Responsibilities:
- main navigation
- project context indicator
- active job indicator
- responsive layout
LeftNavigation
Items:
- Home
- Projects
- Map Workbench
- Dataset Manager
- Raster Lab
- Vector Lab
- Detection Lab
- Segmentation Lab
- QA/QC Lab
- Change Lab
- Exports
- Settings
TopStatusBar
Shows:
- selected project
- selected area
- backend health
- queued/running jobs
Pages
HomePage
Purpose:
- start a new project
- open recent projects
- open demo scenario
Components:
- HeroPanel
- NewProjectCard
- RecentProjectsList
- DemoScenarioLauncher
API:
- GET /projects
- POST /projects
ProjectWorkspacePage
Purpose:
- overview for one project
Components:
- ProjectHeader
- AreaSummaryCard
- DatasetSummaryCard
- AnalysisRunList
- KeyOutputCards
- NextActionPanel
API:
- GET /projects/{project_id}
- GET /projects/{project_id}/areas
- GET /projects/{project_id}/datasets
- GET /projects/{project_id}/analysis-runs
MapWorkbenchPage
Purpose:
- central map inspection and area/layer management
Components:
- MapCanvas
- LayerManager
- AreaDrawingTools
- FeatureInspector
- MapToolbar
- OpacitySlider
API:
- GET /projects/{project_id}/areas
- GET /projects/{project_id}/layers
- GET /layers/{layer_id}/features
DatasetManagerPage
Purpose:
- upload/import datasets and inspect metadata
Components:
- DatasetUploadDropzone
- DatasetTable
- DatasetMetadataPanel
- DatasetStatusBadge
- DatasetActionsMenu
API:
- POST /projects/{project_id}/datasets/upload
- GET /projects/{project_id}/datasets
- GET /datasets/{dataset_id}/metadata
RasterLabPage
Purpose:
- raster inspection and preprocessing
Components:
- RasterDatasetSelector
- RasterMetadataCard
- BandSelector
- RasterPreviewPanel
- RasterOperationPanel
- RasterArtifactList
Actions:
- clip by area
- generate tiles
- calculate histogram
- calculate index later
API:
- GET /datasets/{dataset_id}/metadata
- POST /rasters/{dataset_id}/clip
- POST /rasters/{dataset_id}/tile
- POST /rasters/{dataset_id}/histogram
VectorLabPage
Purpose:
- vector inspection and spatial operations
Components:
- VectorDatasetSelector
- GeometrySummaryCard
- VectorOperationPanel
- AttributePreviewTable
- VectorLayerPreview
Actions:
- validate geometry
- reproject
- clip
- buffer
- intersect
API:
- POST /vectors/{dataset_id}/validate
- POST /vectors/{dataset_id}/clip
- POST /vectors/{dataset_id}/buffer
- POST /vectors/{dataset_id}/intersect
DetectionLabPage
Purpose:
- object detection workflow
Components:
- DetectionInputSelector
- ModelSelector
- DetectionParameterPanel
- DetectionRunButton
- DetectionResultsMap
- DetectionMetricsCards
- DetectionExportPanel
Parameters:
- confidence threshold
- tile size
- overlap
- target classes
API:
- POST /analysis/object-detection
- GET /analysis-runs/{run_id}
- GET /analysis-runs/{run_id}/detections
SegmentationLabPage
Purpose:
- segmentation workflow
Components:
- SegmentationInputSelector
- SegmentationModelSelector
- SegmentationParameterPanel
- MaskPreview
- PolygonizedOutputPanel
- SegmentationExportPanel
API:
- POST /analysis/segmentation
- GET /analysis-runs/{run_id}/segmentations
QaqcLabPage
Purpose:
- compare AI output against reference data
Components:
- PredictionLayerSelector
- ReferenceLayerSelector
- MatchThresholdSelector
- QaqcRunButton
- QaqcMetricsPanel
- ErrorLayerTabs
- FindingTable
API:
- POST /analysis/{run_id}/quality-check
- GET /quality-checks/{check_id}
ChangeLabPage
Purpose:
- compare two vector or raster-derived layers
Components:
- BaselineLayerSelector
- ComparisonLayerSelector
- ChangeMethodSelector
- ChangeResultsMap
- ChangeStatsPanel
API:
- POST /analysis/change-detection
- GET /analysis-runs/{run_id}/changes
ExportsPage
Purpose:
- generate/download artifacts
Components:
- ExportTypeSelector
- ExportTargetSelector
- ExportHistoryTable
- ExportDownloadButton
API:
- POST /exports/geojson
- POST /exports/package
- GET /exports
Shared components
- LoadingState
- EmptyState
- ErrorState
- StatusBadge
- MetricCard
- JsonInspector
- GeometryBadge
- CrsBadge
- LayerLegend
UI principles
- Processing state must be visible.
- Empty states must suggest next action.
- No hidden GIS assumptions: CRS, bounds and source must be visible.
- Exports must clearly say which run/source they belong to.