Skip to content
Snippets Groups Projects
Forked from hub / hub
Loading
Roang's avatar
Roang authored
Zeige aktuellen und nächsten Stream-Titel auf der Startseite an.

See merge request hub/hub!1162
b8287a7f
History

Hub/Gateway (und Plain UI Frontend)

Der Hub besteht aus mehreren Komponenten welche für unterschiedliche Funktionen gedacht sind

  • Backoffice: Erfassung und Verwaltung von Informationen inkl. Bearbeitung von Reports
  • PlainUI: Es handelt sich um eine Darstellung der Konferenz-Inhalte als simples Frontend ohne viel Schnick-Schnack.
  • Core: Beinhaltet die Datenmodelle und Funktionen, die sowohl im Backoffice als auch in der PlainUI verwendet werden.
  • Metanav/Navbar (not published yet): Bietet eine von allen Seiten gemeinsam einbindbare Navigationsleiste im jeweiligen Congress-Design.

Datenmodell

Grobes Datenmodell

als PDF: Grobes Datenmodell und automatisch exportiertes ER-Diagramm (kann Spuren von Unübersichtlichkeit enthalten)

PlainUi Structure

  • jinja2/plainui
    • components
    • tbd.
  • styles
    • components: components styles, die in hub.scss eingebunden werden
    • utils: settings, die selbst keinen output generieren (z.B. Variablen, Mixins), damit sie in unterschiedlichen files verwendet werden können
    • hub.scss: Hauptdatei, welche anschließend in CSS konvertiert wird
  • static/plainui
    • img: statische Bilder
    • fonts: importierte Schriften
    • das generierte CSS

REST API

Grundsätzlich sind alle hier aufgeführten Endpoints per GET abrufbar (Restriktionen bei nicht-öffentlichen Events, etc. sind möglich). Manche Endpunkte sind zusätzlich "schreibbar" und können zur Anlage bzw. Bearbeitung der jeweiligen Daten genutzt werden.

Testinstanz: https://hub.test.c3voc.de/api/ / https://staging.hub.c3events.de/api/
Prodinstanz: https://api.events.ccc.de/congress/2024/

Kategorie Endpunkt GET POST PUT DEL Beschreibung
Auth /auth/get-token x Ausstellen eines API-Tokens
Persönlich /me x x eigenes Profil / Settings
Persönlich /me/badges x Liste aller Badges/Achievements
Persönlich /me/events x Favorisierte Events
Persönlich /me/events/<uuid>/ x x Events (ent-)favorisieren
Persönlich /me/friends x x x Liste der Buddies
Persönlich /me/received-messages/ x Übersicht empfangener PN
Persönlich /me/received-messages/<uuid> x Details einer empfangenen PN
Persönlich /me/send-message x Send a new PN
Persönlich /me/sent-messages/ x Übersicht gesendeter PN
Persönlich /me/sent-messages/<uuid> x Details einer gesendeten PN
Persönlich /me/delete-message/<uuid> x PN löschen
Konferenz / x Metadaten des Konferenz
Konferenz /tags x Liste aller Tags auf der Konferenz
Konferenz /tracks x x Liste der Tracks
Konferenz /track/<slug>/ x x x Details des Tracks
Konferenz /assemblies x x Liste der Assemblies
Konferenz /assembly/<slug>/ x x x Details der Assembly
Konferenz /assembly/<slug>/events x x Liste der Events der Assembly
Konferenz /assembly/<slug>/rooms x x Liste der Räume der Assembly
Konferenz /rooms x Liste aller Räume (über alle Assemblies).
Konferenz /room/<uuid>/ x Details des Raums
Konferenz /events x Liste aller Events
Konferenz /event/<uuid>/ x x x Details des Events als Hub Event JSON
Konferenz /event/<uuid>/schedule[.json] x x x Details des Events als Schedule JSON
Konferenz /event/<uuid>/attachments x x Anhänge
Konferenz /event/<uuid>/attachments/<id>/ x x x Download der zugehörigen Datei
Konferenz /schedule[.xml|.json] x Liste aller Events als Schedule XML/JSON
Konferenz /assembly/<slug>/schedule[.xml|.json] x Liste aller Events der Assembly als Schedule XML/JSON
Konferenz /room/<uuid>/schedule[.xml|.json] x Liste aller Events des Raumes als Schedule XML/JSON

Per POST werden neue Einträge angelegt, per PUT bestehende verändert. Details zu den einzelnen Endpunkten folgen in Kürze™.

API-Beispiel mit cURL

Zuerst einen Token generieren:

curl https://{API_URL}/api/auth/get-token -H "Content-Type: application/json" -X POST --data '{"username": "{USERNAME}", "passwort": "{PASSWORD}"}'

Mit diesem Token können dann Endpunkte aufgerufen werden die eine Authentifizierung erfordern:

curl https://{API_URL}/api/me -H "Content-Type: application/json" -H "Authorization: Token {API_TOKEN}"

Development

see Development.md