@@ -1,21 +1,32 @@
# 🚀 NodeMap – Einstieg für Entwickler
# 📘 NodeMap – Entwicklerdokumentation
NodeMap ist eine modulare Kartenanwendung zur Visualisierung und Bearbeitung von GIS-Daten, POIs und
Willkommen in der Entwicklerdokumentation für ** NodeMap** – einer modularen Kartenanwendung zur
Gerätestatus in einer interaktiven Leaflet-Karte.
Visualisierung und Bearbeitung von GIS-Daten, POIs und Gerätestatus in einer interaktiven
Leaflet-Karte.
## 🌍 Live-Vorschau der Kart e
Diese Anleitung führt dich **Schritt für Schritt** durch die wichtigsten Bereiche für lokal e
Entwicklung, Architekturverständnis und Erweiterung.

---
---
> 🖥 Entwicklung & Test unter Windows 11 mit Node.js v18.17.1 und IIS
## 📚 Inhaltsverzeichnis
> 📦 MySQL 8.0 läuft lokal in einem Docker-Container (nur für Entwicklung)
> 🗄 Produktionsumgebung: TALAS.web und MySQL Server unter Windows Server
- [📘 NodeMap – Entwicklerdokumentation ](#-nodemap--entwicklerdokumentation )
- [📚 Inhaltsverzeichnis ](#-inhaltsverzeichnis )
- [🔍 Projektüberblick ](#-projektüberblick )
- [🧱 Projektstruktur \& Setup ](#-projektstruktur--setup )
- [🔌 Webservices \& API-Fluss ](#-webservices--api-fluss )
- [🧠 Zustandverwaltung (Redux) ](#-zustandverwaltung-redux )
- [🧪 Entwicklung \& Testdaten ](#-entwicklung--testdaten )
- [❗ Fehlerbehandlung \& Glossar ](#-fehlerbehandlung--glossar )
- [🔄 Hinweis zum Deployment ](#-hinweis-zum-deployment )
---
---
## Technologie-Sta ck
## 🔍 Projektüberbli ck
NodeMap wird von **TALAS.web** über einen iFrame geladen. Die Anwendung verwendet moderne
Technologien wie:
| Technologie | Zweck |
| Technologie | Zweck |
| ------------- | ------------------------------ |
| ------------- | ------------------------------ |
@@ -26,179 +37,86 @@ Gerätestatus in einer interaktiven Leaflet-Karte.
| MySQL | Datenbank |
| MySQL | Datenbank |
| Node.js / IIS | Server und Auslieferung |
| Node.js / IIS | Server und Auslieferung |
## 🧭 Zielumgebung
➡ Mehr zur Architektur: [architecture.md ](/docs/architecture.md )
- Windows-Produktionsserver (offline, kein Internet)
- Kommunikation nur im lokalen Netzwerk
- Nutzerzugriff per VPN + Remote Desktop (RDP)
- Integration per iFrame in TALAS.web
---
---
## 🔄 Wie funktioniert das System?
## 🧱 Projektstruktur & Setup
Die Anwendung wird von TALAS.web im iFrame geladen. Die URL enthält Parameter für Map- und
🔧 **Zielsystem:**
User-ID.
NodeMap lädt anschließend Daten über WebServices und MySQL.
- Offline-Umgebung
➡ Details zur Architektur: [docs/architecture.md ](docs/architecture.md )
- Windows-Server mit IIS
- Datenzugriff über Webservice oder lokale API
🚀 **Lokale Entwicklung starten:**
➡ [Entwicklungssetup ](guide/setup-dev.md )
📁 **Verzeichnisstruktur verstehen:**
➡ [Projektstruktur erklärt ](guide/project-structure.md )
🛠️ **Abhängigkeiten & Tools:**
➡ [dependencies.md ](guide/dependencies.md )
🌐 **Umgebungsvariablen (env-Dateien):**
➡ [env.md ](guide/env.md )
---
---
## 🧰 Erstinstallation auf Server
## 🔌 Webservices & API-Fluss
### Voraussetzungen
NodeMap greift auf zwei Datenquellen zu:
- Windows Server mit IIS
1. **TALAS-WebServices** (Port 80) – Gerätedaten, POIs, Rechte etc.
- Sicherstellen, dass alle TALAS.web API-Endpunkte(WebService) erreichbar sind
2. **Lokale Next.js API** (Port 3000) – eigene Datenbankabfragen via MySQL
- Node.js & npm installiert (z. B. v18– 20)
- MySQL (lokal oder erreichbar )
➡ [Webservices-Dokumentation ](guide/webservices.md )
- Port 3000 freigegeben (Firewall)
- IIS-Datei `mapTypC.aspx` vorhanden in C:\inetpub\wwwroot\talas5\MessagesMap\
(Server-IP mit Port 3000)
- Browser: Chrome ab Version 125.0.6420.142 empfohlen
- Karten Material vorhanden in: `C:\inetpub\wwwroot\talas5\TileMap\mapTiles`

---
---
## 🔗 Integration in TALAS.web
## 🧠 Zustandverwaltung (Redux)

Alle Karten- und Gerätefunktionen (z. B. Marker, Linien, POIs) sind über Redux-Slices und Thunks
organisiert:
- Die App wird in einem **iFrame** geladen
- Datenfluss: `Service` → `Thunk` → `Slice` → `Komponente`
- Startet über `?m=X&u=Y` für Map-/User-ID
- Beispiel: POI-Daten, Gerätemarker, Rechteprüfung, Sichtbarkeiten
- Rechte und Inhalte werden automatisch geladen
```
➡ [Zustandverwaltung mit Redux ](guide/redux-zustand.md )
z.B.
` http://10.10.0.13/talas5/MessagesMap/mapTypC.aspx?m=12& u=484`
` ``
---
---
## 🪛 Schritt-für-Schritt: NodeMap auf dem Server installier en
## 🧪 Entwicklung & Testdat en
Um auch **ohne echte Datenquelle** arbeiten zu können:
- ✔ Mockdaten-Modus über `.env.local`
- ✔ API-Antworten werden lokal simuliert
- ✔ Redux prüft, ob `process.env.NEXT_PUBLIC_USE_MOCKS === true`
➡ [Mockdaten & Entwicklung ](guide/mock-data.md )
---
---
1. **Projekt lokal klonen und kompilieren:**
## ❗ Fehlerbehandlung & Glossar
` ``bash
Typische Probleme bei Installation, Deployment oder Datenzugriff:
git clone http://10.10.0.12:3000/ISA/nodeMap
cd nodeMap # zu den Verzeichnis wechseln
npm install # Abhängigkeiten installieren (lädt alle Pakete aus package.json)
npm run build # Erstellt ein optimiertes Produktions-Build im Ordner .next/
` ``
2. **ZIP-Paket vorbereiten (lokal):**
➡ [FAQ & häufige Fehler ](guide/faq.md )
- Verzeichnis ` .next/`
Begriffe wie `POI` , `IdMap` , `Station` , `Layer` , `Slice` erklärt:
- Verzeichnisse ` public/`, ` node_modules/` falls auf dem Server nicht vorhanden sind oder etwas
hinzugefügt wurde (Bilder oder Bibliothek)
- Dateien ` .env.production`, ` package.json` falls auf dem Server nicht vorhanden sind oder etwas
hinzugefügt wurde (Umgebungsvariablen oder Bibliothek)
- ` nssm.exe`, ` StartNodeApp.bat`, ` Start-Dev.ps1` um Windows Dienst zu erstellen falls noch nicht
vorhanden ist Download:
[nssm](https://littwinsystemtechnik.sharepoint.com/:f:/r/sites/LittwinSystemtechnik/Freigegebene%20Dokumente/Projekte/Masterkarte%20V2%20setup%20files?csf=1&web=1&e=Sm1wwt)
3. **Auf Server kopieren nach:** Ein Ordner temp auf dem Desktop erstellen->ZIP-Paket
➡ [Glossar ](guide/glossar.md )
einfügen->entpacken->Inhalt in folgende Verzeichnis einfügen
` ``
C:\inetpub\wwwroot\talas5\nodeMap\
` ``
4. **Kartenmaterial hinzufügen (falls nicht vorhanden):**
Muss noch in Download-Server eingefügt werden, damit eine zentrale Stelle verfügbar ist
` ``
C:\inetpub\wwwroot\talas5\TileMap\
` ``
5. **.env.production konfigurieren**
Die Datei ` .env.production` enthält alle benötigten Verbindungs- und Betriebsvariablen wie z. B.
Datenbank-Zugang, Pfade und Mock-Option.
➡ Vollständige Anleitung & Beispieldatei: [.env.production](docs/guide/env.md)
6. **Dienst registrieren falls nicht vorhanden**
- Mit ` nssm.exe` Windows-Dienst „nodeMapService“ erstellen
- Ziel: ` StartNodeApp.bat`
- Anleitung:
[nssm](https://littwinsystemtechnik.sharepoint.com/:f:/r/sites/LittwinSystemtechnik/Freigegebene%20Dokumente/Projekte/Masterkarte%20V2%20setup%20files?csf=1&web=1&e=Sm1wwt)
1. **Starten:** Dienst starten , falls vorhanden einmal beenden und neustarten
2. **Im Browser testen:**
` ``
http://<ip>/talas5/MessagesMap/mapTypC.aspx?m=IdMap&u=IdUser
z.B.
http://<ip>/talas5/MessagesMap/mapTypC.aspx?m=12&u=484
` ``
---
---
## 🔁 Update-Richtlini en
## 🔄 Hinweis zum Deploym ent
| Art | Ersetzte Dateien | Bemerkung |
Für die Anleitung zur Installation auf dem Server → siehe
| ------------------ | ---------------------------------- | ---------------------------- |
📦 [Root-README.md im Projektverzeichnis ](../README.md )
| **Kleines Update** | ` .next/` | ` node_modules` nicht nötig |
| **Großes Update** | alle Dateien (wie Neuinstallation) | Dienst ggf. neu registrieren |
### Empfohlener Ablauf für kleines Update:
1. ` .next/` Verzeichnis nach Kompilieren kopieren und auf dem Server einfügen
2. Dienst neu starten
3. Im Browser testen: ` http://< ip > /talas5/MessagesMap/mapTypC.aspx?m=IdMap& u=IdUser`
---
---
## ✅ Tests & Qualitätssicherung
🧩 **Fragen oder neue Entwickler im Team?**
Diese README ist der beste Startpunkt und enthält alle Links zur vertieften technischen
- **E2E-Tests:** Cypress (nur in der Entwicklungsumgebung)
Dokumentation.
- **Unit-Tests:** Aktuell keine Jest-Tests aufgrund Leaflet-Komplexität
- **Empfehlung:** Manuelle Tests nach jedem Deployment durchführen (Checkliste vorbereiten)
---
## 🏷 Versionierung
wird mit husky Bibliothek automatisch erhöht bei "git commit message"
→ Wird in der Fußzeile angezeigt. Die Version wird automatisch erhöht über ein Script
(` scripts/bumpVersion.js`), das per Husky vor jedem Commit ausgeführt wird.
Die Version steht sowohl in ` package.json` als auch in ` config/appVersion.js`.
---
## 💾 Setup: Installationen & Tools
| Tool | Version | Link |
| -------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Node.js | 20.12.1 | [nodejs](https://littwinsystemtechnik.sharepoint.com/:f:/r/sites/LittwinSystemtechnik/Freigegebene%20Dokumente/Projekte/Masterkarte%20V2%20setup%20files?csf=1&web=1&e=Sm1wwt) |
| Chrome | optional | [Chrome](https://littwinsystemtechnik.sharepoint.com/:f:/r/sites/LittwinSystemtechnik/Freigegebene%20Dokumente/Projekte/Masterkarte%20V2%20setup%20files?csf=1&web=1&e=Sm1wwt) |
| NSSM.exe | 2.24 | [nssm](https://littwinsystemtechnik.sharepoint.com/:f:/r/sites/LittwinSystemtechnik/Freigegebene%20Dokumente/Projekte/Masterkarte%20V2%20setup%20files?csf=1&web=1&e=Sm1wwt) |
> Hinweis: Die Datei ` MapTypC.aspx` in TALAS lädt NodeMap als iFrame über Port 3000.
> Wenn die Seite nicht angezeigt wird, bitte sicherstellen:
>
> - Port 3000 ist in der Firewall freigegeben
> - Die IP im Scriptteil von ` MapTypC.aspx` ist aktuell (z. B. ` 10.10.0.13`)
> - Windows-Dienst ` NodeMapService` ist aktiv oder ` npm start` in Terminal ausgeführt
## 📁 Dokumentation & technische Leitfäden
| Thema | Link |
| ------------------------- | ------------------------------------------------------- |
| Benutzeranleitung | [docs/guide/user-guide.md ](docs/guide/user-guide.md ) |
| Architekturübersicht | [architecture.md ](docs/architecture.md ) |
| Projektstruktur | [project-structure.md ](docs/guide/project-structure.md ) |
| Webservices (TALAS) | [webservices.md ](docs/guide/webservices.md ) |
| Umgebungsvariablen | [env.md ](docs/guide/env.md ) |
| Mockdaten-Modus | [mock-data.md ](docs/guide/mock-data.md ) |
| Zustandverwaltung (Redux) | [redux-zustand.md ](docs/guide/redux-zustand.md ) |
| Abhängigkeiten | [dependencies.md ](docs/guide/dependencies.md ) |
| Lokale Entwicklung | [setup-dev.md ](docs/guide/setup-dev.md ) |
| FAQ & Fehlerbehandlung | [faq.md ](docs/guide/faq.md ) |
| Glossar | [faq.md ](docs/guide/glossar.md ) |