Skip to content

Repository files navigation

Generic Open Data App

Die Generic Open Data App ist die technische Ausgangsbasis für neue Apps im Open Data App Store. Sie enthält das gemeinsame ODAS-Seitenlayout, Hash-Routing, Instanz-Konfiguration und ein optionales Proxy-Muster.

Die Vorlage entspricht der Open Data App Spezifikation. Vor einer Veröffentlichung müssen Fachlogik, Metadaten, Datenmodell, Beschreibung, Screenshots und Icon durch app-spezifische Inhalte ersetzt werden.

Funktionen

  • Single Page Application mit teilbaren Hash-Routen
  • Seiten für Start, Beschreibung, Kontakt, Datenschutz und Impressum
  • sichtbarer Fehlerzustand bei nicht ladbarer Konfiguration
  • HTML-Passthrough für konfigurierte Rich-Text-Seiten
  • konfigurierbares Portal-Logo mit Link zur Startseite
  • lokale Konfigurationsvorschau mit maskierter HTML-Ausgabe
  • direkter Datenabruf oder ODAS-Proxy über proxyAktiv
  • Bootstrap 5.3.8 ohne Build-Schritt

Für wen ist diese Vorlage?

Die Vorlage richtet sich an Kommunen, öffentliche Einrichtungen und Entwicklungsteams, die eine neue Open-Data-App aufbauen oder technisch prüfen möchten. Für die Vorschau ist kein besonderes Datenfachwissen erforderlich; für eine konkrete App werden Kenntnisse der jeweiligen Datenquelle benötigt.

Architektur

App-spezifischer Code gehört nach app/app.js und app/app.css. Die Dateien app/app-base.js, app/app-base.css und app/index.html bilden den austauschbaren Template-Laufzeitkern. Neue Apps sollten diese Base-Dateien nur bewusst und dokumentiert ändern.

Die Funktion app(configdata, enclosingHtmlDivElement) erzeugt den Startseiteninhalt. addToHead() bleibt außerhalb und nach app() definiert. Optionale Bibliotheken werden in konkreten Apps über dedizierte Promise-basierte Loader aus app/app.js geladen.

Konfiguration

Parameter Zweck Pflicht
titel sichtbarer Titel in der Kopfzeile ja
seitentitel Titel des Browser-Tabs ja
icon Portal-Logo in der Kopfzeile ja
beschreibung HTML-Inhalt der Seite „Über diese App“ ja
kontakt HTML-Inhalt der Kontaktseite ja
datenschutz HTML-Inhalt der Datenschutzseite ja
impressum HTML-Inhalt des Impressums ja
fusszeile Inhalt der Fußzeile ja
brandingCSS optionaler CSS-Code der Instanz nein
brandingCSSFile optionale URL zu einer Branding-CSS-Datei nein
urlDaten Katalogseite des Datensatzes nein
apiurl direkter Datei- oder API-Endpunkt nein
proxyAktiv nein für Direktabruf, ja für ODAS-Proxy ja

Jeder von app/app.js gelesene Konfigurationswert muss in app-package.json unter instanz-config deklariert und in odas-config/config.json für lokale Tests gespiegelt sein. Die Generic-App enthält bewusst keine fachliche Datenquelle.

Datenmodell

assets/schema.json ist ein gültiges Frictionless Table Schema als Strukturbeispiel. Abgeleitete Apps ersetzen es vollständig durch die Felder ihrer tatsächlichen Datentabelle und aktualisieren gleichzeitig den daten-Block in app-package.json.

ODAS-Proxy

  • proxyAktiv: "nein": fetchOdasResource() lädt die Ressource direkt.
  • proxyAktiv: "ja": Die Funktion sendet einen POST an den app-lokalen odp-data-Endpunkt und übergibt nur Pfad und Query im URL-kodierten Parameter path.
  • Der App-Basispfad funktioniert für /app/, /app und /app/index.html.
  • Echte Proxy-Antworten lassen sich nur im ODAS-Live-System prüfen. Lokal werden Konfigurationsverdrahtung, Statusanzeige und der Direktmodus getestet.

Lokale Entwicklung

Docker Compose

make build up

Die App ist anschließend unter http://localhost:8090 erreichbar. Für lokale Tests muss der dafür vorgesehene Localhost-Block in app/app-base.js vorübergehend auskommentiert werden, damit odas-config/config.json geladen wird. Vor ZIP-Erstellung oder Live-Auslieferung wird der Block wieder in den kommentierten Template-Zustand versetzt.

VS Code Live Server

Live Server wird aus der Projektwurzel gestartet. Die App liegt dann üblicherweise unter http://127.0.0.1:5500/app/.

{
  "liveServer.settings.host": "127.0.0.1",
  "liveServer.settings.root": "/",
  "liveServer.settings.file": "app/index.html"
}

liveServer.settings.root bleibt /, damit app/ und odas-config/ als Geschwisterpfade erreichbar sind. Auch hier wird der Localhost-Block nur für den Test aktiviert und danach wieder zurückgesetzt.

Prüfung und Auslieferung

node --check app/app.js
node --check app/app-base.js
python3 -m json.tool app-package.json >/dev/null
python3 -m json.tool odas-config/config.json >/dev/null
python3 -m json.tool assets/schema.json >/dev/null
make zip

Das ZIP enthält ausschließlich app/, assets/, app-package.json und CHANGELOG.md. Lokale Dateien unter odas-config/ werden nicht ausgeliefert.

Wichtige Dateien

Datei Zweck
app/app.js app-spezifischer Startseiteninhalt und Proxy-Hilfsfunktionen
app/app.css app-spezifisches Styling
app/app-base.js Konfiguration, Routing und gemeinsame Seitendarstellung
app/index.html gemeinsames, responsives HTML-Grundgerüst
app-package.json Store-Metadaten und Instanz-Konfiguration
assets/schema.json Frictionless-Datenschema
odas-config/config.json lokale Testkonfiguration

Betriebsarten

Die App kann lokal, eigenstaendig hinter einem Traefik-Reverse-Proxy oder ueber den ODAS betrieben werden.

Datenabruf: proxyAktiv

Wert Bedeutung
nein Direkter Abruf der Daten-URL. Standard fuer Entwicklung und Standalone.
ja Abruf ueber den ODAS-Proxy …/odp-data. Nur im ODAS-Live-System verfuegbar.

Bei nein muss die Datenquelle CORS freigeben.

Standalone-Betrieb

Voraussetzung: ein laufender Traefik mit dem externen Docker-Netzwerk proxynet, dem EntryPoint websecure und dem Zertifikatsresolver letsencrypt.

  1. In docker-compose.standalone.yml den Platzhalter app1.example.com durch den echten FQDN ersetzen.
  2. In odas-config/config.json proxyAktiv auf nein belassen.
  3. Starten:
STANDALONE=true make up
STANDALONE=true make logs
STANDALONE=true make down

Im 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.

Auslieferung an den ODAS

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.

Autor

© 2026 Ondics GmbH

About

Die Open Data App "generic" ist eine Vorlage für eigene Open Data Apps

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages