Gerrit Schröer

Essencium – unsere Open Source Boilerplate

Was ist Essencium?

Essencium ist eine Boilerplate / Fundament, das Grundfunktionalitäten bereitstellt, um neue Projekte schneller aufsetzen zu können. Sobald Essencium eingerichtet ist, können die Entwickler:innen direkt mit den projekt-spezifischen Implementierungen beginnen. Zu den Grundfunktionalitäten gehören User-Management, Rechte- und Rollen-Management sowie Mehrsprachigkeit. Der Name „Essencium“ ist eine Kombination aus dem Wort „Essence“ und „Caesium“. Zum einen soll Essencium den Kern für Projekte darstellen, die darauf aufsetzen (die Essenz), zum anderen wollen wir Frachtwerk im Namen verankern. „Caesium“ kommt nämlich aus dem Lateinischen und bedeutet „Blaugrau“, wobei Blau und Grau zwei Farbbestandteile unseres Logos sind.

Motivation

Wir nutzen am liebsten Software, welche die Open-Source-Community dankbarerweise mit Mühe bastelt und kostenfrei zur Verfügung stellt. Mit Essencium möchten wir als Organisation der Community nicht nur als Nutzer:innen beistehen, sondern auch proaktiv unseren Teil beitragen. Wir freuen uns, wenn wir mit unserer Arbeit unterstützen und auch fleißige Contributor willkommen heißen können.

Es gibt bereits einen Vorläufer von Essencium, den wir intern „Starter“ getauft hatten. Dieser ist mit der Zeit in die Jahre gekommen und dessen Architektur und Design haben nicht mehr in unser Konzept gepasst. Des Weiteren ist dieser closed-source. Mit der Möglichkeit, von Grund auf anzufangen, haben wir auch die UI und UX verbessert und bedienen uns der Component Library Mantine. Für uns war wichtig, ein minimalistisches Design zu entwerfen, das unkompliziert anpassbar ist. All die Learnings aus Projekten, die auf dem internen Starter aufgebaut wurden, konnten wir in Essencium mit einfließen lassen.

Ebenso wichtig war für uns die Developer Experience (DX). Es soll Freude bereiten, an und mit Essencium zu arbeiten. Demnach haben wir uns entschlossen, State-of-the-Art Libraries und Frameworks zu nutzen. Das ganze Projekt baut auf Next.js auf und bietet eine Menge innovativer Funktionalitäten wie z. B. file-system based routing, Optimierungen für Bilder, Schriftarten und Skripte, diverse Rendering-Möglichkeiten und auch die Möglichkeit, einen Node.js / API Server innerhalb der Codebase zu implementieren. Das gibt uns viel Flexibilität und ermöglicht uns. unsere Software noch besser an Anforderungen anzupassen.

Funktionalitäten

Wie bereits weiter oben erwähnt, ist der Kern von Essencium die Verwaltung von Nutzer:innen, Rechten, Rollen sowie Sprachen. Das Ziel war es, die Verwaltung so zugänglich und minimalistisch wie möglich zu gestalten und gleichzeitig den Raum für individuelle Erweiterungen zu gewähren. Neben dem Kern bietet Essencium außerdem die Möglichkeit, zwischen Light-, Dark- und System-Mode zu wählen und auch auf mobilen Endgeräten Anwendungen benutzerfreundlich zu bedienen. Auch für Power-User haben wir eine Spotlight Search implementiert. So ist es möglich, schnell und nur mit der Tastatur innerhalb der Anwendung zu navigieren.

Wir finden es wichtig, für Nutzer:innen jederzeit die Möglichkeit zu bieten, Feedback innerhalb der Anwendung zu geben, z. B. für eine konkretere Fehlerbeschreibung. Demnach haben wir ein dezentes Feedback-Widget eingebaut, das die Nutzer:innen öffnen können, um ihre Anliegen mitzuteilen. Aber nicht nur Text ist möglich, es kann vielmehr auch direkt ein Screenshot der aktuellen Seite gemacht und an uns übermittelt werden.

Architektur, Wartbarkeit & Dokumentation

Für uns bestand die Herausforderung u. a. darin, eine Boilerplate zu entwickeln, die robust und wartbar ist. Das bedeutet, dass auf Essencium basierende Projekte so einfach wie möglich Updates erhalten sollen. Wir haben uns demnach dafür entschieden, die Kern-Funktionalitäten in Form von Frontend-Komponenten in eine eigene Library auszulagern und in der npm-Registry bereitzustellen. Wurde bspw. ein Fehler in einer Essencium-Komponente behoben, so kann durch ein simples Update des Library-Packages diese Fehlerbehebung in ein spezifisches Projekt implementiert werden. Das erlaubt uns, Projekte stetig mit Updates zu vorsorgen und die Qualität auch langfristig zu halten.

Essencium umfasst außerdem diverse Software-Tests, um nicht nur einzelne Komponenten auf deren Inputs und Outputs zu testen, sondern auch ganze Workflows, die ein:e Nutzer:in durchläuft, zu testen wie z. B. das Anlegen eines neuen Nutzers oder das Aktualisieren einer Rolle.

Ein weiterer wichtiger Bestandteil ist die Dokumentation des Projektes. Um Contributor und Nutzer:innen an die Hand nehmen und so sauber wie möglich in die Codebase einarbeiten zu können, war es uns wichtig, die Dokumentation umfangreich und detailliert zu verfassen. So haben wir bspw. eine Seite für Style-Guidelines, How-Tos für neue Komponenten und Seiten, architektonische Erläuterungen etc.

Einsatz und Weiterentwicklung

Frachtwerk hat mittlerweile einige Projekte, die erfolgreich auf der Essencium-Basis laufen. Anhand dieser Projekte erkennen wir regelmäßig Potentiale, Essencium noch robuster und reifer zu gestalten. Demnach ist das Open-Source-Projekt in einem kontinuierlichen Work-in-progress-Stadium, gleichzeitig aber stabil, um es in einer Produktivumgebung zu nutzen. Um so schnell und einfach wie möglich neue Essencium-basierende Projekte aufzusetzen, haben wir ein npm-Package geschrieben, das ein brandneues Projekt aufsetzt (siehe create-essencium-app). Jede:r ist herzlich willkommen mitzumachen und Feedback zu geben.

Über Frachtwerk

Die Frachtwerk GmbH wurde im Jahr 2017 in Berlin als Kombination aus Unternehmensberatung und Softwareentwicklung mit Fokus auf Logistik und Mobilität gegründet. Zu den Projektschwerpunkten gehören Software-Entwicklung, Software-Betrieb, Ablösung von Altsystemen, Data Analytics und Agile Organisationsentwicklung. An zwei Standorten, in Berlin und Karlsruhe, arbeiten insgesamt 40 Mitarbeiter:innen daran, das Beste für ihre Kund:innen zu ermöglichen.

Noch Fragen?

Bereit, das neue Projekt anzugehen? Dann lass uns loslegen! Kontaktiere uns jetzt und entdecke, wie wir dich unterstützen können. Lass uns gemeinsam die Welt von morgen gestalten. digital. nachhaltig.

Mehr Futter für Leseratten