Blog lernginx – Open-Source-LMS für die Mittel- und Oberstufe, das ich gerade veröffentlicht habe Geschrieben von Adam Muiz 29 Jun 2026 Aktualisiert: 06 Aug 2026 4 Min. gelesen Nach mehreren Wochen der Umgestaltung und Bereinigung des Codes habe ich heute endlich lernginx als Open-Source-Projekt auf GitHub veröffentlicht. Dies ist ein Learning Management System (LMS) für die Mittel- und Oberstufe, das ich ursprünglich für das private Projekt eines Kunden erstellt habe.Ursprünglich hieß dieses Projekt intern SCCR NextGen – ein ziemlich komplexes Online-Lernsystem: Es gab Inhaltsverwaltung, Registrierung von Studentenmodulen, Lehreraufgaben, Hochladen von Profilfotos, Zurücksetzen von Passwörtern über WhatsApp und verschiedene andere Funktionen, die normalerweise in kommerziellen LMS zu finden sind.Das Problem besteht darin, dass die Codebasis immer noch mit der Identität des Kunden vermischt ist: Firmenname, Telefonnummer, Mitarbeiterfotos, indonesische Sprache in der Benutzeroberfläche – im Grunde kann sie nicht direkt veröffentlicht werden. Anstatt einzeln um Erlaubnis zu bitten, habe ich mich für eine vollständige Umgestaltung entschieden: Alle Identitäten entfernen, auf generisches umstellen, vollständiges Englisch der Benutzeroberfläche, dynamisches Routing aus der Datenbank.Was ist Lernginx?lernginx ist ein webbasiertes LMS, das mit Vanilla PHP 8.4, MySQL/MariaDB und Nginx erstellt wurde. Kein Framework, kein Composer, keine Node.js-Build-Schritte. Alles reines prozedurales PHP + Vanille-JavaScript. Dies geschieht mit Absicht – damit es leichtgewichtig und leicht verständlich ist und auf minimalen Servern ausgeführt werden kann.Lernginx-Homepage-Anzeige mit Heldenbereich und Programmnavigation.Tech-Stack KomponentenTechnologie BackendPHP 8.4 (prozedural, PDO) DatenbankMySQL/MariaDB (InnoDB, utf8mb4) FrontendVanilla PHP, Vanilla JS, CSS EditorQuill-Rich-Text-Editor ServerNginx mit Rewrite-Regeln für saubere URLs TestenPlaywright mit Chromium Headless (36 E2E-Tests) Hervorgehobene FunktionenRollenbasierter ZugriffDrei Rollen mit ihren jeweiligen Dashboards: Admin (vollständige Kontrolle), Lehrer (Inhalt verwalten + Schüler zuweisen) und Student (Module registrieren + Inhalte anzeigen). Jede Rolle hat unterschiedliche Zugriffe und Seiten.Admin-Dashboard nach der Anmeldung.Programm- und KategoriemanagementDas Lernprogramm (Mathematik, Naturwissenschaften, Sprache, Kunst) ist nicht fest codiert, sondern wird automatisch aus der Kategorientabelle in der Datenbank generiert. Der Administrator muss lediglich die Hauptkategorie hinzufügen und sie wird sofort als neue Programmseite angezeigt. Sie müssen nicht jedes Mal eine neue PHP-Datei erstellen, wenn Sie ein Programm hinzufügen möchten.Programmseite, die die Hauptkategorien der Datenbank anzeigt.Content-Management-SystemVervollständigen Sie CRUD für Beiträge, Seiten, Kategorien und Tags. Der Editor verwendet Quill – einen Rich-Text-Editor, der leistungsstark genug ist, um Lernmaterialien zu schreiben. Außerdem gibt es eine automatische Slug-Generator-Funktion, Auszüge, vorgestellte Bilder, Miniaturansichten und YouTube-Einbettung.Inhaltsverwaltung – Liste der Beiträge mit Filtern und Status.Registrierung von StudentenmodulenStudenten können sich für verfügbare Programme anmelden, Lehrer können Module manuell zuweisen. Es gibt ein flexibles Genehmigungssystem – es kann automatisch erfolgen oder eine Überprüfung durch einen Lehrer erfordern. Geeignet für Schulszenarien, die eine Einschreibungskontrolle erfordern.Profil- und Foto-UploadDas Schüler-/Lehrerprofil kann vollständig ausgefüllt werden: Foto (automatische Konvertierung in WebP), Telefonnummer (zum Zurücksetzen des Passworts über WhatsApp), Adresse, Geburtsdatum, Herkunftsschule, Hauptfach, NISN. Fotos werden direkt per Drag & Drop oder Dateiauswahl hochgeladen – mit Vorschau vor dem Hochladen.URL-Routing bereinigenEs gibt keine fehlerhaften Abfragezeichenfolgen. URLs verwenden Nginx-Rewrite-Regeln, die Pfade wie /mathematics/, /dashboard/post/mathematics/intro-algebra/ erzeugen. Der Administrator hat auch eine saubere URL über /dashboard/topic/{slug}/ und /dashboard/programs/.Beitragsdetails anzeigen – Kategorie, Autor und Lerninhalt.Warum Open Source?Ehrlich gesagt wäre dieses Projekt zu schade, wenn es nur auf der Festplatte liegen würde. Die Codestruktur ist (nach der Umgestaltung) ziemlich ordentlich, die Dokumentation ist ziemlich vollständig und es gibt 36 E2E-Tests, die alle ausgeführt werden. Vielleicht braucht jemand ein einfaches LMS, ohne Moodle installieren oder Google Classroom kaufen zu müssen.Abgesehen davon wird bei Open Source, wer weiß, vielleicht jemand einen Beitrag leisten – indem er Funktionen hinzufügt, Fehler behebt oder es auf ein anderes Framework portiert. Zumindest kann dieses Repository als Referenz für diejenigen dienen, die natives PHP + Nginx-Routing + LMS-Architektur erlernen.Direkt ausprobierenRepository klonen, SQL importieren und ausführen:git clone https://github.com/adammuizweb/lernginx.git mysql -u root -e "CREATE DATABASE lernginx" mysql -u root lernginx < database/schema.sql mysql -u root lernginx < database/seed.sql cp app/.env.example app/.env # Edit DB credentials di app/.env # Arahkan root Nginx ke public/ Demokonto in Seed-Daten verfügbar: Admin: [email protected] / PasswortLehrer: [email protected] / PasswortStudent: [email protected] / Passwort SchließungDies ist kein perfektes Projekt – es gibt immer noch einige Teile, die poliert werden müssen, eine vollständigere Installationsdokumentation und möglicherweise ein Datenbankschema, das verbessert werden könnte. Aber für ein Nebenprojekt, das man beim Kaffeetrinken erledigen kann, ist es nicht schlecht.Wenn jemand es versucht oder einen Fehler findet, können Sie gerne ein Issue auf GitHub eröffnen oder direkt eine Pull-Anfrage stellen. Das Repo befindet sich unter github.com/adammuizweb/lernginx.Oh ja, die erste Veröffentlichung enthält bereits 9 Screenshots, die direkt auf der Veröffentlichungsseite zu sehen sind.