Aufgabenstellung:
unterstützen beim Reinigen der Stolperteine in berlin durch hilfreiche informationen.
rei
Benutzergruppen: 
1. anwender die ihren standort nicht freigeben-> diese habe die daten nur im lesemodus
2. anwender mit standortfreigabe: diese können den reinigungsstatus von steine steine aktualisieren und steine ergänzen, solang sie in unmittelbarer nähe des standorts sind.
3. Anwender die den Adminzugang kennen: diese können erweiterte edit funktionen nutzen

designphilosoppie: einfach, angelehnt an bekannte apps wie google maps, erweiterbar und wartbar 

Filestruktur
addrs-ui.js
adress sheet - eingabe/auswahl

addrs-render-results.js
logik zur darstellungd er suchergebniss verschiebener sources

addrs-co.js
adresssheet - handling  

// app-shell-co.js
Aufgabe:  Die app-shell-co koordiniert die Benutzeroberfläche der Anwendung und ist insbesondere dafür zuständig, 
ständig sichtare UI-Elemente auf der top-ebene  wie zB das Such-trigger-feld mit den aktuellen Adressinformationen 
 (aus dem bottom sheet) zu synchronisieren und zu aktualisieren.
 
 backend-geo.js:
Aufgabe: Kümmert sich um alle  Backend-Aufrufe an HERE, Nominatim, ev. auch google navigator etc..
backend-poi.js:
Aufgabe: Kümmert sich um alle spezifischen Backend-Aufrufe und Datenoperationen für Stolpersteine, wie das Aktualisieren des Reinigungs- oder Patenschaftsstatus in der Datenbank. Es abstrahiert die API-Kommunikation.




bs-cluster-co.js
sc-bottom-sheet-mgr.js (NEU):
Aufgabe: Verwaltet den Inhalt und die Interaktionen des Bottom Sheets zur  Anzeige von Details zu einem Cluster (z.B. Anzahl der Steine, Adressen) und das Auslösen von Aktionen für dieses Cluster.

bs-gen-co.js
 Verteilerstelle und Zustands-Reset-Punkt für die Bottom-Sheet-Anzeige.

Es ist die erste Funktion, die aufgerufen wird, nachdem ein Nutzer ein interaktives Element auf der Karte bzw im address sheet geklickt hat.

1. : Dispatching 
updateBsForCluster (bs-cluster-co.js):
updateBsForPoi (bs-poi-co.js):
updateBsForNewAddress (bs-newaddress-co.js):

2. Listener-Reset (Zustandsbereinigung)
Dies ist die wichtigste präventive Funktion: Bevor neue Inhalte geladen werden, entfernt das Modul alle potenziell noch existierenden Event-Listener von den Buttons des Bottom Sheets.
bs-newaddress-co.js

bs-poi-co.js :
Aufgabe: Verantwortlich für das Erstellen des Inhalts für das bootom sheet für einzelne POI(Marker) und das Anhängen der entsprechenden Event-Listener an die Interaktionselemente innerhalb dieser Popups.

// gui-address-co.js
// Aufgabe: übergeordnete Verantwortung für die komplette Abwicklung einer Adresssuche

index.html:
Die Anwendung ist als Single-Page-Application (SPA) konzipiert, die eine Leaflet-Karte mit Marker Clustering verwendet, um eine große Anzahl von POIs effizient darzustellen. Der Fokus liegt auf einem mobilfreundlichen, interaktiven und benutzerzentrierten Erlebnis.

Kernmerkmale:
Lade- und Berechtigungsmanagement:
Hintergrund-Preloading 
Standort-Overlay 
Karten- und UI-Initialisierung:
Daten- und Interaktionslogik
Asynchrones Laden der POIs: 
Standortverfolgung: 
Benutzerinteraktion: 
Admin-Modus trigger: 
Refresh-Funktion: (hier nicht ideal)


Aufgabe: 
Hier findet die Initialisierung der Standortfreigabe statt. Die Hauptansicht der Anwendung. Dieses HTML-Dokument stellt den DOM (Document Object Model) für die Karte, die Buttons (Standort, Hinzufügen) und das Bottom Sheet bereit. Es ist der primäre Container, der die JavaScript-Module lädt und initialisiert, um die interaktive Karte anzuzeigen.

insert-poi-co.js
koordiniert die gesamte Logik für das Hinzufügen und Speichern neuer Stolpersteine, indem es die Benutzeroberfläche mit dem Backend-Dienst verbindet.

insert-poi-ui.js
verwaltet die UI-Logik zum Hinzufügen und Bearbeiten von POIs. Es zeigt ein modales Formular an, sammelt die eingegebenen Daten (Name, Geburtsjahr, Koordinaten) und übergibt diese zur Speicherung an einen hinterlegten onSaveCallback. Es ist für die Validierung der Eingaben und das Schließen des Popups zuständig.
map-cluster-mgr.js
 verwaltet alle Interaktionen und den Zustand der Marker-Cluster auf der Karte. Es implementiert die Logik für Cluster-Klicks (Zoomen, Spiderfy, Hervorheben) basierend auf dem Kontext und entscheidet über die Karten-Navigation. Zudem bietet es Funktionen zum gleichzeitigen Aktualisieren des Reinigungsstatus aller Stolpersteine innerhalb eines Clusters, inklusive der visuellen Aktualisierung der Icons und des Cluster-Styles.

map-gen-mgr.js
Zentrale für Karten- und Marker-Management. Es initialisiert die Leaflet-Karte und die Marker-Cluster-Gruppe, ruft iterativ POI-Daten vom Backend ab und erstellt die Marker mit den korrekten Icons. Es implementiert die Haupt-Klicklogik (triggerMarkerClick), um die Steuerung an die Bottom-Sheet-Controller weiterzuleiten, und verwaltet den globalen Karten-Zustand (mapState).


map-poi-mgr.js:
Aufgabe: verantwortlich für das gesamte Management der Informationen&Aktionen, die erscheinen, wenn ein einzelner Stolperstein-Marker auf der Karte angeklickt wird

marker-display-utils.js :
Aufgabe: Liefert die grundlegende Logik zur Farbbestimmung und zum Icon-HTML für einzelne Marker, basierend auf deren last_cleaned-Datum und Patenschaftsstatus. Es sind reine Hilfsfunktionen für die visuelle Darstellung.

marker-mgr.js :
Aufgabe: Verwaltet die Leaflet-Marker-Objekte auf der Karte. Dazu gehört das Finden, Aktualisieren ihrer Daten und das Setzen ihrer visuellen Darstellung (Icons) auf der Karte.


sc-admin-mode.js:
Aufgabe: verwaltet den Admin-Modus der App. Es aktiviert ihn durch mehrfaches Tippen auf ein spezifisches HTML-Element und stellt eine Funktion bereit (getAdminModeStatus), um den Modus abzufragen. So bleibt die Admin-Funktionalität versteckt, aber zugänglich.



sc-settings-ui.js
sc-settings-help.js
sc-settings-co.js
sc-settings-location.js


user-location.js:
Aufgabe: Eine Klasse, die alle Informationen und Funktionen im Zusammenhang mit der aktuellen Benutzerposition kapselt, einschließlich Standortverfolgung, Zentrierung der Karte auf den Benutzer und Abrufen der aktuellen Koordinaten.

sc-utilities.js:
Aufgabe: Stellt allgemeine, wiederverwendbare Hilfsfunktionen bereit, die an verschiedenen Stellen der Anwendung benötigt werden. Dazu gehören Funktionen wie showToast für Benachrichtigungen, is_development zur Überprüfung des Entwicklungsmodus 

ScStone.js:
Aufgabe: Definiert die ScStone-Klasse. Diese Klasse repräsentiert einen Stolperstein als Datenobjekt und kapselt möglicherweise die Logik für spezifische Interaktionen oder Zustände eines einzelnen Stolpersteins (z.B. seinen Reinigungsstatus, Patenschaft). Sie dient als zentrale Datenstruktur für die Steine.


stolperclean.css:
Aufgabe: Die allgemeine CSS-Datei für die gesamte Anwendung, die das Styling und Layout für alle UI-Elemente und Komponenten definiert.

update-poi-details-co.js
Fazit: Dieses Modul stellt sicher, dass eine erfolgreiche Aktualisierung des POI auf allen Ebenen (Backend, Marker-Daten, Bottom Sheet-Details und Kartenansicht) konsistent und sofort sichtbar ist. Es ist darauf ausgelegt, auch komplizierte Leaflet-Marker- und Cluster-Aktualisierungen (Hard-Reset) robust durchzuführen.

update-poi-details-ui.js
Benutzeroberfläche (UI) als Pop-up-Modal zum Bearbeiten der Details eines existierenden Point of Interest (POI), der wahrscheinlich ein "Stolperstein" ist. Singleton-Muster

validate_adress.html:
Aufgabe: Eine separate Seite, die speziell dafür gedacht ist, die Eingabe und Validierung von Adressen/Koordinaten für das Hinzufügen neuer Stolpersteine zu ermöglichen.


