# 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.