diff --git a/.gitignore b/.gitignore index 8dd5a03c2..858b00ebf 100644 --- a/.gitignore +++ b/.gitignore @@ -24,9 +24,10 @@ trace # Ignore specific Next.js build files pages-manifest.json -nodeMap für 13 am 16.07.2024.zip Lastenheft.js # Dendron-Verzeichnis ignorieren /draw.io/ +# Ignore docs.zip +docs.zip diff --git a/config/appVersion.js b/config/appVersion.js index 933c9dc1b..3d04749a3 100644 --- a/config/appVersion.js +++ b/config/appVersion.js @@ -1,2 +1,2 @@ // /config/appVersion -export const APP_VERSION = "1.1.189"; +export const APP_VERSION = "1.1.190"; diff --git a/docs/README.md b/docs/README.md index 086936aa9..ae12a69bc 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,3 +1,5 @@ + + # Entwickler-Dokumentation Willkommen in der technischen Dokumentation von NodeMap. diff --git a/docs/architecture.md b/docs/architecture.md index e69de29bb..5c4bd8dab 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -0,0 +1,90 @@ + + +# 🧠 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) + +1. Leaflet-Karte lädt bei `MapComponent` Mounting +2. Redux-Thunk `fetchPoiMarkersThunk` wird ausgelöst +3. Thunk ruft `fetchPoiDataService.js` (DB) oder Webservice (IIS) auf +4. Ergebnisse werden im Slice `readPoiMarkersStoreSlice` gespeichert +5. Komponenten lesen POI-Daten über `useSelector(...)` aus dem Store +6. 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 `/talas5` ist optional und kann per `NEXT_PUBLIC_BASE_PATH` in `.env.local` gesetzt werden. +- **Rechteabhängige UI:** + Funktionen (z. B. POI bearbeiten) basieren auf Benutzerrechten (`IdRight`) vom Server. +- **Zentrale Komponentensteuerung:** + Komponenten wie `MapLayersControlPanel` oder `CoordinatePopup` kontrollieren Layer & Interaktion. +- **Kontextmenü-Logik:** + Marker & Polylinien besitzen eigene Kontextmenüs – dynamisch zusammengesetzt und verwaltet. + +--- + +## 📦 Versionierung & Builds + +- Version ist in `appVersion.js` definiert → wird über `NEXT_PUBLIC_APP_VERSION` eingeblendet +- Build erfolgt via `npm run build`, Auslieferung über `.next/` +- Nicht benötigte Dateien wie `__tests__`, `docs/`, `scripts/` etc. werden nicht in den Build aufgenommen + +--- + +## 📚 Weiterführende Dokumentation + +- [`build-and-deploy.md`](./build-and-deploy.md) +- [`env.local.schema.md`](./env.local.schema.md) +- [`redux/slices/`](./redux/slices/) +- [`services/webservice/`](./services/webservice/) diff --git a/docs/build-and-deploy.md b/docs/build-and-deploy.md new file mode 100644 index 000000000..8ce4da561 --- /dev/null +++ b/docs/build-and-deploy.md @@ -0,0 +1,46 @@ + + +# 🛠 Deployment & Build-Verhalten (Next.js) + +Diese Datei beschreibt, welche Projektdateien in den Build (`.next/`) aufgenommen werden und welche nicht. +Ziel: Klarheit für Onboarding, Deployment-ZIP-Erstellung oder CI/CD. + +--- + +## 📦 Wird beim `npm run build` in `.next/` gespeichert + +| Inhalt | Beschreibung | +| ---------------------- | -------------------------------------------------- | +| Kompilierte Seiten | Alle unter `/pages/` | +| API-Routen | Alles aus `pages/api/` | +| Assets aus `public/` | Werden im Build nicht verändert, aber ausgeliefert | +| CSS-Dateien (Tailwind) | Werden gebundelt und minimiert | +| `.env.local` | Wird eingelesen, aber nicht exportiert | +| JS/TS-Quellcode | Wird zu Client- und Server-Bundles kompiliert | + +--- + +## 🧹 Wird **nicht** in `.next/` aufgenommen + +| Ordner/Datei | Zweck / Grund | +| --------------------------- | -------------------------------------------- | +| `__tests__`, `__mocks__` | Nur lokal für Tests, nicht im Build | +| `cypress/` | End-to-End-Tests, nur für lokale Entwicklung | +| `scripts/` | Hilfsskripte, nicht für Runtime relevant | +| `docs/` | Dokumentation, nur für Entwickler | +| `README.md`, `CHANGELOG.md` | Doku – nicht erforderlich zur Laufzeit | +| `Jenkinsfile`, `.github/` | CI/CD – wird vom Buildsystem verwendet | + +--- + +## 📂 Empfohlene Struktur für Deployment (z. B. ZIP-Upload auf Server) + +Nur folgende Dateien/Ordner übertragen: + +```bash +.next/ +public/ +package.json +package-lock.json +.env.local +``` diff --git a/docs/checklist.md b/docs/checklist.md index 0a9e8e2c9..62133ddbe 100644 --- a/docs/checklist.md +++ b/docs/checklist.md @@ -1,3 +1,5 @@ + + # 🧾 Projektpflege-Checkliste Diese Datei dient als persönliche Gedächtnisstütze bei der Entwicklung und Pflege des Projekts. diff --git a/docs/deployment.md b/docs/deployment.md deleted file mode 100644 index e69de29bb..000000000 diff --git a/docs/env.local.schema.md b/docs/env.local..md similarity index 88% rename from docs/env.local.schema.md rename to docs/env.local..md index 10c8c0968..8cff0f562 100644 --- a/docs/env.local.schema.md +++ b/docs/env.local..md @@ -1,3 +1,5 @@ + + ### /docs/env.local.schema.md - `NEXT_PUBLIC_API_HOST` → Webservice-DNS oder IP diff --git a/docs/nssm.exe Installation.md b/docs/nssm-exe-installation.md similarity index 91% rename from docs/nssm.exe Installation.md rename to docs/nssm-exe-installation.md index bba49a437..b03858905 100644 --- a/docs/nssm.exe Installation.md +++ b/docs/nssm-exe-installation.md @@ -1,16 +1,21 @@ -```markdown -- Als Administrator Eingabeaufforderung oder PowerShell öffnen + + +````markdown +- Als Administrator Eingabeaufforderung oder PowerShell öffnen - Navigiere zu dem NodeMap Projekt Verzeichnis: ```shell C:\Users\Administrator>cd C:\inetpub\wwwroot\talas5\nodeMap ``` +```` - Befehl zum Erstellen eines Dienstes: Führen Sie den folgenden Befehl aus, um einen neuen Dienst zu erstellen: + ```shell nssm.exe install NodeMapService ``` + Nachdem Sie diesen Befehl ausgeführt haben, öffnet sich ein NSSM-Dialogfenster. **Dienstkonfiguration:** @@ -25,7 +30,7 @@ C:\inetpub\wwwroot\talas5\nodeMap ``` - **Arguments:** kann leer gelassen werden. - + - Dienst starten: Sobald der Dienst erstellt wurde, können Sie ihn starten. Das können Sie entweder über die Eingabeaufforderung oder über die Diensteverwaltung von Windows tun. @@ -45,4 +50,7 @@ nssm.exe remove NodeMapService confirm ``` dauert bis 1 Minute + +``` + ```