You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Directus ist eine Open-Source-Datenplattform, die die Datenverwaltung und den Datenzugang vereinfacht. Sie ermöglicht es Teams, unabhängig von ihren technischen Kenntnissen, mühelos mit Datenbanken und digitalen Datenbeständen zu arbeiten. Mit Directus können Sie eine Verbindung zu Ihrer SQL-Datenbank herstellen und CRUD-Operationen, Benutzerverwaltung, komplexe Abfragen, Webhooks und Automatisierung durchführen. Es bietet eine flexible und erweiterbare Architektur, die REST- und GraphQL-APIs, CLI-Tools und ein JavaScript-SDK unterstützt. Directus fördert die Kontrolle durch die Entwickler, die Skalierbarkeit und die Anpassungsoptionen und eignet sich daher für Headless CMS, Backend-as-a-Service, Datenmanagement und Analyseprojekte. Es handelt sich um eine datenorientierte Lösung ohne Herstellerbindung und mit umfassender Dokumentation.
Im Kontext der Mobilitätslösung dient Directus als Backend-as-a-Service bzw. Headless CMS.
Es bildet die zentrale Datenhaltung des Systems, gepaart mit dem nativen Dirctus-CMS Frontend, dar.
Um die Funktionalitäten für Mobility-Lösung abzubilden, wurde Directus mittels Extensions in seinem Fuktionsumfang erweitert.
Dazu gehören Extensions der folgenden Kategorien:
- Endpunkte
- sog. Hooks
- Module
- Views
Die entwickelten Extensions befinden sich im Ordner code
Beschreibung
Ordnerstruktur
code - dieser Ordner enthält die Extensions in JavaScript/TypeScript.
extensions - hier erwarter Directus die kompilierten Extensions.
http - Dieser Ordner enthält .http-Dateien, die für manuelle API-Tests genutzt werden können.
permissions - Die Konfiguration der Berechtigungen der einzelnen Tabellen im fertigen Directus-System werden hier gepflegt.
postman - Dieser Ordner enthält .json-Dateien, die mittels Import in Postman für manuelle API-Tests genutzt werden können.
scripts - Dieser Ordner enthält Installations und Build-Skripte.
uploads - Dieser Ordner enthält das Datenmodell (Tabellen), die in Directus für das lauffähige System nötig sind.
Docker Container
Für das Projekt existieren zwei Docker Container.
Directus-Bootstrap
Directus-Extensions
Directus-Bootstrap
Dieser Container wird lediglich für das initiale Aufsetzen der Datenbank (Anwendung von sog. Datenbank-Migrationen) benötigt. Grund für eine Aufteilung in einen eigenen Container ist die Unabhängigkeit von den Extensions, die teilweise zur Startzeit bereits auf bestehende Datenstrukturen zugreifen müssen. Sind diese noch nicht vorhanden, laufen sie in Fehler. So ist der Installationsprozess in zwei Docker Container unterteilt.
Directus-Extensions
Dieser Container enthält alle benötigten, "compilierten" Extensions, die für die Abbildung der Funktionalität des Mobilitätssystems benötigt werden. Dazu gehören:
Name
Typ
Beschreibung
custom-endpoints
Endpoint
Zusätzliche Endpunkte für REST-API. Z.b. Abfrage von OperatingTimes für Zeitraum X bis Y
mphooks
Hooks
Aktionen, die bei Veränderung von Daten in Tabellen automatisch ausgelöst werden. Bsp.: Bus-Position wird aktualisiert und mit dem Routing synchronisiert (mittels RabbitMQ)
routing-hooks
Hooks
Eigene Extension für die Herstellung der Kommunikation mit dem Routing - Abbildung aller Events zwischen Routing/Directus
system-push-endpoint
Endpoint
Zusätzliche Endpunkte, um Push-Benachrichtigungen an Nutzer/Fahrer zu senden. Sucht nach Tokens der jeweiligen Nutzer einer Gruppe und sendet Text an FCM-Service
system-push-module
Module
Einbindbares Modul in die Directus-Oberfläche, um Funktionalität für System-Push-Benachrichtigungen visuell abzubilden
Einrichtung - lokal
Um Directus lokal einrichten zu können, sind folgende Dinge zu tun
Bauen der Extensions
Grundkonfiguration von Zugangsdaten, API-Keys, ...
Hochfahren der Docker container (zunächst Bootstrap, danach Extensions)
Bauen der Extensions
Die Extensions liegen in Form von JavaScript bzw. TypeScript im Ordner code vor.
Um die Extensions bauen und für Directus nutzbar machen zu können, müssen zunächst die Build-Tools installiert werden. Dies geschieht mittels des Skriptes npm_install.sh. Es navigiert automatisiert in alle Extension-Ordner und installiert die erforderlichen Build-Tools mittels
npm install.
Im Ordner scripts befinden sich sowohl Build-Skripte für die einzelnen Extensions, als auch ein Build-Skript, das alle Extensions nacheinander baut.
Die fertigen Extensions werden automatisiert in den Ordner extensions kopiert.
Zunächst wird die Datenbank aus docker-compose mittels docker-compose -f docker-compose.yml up -d "db" hochgefahren. Ist diese vollständig hochgefahren, kann Directus
in der Bootstrap-Version hochgefahren werden. Innerhalb des Containers muss nun der Datenbank-Snapshot angewandt werden. Dieser enthält das komplette Datenmodell, auf dem das System aufbaut. Für die Anwendung des Snapshot dient das Skript schema_apply.sh, das innerhalb des gestarteten Containers ausgeführt werden muss.
Ist die Anwendung des Snapshots abgeschlossen, kann Directus-Bootstrap gegen Directus-Extensions ausgetauscht werden.
Daraufhin kann das komplette docker-compose mittels docker-compose -f docker-compose.yml up -d hochgefahren werden. Dies schließt einen RabbitMQ-Broker sowie weitere Komponenten wie Redis etc. mit ein.
Environment Variablen
Folgende Environment-Variablen können bzw. müssen für Directus gesetzt werden