How eleu/swissgeol-viewer-app works
Swissgeol is Swisstopo’s browser-based geology 3D viewer, with a Rust API supporting authenticated project data. The main user workflow is to open the Cesium map, explore and configure geological layers, query map features, and use drawing and analysis tools; users can also manage project geometries through the dashboard. The UI includes additional documented URL-driven viewing options and domain tools. Edges are limited to relationships shown in excerpts or SOURCE INDEX references; unsampled capabilities are included where the tree identifies them, without asserting their internal wiring.
Main entry points: viewer.ts Cesium Viewer · ngm-app.ts Viewer Application · GeometryController.ts Geometry Editing · ngm-dashboard.ts Project Dashboard
Components 32
3D Viewer
- Viewer Application
ui/src/ngm-app.ts - Cesium Viewer
ui/src/viewer.ts - Layer Catalog
ui/src/layertree.ts - Layer Controls
ui/src/layers/ngm-layers.ts - Map Configuration
ui/src/elements/ngm-cam-configuration.ts - Permalink State
ui/src/permalink.ts - Cesium ION Assets
ui/src/api-ion.ts
Map Tools
- Feature Queries
ui/src/query/QueryManager.ts - Swisstopo Identify
ui/src/query/SwisstopoIdentify.ts - Measurement
ui/src/measure/MeasureTool.ts - 3D Slicing
ui/src/slicer/SlicingBox.ts - Earthquake View
ui/src/earthquakeVisualization/earthquakeVisualizer.js - Toolbox UI
ui/src/toolbox/ngm-toolbox.ts - Swissforages Service
ui/src/toolbox/SwissforagesService.ts
Projects and Geometry
- Geometry Editing
ui/src/toolbox/GeometryController.ts - Geometry Drawing
ui/src/draw/CesiumDraw.ts - Project Dashboard
ui/src/elements/dashboard/ngm-dashboard.ts - Project API Client
ui/src/api-client.ts - User Authentication
ui/src/auth.ts
API and Storage
- API Service
api/src/handlers.rs - API Authorization
api/src/auth.rs - Project Database
api/src/database.rs - S3 Assets
api/src/s3.rs
Shared UI Services
- Localization
ui/src/i18n.js - Notifications
ui/src/notifications.ts - Viewer State
ui/src/store/main.ts - Drawing State
ui/src/store/draw.ts - Authentication State
ui/src/store/auth.ts - Geometry Types
ui/src/toolbox/interfaces.ts
Other components
- Viewer User
- Swissforages API
- Cesium ION
Connections 32
- Viewer User → Viewer Application: opens
README.md - Viewer Application → Cesium Viewer: presents
- Viewer Application → Project Dashboard: presents
- Cesium Viewer → Layer Catalog: uses
- Layer Catalog → Layer Controls: configures
- Cesium Viewer → Map Configuration: configures
- Cesium Viewer → Permalink State: restores state
- Viewer State → Permalink State: reads token
ui/src/store/main.ts - Viewer State → Cesium ION Assets: dispatches assets
ui/src/store/main.ts - Cesium ION Assets → Cesium ION: requests assets
- Cesium Viewer → Feature Queries: supports queries
- Feature Queries → Swisstopo Identify: calls identify
ui/src/query/QueryManager.ts - Cesium Viewer → Measurement: supports measuring
- Toolbox UI → 3D Slicing: offers slicing
- Toolbox UI → Earthquake View: offers visualization
- Project Dashboard → Project API Client: calls API
ui/src/elements/dashboard/ngm-dashboard.ts - Project API Client → User Authentication: gets token
ui/src/api-client.ts - User Authentication → Authentication State: updates user
ui/src/auth.ts - Project API Client → API Service: requests projects
- API Service → API Authorization: uses authorization
api/src/lib.rs - API Service → Project Database: uses database
api/src/lib.rs - API Service → S3 Assets: uses asset storage
api/src/lib.rs - Toolbox UI → Geometry Editing: offers editing
- Geometry Editing → Geometry Drawing: invokes drawing
ui/src/toolbox/GeometryController.ts - Geometry Editing → Drawing State: uses state
ui/src/toolbox/GeometryController.ts - Geometry Editing → Geometry Types: uses types
ui/src/toolbox/GeometryController.ts - Swissforages Service → Swissforages API: sends requests
ui/src/toolbox/SwissforagesService.ts - Swissforages Service → Notifications: reports errors
ui/src/toolbox/SwissforagesService.ts - Feature Queries → Geometry Types: uses types
- Viewer Application → Localization: initializes language
- Project Dashboard → Viewer State: uses state
ui/src/elements/dashboard/ngm-dashboard.ts - Project Dashboard → Authentication State: uses user
ui/src/elements/dashboard/ngm-dashboard.ts