-
Lukas Ruge authoredLukas Ruge authored
Wie unsere Website tickt.
Die Chaotikum Website ist weit mehr als nur ein mit Jekyll betriebener Blog. So hat sie mal angefangen, aber inzwischen ist sie ein Bindeglied in verschiedenen Bereichen der Infrastruktur des Vereins. Man könnte sagen, ist das nicht zu viel? Ist eine Website wirklich immer das richtige Tool? Insbesondere eine statische? Vermutlich ist die Frage berechtigt.
Aber wie so häugfig nimmt man die Software die man gerade hat um Probleme zu lösen, und wir hatten diese Software.
Statischer Content - Semi-Dynamisch
Der Takt der Chaotikum Website ist ein Build alle 30 Minuten.
Die Chaotikum Website wird regelmäßig alle 30 Minuten gebaut. Egal ob sich was ändert oder nicht. Dafür gibt es einen Pipeline-Schedule
* /30 * * * *
Der Grund ist denkbar einfach: Release Zeiten für Blog-Posts oder Videos können für die Zukunft eingetragen werden. Sobald der Zeiotpunkt überschritten ist, werden die Posts auftomatisiert öffentlich. Danach grreifen entsprechende Automatismen, z.B. durch das RSS Tröts im Fediverse usw...
Eine Sammlung von Sammlungen
Um unsere Website zu verstehen, hilft es sich grundsätzlich damit beschäftigt zu haben, wie Static Site Generators üblicherweise arbeiten. Da gibt es natürlich viel varianz, aber sehr, sehr häufig entsteht ein Blog indem man haufenweise Markdown dateien in einen Ordner wirft und ein paar Templates, wie diese dargestellt werden sollten.
So auch bei uns. Die Posts des Blogs finden sich im Ordner _posts
.
Bei vielen Websites ist da mehr oder weniger Schluss. Nicht bei der Chaotikum Website. Wer sich die Datei-Struktur dieses Jekyll-Projekts ansieht bemerkt allerdingsn, die große Menge an weiteren Ordnern, welche alle mit einem Unterstrich beginnen.
_briefing
_categories
_conferencefrab
_conferences
_events
_imagemeta
_includes
_inventory
_layouts
_loan
_loancal
_media
_people
_plugins
_posts
_press
_projects
_sass
_sets
_site
_sponsors
Bis auf wenige ausnahmen finden sich darin viele Markdown-Dateien. Es handelt sich um Sammlungen (Jekyll Collections). Die Ausnahmen sind _includes
und _layouts
(darin befinden sich die html Templates zur Darstellung der Website), _plugins
(Jekyll Plugins), _sass
(CSS für die Seite), _site
(In dem ordner befindet sich die gebaute Seite).
Alle anderen ordner repräsentieren Inhalte der Website in Form von Collections, welche miteinander interagieren. Und große Menge an solchen miteinander interagierenden Sammlungen ist, was das Projekt komplex macht.
Wer einfach nur einen neuen Blogpost schreiben möchte, oder die Beschreibung eines Geräts oder Projektes verbessern will, der wird damit auch meist nicht in Berüfung kommen. Wer aber Templates verbessern will oder neue Logik einbauen möchte, muss sich damit beschäftigen.
Im Folgenden wird ein Überblick über einige Grundgedanken und Wiederkehrenden Elemente gegeben, danach auf andere Kapitel der Doku verwiesen.
UID für (so ziemlich) alles
Fast jedes Element in fast jeder Samlung erhält eine UID im Frontmatter Teil der Markdown-Datei. Dieses wird üblicherweise genutzt, um das Element zu referenzieren. Weil es deswegen wichtig ist, dass jede UID tatsächlich Unique ist, haben wir ein Skript in der Build-Pipeline, die das prüft.