<!-- /docs/guide/dependencies.md-->

# 📂 Abhängigkeiten in NodeMap (Stand: 2025)

Diese Datei listet alle Drittanbieter-Abhängigkeiten aus der Datei `package.json` mit einer kurzen
Erklärung, wofür sie im Projekt verwendet werden.

---

## ✨ Frameworks & Tooling

| Paket                                            | Zweck & Beschreibung                                                                               |
| ------------------------------------------------ | -------------------------------------------------------------------------------------------------- |
| **next**                                         | Hauptframework (Next.js) zur Erstellung von React-basierten SSR/SSG-Apps.                          |
| **react** / **react-dom**                        | Grundlage für UI-Komponenten im Projekt.                                                           |
| **tailwindcss** / **postcss** / **autoprefixer** | Styling mit Tailwind. PostCSS verarbeitet CSS, Autoprefixer fügt vendor-spezifische Präfixe hinzu. |
| **dotenv**                                       | Ermöglicht das Einlesen von `.env`-Dateien zur Laufzeit auf dem Server.                            |

---

## 🌐 Leaflet & Karten

| Paket                                     | Zweck & Beschreibung                                         |
| ----------------------------------------- | ------------------------------------------------------------ |
| **leaflet**                               | Basiskartenbibliothek zur Darstellung interaktiver Karten.   |
| **leaflet-contextmenu**                   | Kontextmenüs per Rechtsklick in Leaflet.                     |
| **leaflet-control-geocoder**              | Steuerelement für Suche/Geokodierung in Karten.              |
| **leaflet.smooth_marker_bouncing**        | Animation für Marker-Bounces (visuelles Feedback).           |
| **overlapping-marker-spiderfier-leaflet** | Marker-Overlapping-Management mit Spiderfy-Effekt bei Klick. |

---

## 🪄 Zustand & Redux

| Paket                       | Zweck & Beschreibung                                  |
| --------------------------- | ----------------------------------------------------- |
| **@reduxjs/toolkit**        | Vereinfachte Redux-Nutzung mit Slices & Thunks.       |
| **redux** / **react-redux** | Core-State-Management in React-Komponenten.           |
| **redux-thunk**             | Middleware zur Verarbeitung von asynchronen Aktionen. |

---

## 🦜 UI & Styling

| Paket                                   | Zweck & Beschreibung                                |
| --------------------------------------- | --------------------------------------------------- |
| **@mui/icons-material**                 | UI-Icons aus der Material UI Sammlung.              |
| **@emotion/react**, **@emotion/styled** | Styled Components-Engine, benötigt für MUI Styling. |
| **@heroicons/react**                    | React-Icons im Hero-Stil für UI.                    |
| **react-select**                        | Erweiterte Dropdown-Komponente mit Suchfunktion.    |
| **react-toastify**                      | Benachrichtigungs-Tool für Toast-Meldungen.         |

---

## 📁 Daten & Kommunikation

| Paket                            | Zweck & Beschreibung                                      |
| -------------------------------- | --------------------------------------------------------- |
| **axios**                        | HTTP-Client zur API-Kommunikation (z. B. zu Webservices). |
| **cookies**                      | Zugriff & Verwaltung von Cookies auf Server/Client.       |
| **ws**                           | WebSocket-Kommunikation mit z. B. GMA-Live-Daten.         |
| **xml2js** / **fast-xml-parser** | Parsen von XML-Antworten aus Webservices.                 |
| **mysql** / **mysql2**           | Zugriff auf MySQL-Datenbanken.                            |

---

## 🚫 Sicherheit & Netzwerk

| Paket                     | Zweck & Beschreibung                                      |
| ------------------------- | --------------------------------------------------------- |
| **http-proxy-middleware** | API-Routing & Proxy-Zugriff z. B. für lokale Entwicklung. |
| **nextjs-cors**           | CORS-Konfiguration für Next.js API-Routen.                |

---

## 🎓 Entwicklung & Test (nur devDependencies)

| Paket                                                             | Zweck & Beschreibung                        |
| ----------------------------------------------------------------- | ------------------------------------------- |
| **cypress**                                                       | End-to-End-Testing.                         |
| **jest-environment-jsdom** / **jest-fetch-mock** / **jest-junit** | Unit- & Integrationstests.                  |
| **identity-obj-proxy**                                            | Mocking für CSS-Module im Jest-Testkontext. |
| **node-fetch**, **node-mocks-http**                               | HTTP-Mocks für Tests.                       |
| **husky**                                                         | Git-Hook-Management (Pre-Commit etc.).      |
| **raw-loader**                                                    | Import von Rohdaten (z. B. SVG) in Webpack. |

---

## 📄 Weitere Tools & Hilfen

| Paket            | Zweck & Beschreibung                              |
| ---------------- | ------------------------------------------------- |
| **prepare**      | Wird durch Husky benötigt zum Setup von Hooks.    |
| **bump-version** | Interner Versionsbump-Script für `appVersion.js`. |
