4.2 KiB
4.2 KiB
🧠 Architekturübersicht – NodeMap
Dieses Dokument beschreibt die technische Gesamtarchitektur des Projekts NodeMap, einer kartenbasierten Webanwendung zur Anzeige, Bearbeitung und Verwaltung von GIS-Daten, POIs und Gerätestatus.
⚙️ Technologie-Stack
| Komponente | Beschreibung |
|---|---|
| Frontend | React 18 + Next.js (App Router) |
| State-Management | Redux Toolkit mit zentralem Store, Thunks & Slices |
| UI | Tailwind CSS + Leaflet + React-Icons |
| Backend-Anbindung | Webservices via WebServiceMap.asmx (IIS) + lokale Next.js API für DB |
| Datenbank | MySQL (Produktiv & Entwicklung, z. T. via Docker) |
| Deployment | Windows Server (IIS), optional per nssm als Dienst |
🗺️ Architekturüberblick
+------------------+ +------------------+ +------------------+
| Leaflet Map | <---> | Redux Store | <---> | Webservices |
| (Interaktivität) | | (Status & Data) | | (IIS, .asmx) |
+------------------+ +------------------+ +------------------+
^
|
v
+------------------+ +------------------+ +-------------------+
| POI-Komponenten | <---> | Redux Slices | <---> | Next.js API-Routen|
| (Add/Edit) | | (z. B. poiSlice) | | (Datenbank) |
+------------------+ +------------------+ +-------------------+
🔁 Datenfluss (Beispiel: POI anzeigen)
- Leaflet-Karte lädt bei
MapComponentMounting - Redux-Thunk
fetchPoiMarkersThunkwird ausgelöst - Thunk ruft
fetchPoiDataService.js(DB) oder Webservice (IIS) auf - Ergebnisse werden im Slice
readPoiMarkersStoreSlicegespeichert - Komponenten lesen POI-Daten über
useSelector(...)aus dem Store - POIs werden als Marker in Leaflet gesetzt
📁 Schlüsselfunktionen & Module
| Bereich | Datei/Modul | Aufgabe |
|---|---|---|
| Kartenlogik | MapComponent.js |
Zentrale Initialisierung und Layer-Logik |
| Webservices | services/webservice/ |
Kommunikation mit TALAS V5 Webservice |
| Datenbank | services/database/ |
Zugriff auf lokale Next.js-API & DB |
| POIs | AddPOIModal.js, PoiUpdateModal.js |
UI für POI-Erstellung & -Bearbeitung |
| Redux | redux/slices/, redux/thunks/, redux/store |
Globaler State, API-Steuerung |
| Konfiguration | .env.local, config.js, dynamic URLs |
IP, basePath, Ports |
🧩 Besonderheiten
- Konfigurierbarer basePath:
Pfad wie/talas5ist optional und kann perNEXT_PUBLIC_BASE_PATHin.env.localgesetzt werden. - Rechteabhängige UI:
Funktionen (z. B. POI bearbeiten) basieren auf Benutzerrechten (IdRight) vom Server. - Zentrale Komponentensteuerung:
Komponenten wieMapLayersControlPaneloderCoordinatePopupkontrollieren Layer & Interaktion. - Kontextmenü-Logik:
Marker & Polylinien besitzen eigene Kontextmenüs – dynamisch zusammengesetzt und verwaltet.
📦 Versionierung & Builds
- Version ist in
appVersion.jsdefiniert → wird überNEXT_PUBLIC_APP_VERSIONeingeblendet - Build erfolgt via
npm run build, Auslieferung über.next/ - Nicht benötigte Dateien wie
__tests__,docs/,scripts/etc. werden nicht in den Build aufgenommen