Flatly

#flatly #opensource

Was ist Flatly und warum braucht jede(r) EntwicklerIn ein Feiertagsprojekt?

Ich bin schon lange auf der Suche nach einem Dateibasierten Blogsystem auf PHP Basis gewesen, bei dem ich ohne viel Schnickschnack mit Markdown Artikel veröffentlichen kann.

Bisher habe ich dafür immer auf den Static Site Generator hugo zurückgegriffen, doch hier missfällt mir eben der statische Teil....es ist zu unflexibel für einige meiner Ideen.

Aus diesem Grund habe ich Flatly entwickelt. Flatly ist mein Feiertagsprojekt 2022 zwischen Weihnachten und Silvester und basiert auf dem Symfony Framework, zusammen mit Parsedown und FrontYAML. Flatly liest aus einem definierten Verzeichnis alle Markdown Dateien aus und erstellt intern ein paar .json Files, mit dessen Hilfe der Seitenaufbau realisiert wird. Dabei werden nur einige YAML Front Attribute vorausgesetzt:

slug: /url-zum-beitrag
title: Lesbarer Titel
date: 2022-12-27T00:00:00 (publishing date, Achtung: Muss unique sein!)
site_type: [static|blog_post]

Wenn ein Artikel aufgerufen wird, wird anhand des Slugs der Zusammenhang zur eigentlichen Markdowndatei hergestellt und diese mit Parsedown in HTML gerendert. Twig als Templateengine übernimmt dann die Darstellung.

Da Twig sehr flexibel ist, kann ich hier jegliches Design umsetzen. Die Navigation erstellt Flatly aus den Metadaten der Markdowndateien automatisch.

Wenn du auch Lust hast deine Website oder deinen Blog (Flatly kann beides out of the box :)) mit Flatly umzusetzen, dann empfehle ich einen Blick in mein github Repository zum Projekt.

Was ist Flatly nicht?

Flatly ist /kein/ Content Management System mit einem Backend! ... Auch wenn ich sicher einen rudimentären Editor für unterwegs noch mit einbauen werde, so hat Flatly kein Backend. Du kannst die Templates direkt im template-Verzeichnis nach deinen Wünschen anpassen und auch mit JavaScript dein Unheil treiben.

Flatly hat nur den Anspruch aus ein paar Markdown Dateien on the fly und ohne viel Heckmeck eine Website zu bauen.

Wie funktioniert das mit der Navigation?

Ganz einfach!

In den entsprechenden Markdown Dateien werden folgende FrontYAML Attribute gesetzt:

nav_visibility: true
nav_weight: 99

nav_visibility sollte selbsterklärend sein und nav_weight dient der Sortierung. Je höher die Zahl, desto mehr Gewicht hat ein Navigationselement. Dabei ist wichtig, das jeder Wert nur einmal vorkommen darf!

Extensions?

Nun kann Markdown vieles, aber leider nicht alles....Rezepte beispielsweise. Da ich hier aber auch hin und wieder Rezepte veröffentliche und dabei den schema.org Standard nutzen möchte, habe ich eine kleine Extension in Flatly entwickelt, welche aus den YAML Meta Daten das schema.org Rezept ausließt und anschließend unter den Beitrag als Rezeptbox darstellt.

Der Vorteil: Man kann die URL einfach nehmen und in jede Kochbuch App einfügen, umso das Rezept zu importieren :)