Interaktive Visualisierung von Spielplatzdaten für den Open Data App Store. Entspricht der Open Data App-Spezifikation. Mehr unter https://github.com/open-data-apps
Single Page Application mit Logo, Menü, Impressum/Datenschutz/Kontakt-Seiten und Fußzeile. Die Konfiguration wird vom ODAS geladen. Inhalte:
- Interaktive Kartenansicht mit Leaflet.js/OpenStreetMap
- Tabellenansicht der gefilterten Spielplätze
- Volltextsuche nach Name und Adresse
- Filter nach Ortsteil und Art
- Zusatzfilter für Barrierefreiheit und Ballspielen
- Ergebniszähler und Marker-Popups mit Kerndaten
Unterstützt CSV aus Open-Data-Quellen.
- Delimiter-Erkennung für Semikolon und Komma
- Quote-sicheres Parsing inklusive Escaped-Quotes
- Verarbeitung von Proxy-Antworten als Rohtext oder JSON-Wrapper mit content-Feld
Spielplatz-Datensätze mit Geokoordinaten und optional variierenden Feldnamen. Die App normalisiert gängige Varianten automatisch.
| App-Feld | Erwartete Inhalte | Unterstützte Feldnamen (Auszug) |
|---|---|---|
| name | Name/Adresse | name, bezeichnung, adresse, strasse |
| ortsteil | Ortsteil/Bezirk | ortsteil, bezirk |
| plz | Postleitzahl | plz, postleitzahl |
| art | Typ/Art | art, spielplatzart, anlagenart |
| flaeche | Fläche | groesse, flaeche, größe |
| barrierefrei | Barrierefrei-Flag | behindertengerecht, barrierefrei |
| ballspielen | Ballspielen-Flag | ballspielen, bolzen |
| tischtennis | Tischtennis-Flag | tischtennis, tischtennis_anzahl |
| schliesszeiten | Zeiten | schliesszeiten, öffnungszeiten |
| lat/lon | Geokoordinaten | lat/lon, latitude/longitude, breitengrad/laengengrad |
Hinweis: Boolesche Felder werden aktuell mit J als positiv ausgewertet.
Diese App hilft Familien, den passenden Spielplatz in Berlin zu finden. Filtern Sie nach Ortsteil, Ausstattung und Barrierefreiheit.
Voraussetzungen: Docker / Docker Compose, Make
make build upApp läuft lokal auf http://localhost:8090.
Konfiguration wird bei lokaler Entwicklung aus odas-config/config.json geladen.
| Datei | Beschreibung |
|---|---|
| app/app.js | Hauptlogik: Datenladen über Proxy/Fallback, CSV-Parsing, Filter, Tabelle und Leaflet-Karte |
| app-package.json | App-Metadaten und Instanz-Konfigurationsfelder für den ODAS |
| assets/odas-app-icon.svg | App-Icon |
| odas-config/config.json | Lokale Konfiguration für die Entwicklung |
| docker-compose.yml | Lokale Container-Orchestrierung (Nginx + Volumes) |
| Parameter | Beschreibung | Pflicht |
|---|---|---|
| apiurls | URLs zu Datenressourcen. Eintrag spielplaetze: direkte URL zur CSV-Ressource |
ja (Eintrag spielplaetze) |
| urlDaten | URL zur Datensatzseite im Open Data Portal | ja |
| titel | Titel in der App-Kopfzeile | ja |
| seitentitel | Browser-Tab-Titel | ja |
| icon | Icon in der Titelzeile | ja |
| kontakt | Inhalt der Kontaktseite (Markdown) | ja |
| beschreibung | Inhalt der Seite Über diese App (Markdown) | ja |
| impressum | Inhalt der Impressumsseite (Markdown) | ja |
| datenschutz | Inhalt der Datenschutzseite (Markdown) | ja |
| fusszeile | Text in der Fußzeile | ja |
| sprache | App-Sprache (de) | ja |
- Datenabruf erfolgt direkt aus dem Browser gegen die konfigurierte
apiurls.spielplaetze. - Die konfigurierte Datenquelle muss CORS freigeben.
Die App kann lokal, eigenstaendig hinter einem Traefik-Reverse-Proxy oder ueber den ODAS betrieben werden.
Die App laedt die Datenquelle standardmaessig ueber den ODAS-Proxy (proxyAktiv: ja), da die konfigurierte Quelle (www.berlin.de) keinen CORS-Header sendet. Nur mit einer CORS-freigegebenen Quelle kann auf Direktabruf (proxyAktiv: nein) umgestellt werden. Ueber den Konfigurationsschalter proxyAktiv kann je
Instanz auf den ODAS-Proxy umgeschaltet werden; seit dem Plattform-Update vom 2026-08-24
erlaubt der Proxy Datenabrufe fuer jede Quelle-Origin, die in den konfigurierten
apiurls steht — also auch fuer die Fremdquelle www.berlin.de.
Voraussetzung: ein laufender Traefik mit dem externen Docker-Netzwerk proxynet,
dem EntryPoint websecure und dem Zertifikatsresolver letsencrypt.
- In
docker-compose.standalone.ymlden Platzhalterapp1.example.comdurch den echten FQDN ersetzen. - Starten:
STANDALONE=true make up
STANDALONE=true make logs
STANDALONE=true make downIm Standalone-Betrieb entfaellt die lokale Portfreigabe; Traefik terminiert TLS und
leitet auf den internen Nginx-Port 80 weiter. Die Konfiguration wird aus derselben
odas-config/config.json gelesen wie in der Entwicklung und von Nginx unter /config
ausgeliefert.
Beim Aufruf dieser App werden folgende externe Server kontaktiert:
tile.openstreetmap.org— Kartenkacheln (OpenStreetMap)nominatim.openstreetmap.org— Adress-Suche (Nominatim); übertragen: Adressbestandteile der Spielplätze ohne Koordinaten, IP-Adresse, User-Agent; Abruf nur bei fehlenden Koordinaten
Diese Anbieter bleiben auch im Standalone-Betrieb extern; ein vollständig autarker Betrieb ohne Internetzugang ist derzeit nicht möglich. Alle Programmbibliotheken werden lokal aus app/vendor/ ausgeliefert und nicht mehr extern geladen.
make zip erzeugt das Liefer-ZIP mit app/, assets/, app-package.json und
CHANGELOG.md. Die Infrastrukturdateien (Dockerfile, docker-compose*.yml,
nginx.conf, Makefile) sind nicht Teil der Auslieferung. Das ZIP ist ein Bauartefakt und wird nicht mitversioniert, sondern bei Bedarf mit make zip erzeugt.
© 2026, Ondics GmbH

