Blog

FFS - Grundlegender Feature-Server

Veröffentlicht am 2026-03-29

FFS – Grundlegender Feature-Server

FFS – Foundational Feature Server
FFS – Foundational Feature Server

Als ich begann, meine eigene Freelance-Plattform aufzubauen, wurde mir schnell klar, dass der übliche Ansatz — CMS, ein paar Plugins, ein JavaScript-Framework, ein Hosting-Dienst — einfach nicht zu meiner Arbeitsweise passt. Ich brauchte etwas, das ich vollständig kontrollieren, bedenkenlos erweitern und zu meinen eigenen Bedingungen betreiben kann.

Also habe ich FFS – Foundational Feature Server entwickelt.

Was FFS ist

FFS ist eine moderne C++-Webplattform, die von Grund auf für Langlebigkeit, Klarheit und Kontrolle konzipiert wurde. Es ist kein Content-Management-System im herkömmlichen Sinne. Es ist eher eine komponierbare Anwendungslaufzeit: ein Server, der unabhängige Komponenten — jeweils eine eigenständige Shared Library — lädt, verwaltet und orchestriert, ohne dass diese voneinander wissen müssen.

Im Kern wird FFS von Wt 4.x angetrieben, einem ausgereiften C++-Web-Framework, das serverseitige Benutzeroberflächen direkt in effizientes HTML kompiliert. Kein JavaScript-Framework, dessen Version eingefroren werden muss, kein npm-Abhängigkeitsbaum, der gepflegt werden will, keine clientseitige Statussynchronisation, die debuggt werden muss. Der Server ist die einzige Quelle der Wahrheit.

Die Architektur in einfachen Worten

Jede Seite einer FFS-Website ist eine Komponente — eine .so-Shared-Library, die zur Laufzeit geladen wird. Wenn ein Besucher /services aufruft, lädt FFS services.ffs, rendert die Seite und liefert HTML zurück. Wenn Sie eine neue Version dieser Komponente bereitstellen, ersetzen Sie eine einzige Datei. Der Rest der Website läuft weiter.

Komponenten teilen nichts außer einem schlanken SDK:

  • JsonDataObject — live-reloadende JSON-Konfiguration mit inotify-Dateiüberwachung
  • Replacer — eine Platzhalter-Engine zur Personalisierung von Inhalten
  • MdRenderer — ein Markdown-Renderer mit Bild-Float, Beschriftungen und \n/\u200b-Zeilenumbruchkontrolle
  • HtmlUtils — sichere, Rich-Text-HTML-Hilfsfunktionen

Die Konfiguration liegt in einfachen JSON-Dateien. Einen Wert ändern, speichern — die Seite aktualisiert sich im Browser innerhalb von Sekunden, ohne Neustart.

Mehrsprachigkeit als Grundprinzip

FFS wurde mit Internationalisierung als erstklassigem Merkmal entwickelt, nicht als nachträglicher Gedanke. Jeder Inhalt kann ein Locale-Overlay haben:

content/services.json        ← Basis (Englisch)
content/services_de.json     ← Deutsche Überschreibungen
content/services_tr.json     ← Türkische Überschreibungen

Locale-Overlays verwenden feldbasiertes Deep-Merge mit id- oder name-Schlüsseln. Sie schreiben nur, was sich ändert. Strukturelle Daten — Icons, URLs, Sichtbarkeits-Flags — bleiben in der Basisdatei und werden automatisch vererbt.

Themes

FFS wird mit drei Themes geliefert — Default (dunkles Marine), Ocean (kühles Blau) und Forest (dunkles Grün) — jeweils mit einem vollständigen Satz von Komponenten-Stylesheets. Ein Theme zu wechseln ist eine einzige JSON-Wertänderung; der Browser erhält nur das Delta-CSS, ohne Seitenneuladen.

Wohin FFS führt

FFS begann als Infrastruktur hinter meiner Freelance-Website. Es entwickelt sich zu etwas Größerem: einer Plattform für den Aufbau unternehmensweiter Web-Präsenzen, die mehrere Anwendungen integrieren — Blog, Dienstleistungskatalog, Leistungsübersicht, Kontaktsystem mit OTP-Verifizierung — in einer einzigen, kohärenten Laufzeitumgebung.

Das Ziel ist nicht, mit WordPress oder Webflow zu konkurrieren. Das Ziel ist, Organisationen, denen Performance, Stabilität und langfristige Eigenverantwortung wichtig sind, eine Alternative zu bieten, die sie nicht zwingt, einer Abhängigkeitskette zu vertrauen, die sie weder inspizieren noch kontrollieren können.

Wenn das nach der Art von Plattform klingt, die Ihre Organisation braucht, spreche ich gerne mit Ihnen.


FFS ist in C++23 mit Wt 4.13 entwickelt, läuft auf Linux und kann als einzelner Container oder als Bare-Metal-Binary bereitgestellt werden.