Skip to content

Instantly share code, notes, and snippets.

@johannschopplich
Last active February 7, 2025 10:28
Show Gist options
  • Save johannschopplich/86519aee0e1f2747aa567047d01c2829 to your computer and use it in GitHub Desktop.
Save johannschopplich/86519aee0e1f2747aa567047d01c2829 to your computer and use it in GitHub Desktop.
Bücherspur Flowchart

Bücherspur Flow

Kirby CMS & Stationen

Im Kirby CMS können Benutzer Touren und Stationen anlegen und bearbeiten. Jede Station enthält neben Textinhalten auch einen POI-Datensatz. Dieser POI-Datensatz ist für die Nutzer schreibgeschützt, da er von der externen Destination One-Datenbank importiert wird. Anhand eines POI-ID-Feldes wird eine Verbindung zwischen der Station und dem entsprechenden POI hergestellt. Über einen Button im Kirby Panel können Sie gezielt POI-Daten importieren. Wird der Button betätigt, erfolgt ein Aufruf des Workers, der die Datenaktualisierung durchführt.

Der Abruf von POI-Daten von Destination One erfolgt auf Abruf. Alle Daten vom Frontend werden immer von Kirby geladen.

Worker

Der serverlose Worker kümmert sich um sämtliche Logik rund um die POI-Daten. Er kommuniziert direkt mit der externen Destination One-Datenbank und stellt über zwei unterschiedliche Routen sicher, dass die Daten synchronisiert werden:

  • Die Route /destination-one/:id/poi holt gezielt die POI-Daten zu einer bestimmten POI-ID, die auf der Station hinterlegt wurde.
  • Die Route /hooks/destination-one/import ermöglicht den Batch-Import, bei dem alle POIs mit dem Keyword „buecherspur“ aus der Destination One-Datenbank abgerufen und den zugehörigen Stationen zugeordnet werden.

Zudem übernimmt der Worker über die Routen /hooks/typesense/import und /search/query die Aufgaben rund um die Suchfunktionalität. Dabei werden Daten aus Kirby abgerufen, über Typesense indiziert und suchbar gemacht.

Typesense Suchmaschine

Typesense wird verwendet, um eine schnelle und flexible Suchfunktion für die Stationen bereitzustellen. Dabei werden Stationen-Daten durch den Worker aus Kirby extrahiert, in den Typesense-Index geschrieben und über die Such-Query (/search/query) wieder abrufbar gemacht. Dies ermöglicht es der Frontend-Anwendung, stationenbezogene Inhalte per Textsuche zu finden.

Frontend

Die Web-App interagiert in zweierlei Hinsicht mit dem System:

  1. Über KQL-Abfragen bezieht sie Stationen-Daten direkt aus Kirby.
  2. Gleichzeitig werden Suchanfragen an den Worker gestellt, der die Suche in Typesense durchführt und Ergebnisse (wie Titel, URI, Inhalt) zurückliefert.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

Tech-Stack

Kirby CMS

  • Open-Source, aber für kommerziellen Einsatz Lizenz benötigt
  • PHP-Server benötigt

Worker

  • Dank Nitro universell deploybar
  • Build je nach Umgebung
    • Cloudflare Worker präferiert
    • kann aber auch für Node.js gebaut werden

Typesense

  • Open-Source-Lösung
  • Hostbar über die Typesense Cloud oder als Docker-Container über VPS oder Anbieter wie fly.io

Frontend

  • Statische Website (kein serverseitiges Rendering)
  • Deploybar je nach Wunsch
    • Cloudflare Pages präferiert,
    • aber auch auf jedem VPS deploybar

Destination One

  • Externer Service, der POIs pflegt
  • Der Import aller POIs erfolgt auf Anfrage aus dem Kirby Panel heraus
    • entweder von einer Station aus
    • oder für Batch-Import von Site-Ebene aus
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment