Einleitung
Lunaria ist kein Framework im klassischen Sinne, sondern ein praxisnahes Lern- und Prototyping-System. Ziel ist es, moderne Technologien wie Messaging, Storage oder Web-Rendering mit einer einfachen, menschenlesbaren Skriptsprache steuerbar zu machen. Die Plattform kombiniert eine Go-basierte Laufzeitumgebung mit der Skriptsprache Lua – leichtgewichtig, erweiterbar und ideal zum Experimentieren.
Im Zentrum steht die Idee:
Komplexe Systeme werden erst wirklich verstanden, wenn man sie selbst steuern kann – und das mit minimaler Einstiegshürde.
Architektur und Philosophie
Lunaria basiert auf einem klaren, modularen Prinzip: Go bildet den technischen Unterbau – stabil, performant und sicher. Lua dient als Schnittstelle für Lernende, Entwickler oder Maker, die Funktionen aufrufen, Module kombinieren oder kleine Workflows aufbauen möchten.
Die Kommunikation zwischen beiden Ebenen erfolgt über definierte APIs, die bestimmte Aufgabenbereiche kapseln:
- bus – Messaging via ZeroMQ oder MQTT
- config – Konfigurationsmanagement und interaktive Eingabe
- storage – Zugriff auf persistente Daten
- forms – HTML- und Template-basierte Formularlogik
- timer / cron – zeitgesteuerte Abläufe
- log – konsistentes Logging über alle Module
Diese Struktur erlaubt es, aus kleinen Lua-Skripten vollwertige Prototypen oder Lernumgebungen aufzubauen.
Das erste Skript: „Hello from Lunaria“
Das klassische „Hello World“ zeigt sich in Lunaria in seiner einfachsten Form:
-- main.lua
log.info("Hello from Lunaria!")
Hinter diesem Einzeiler steckt bereits die vollständige Interaktion mit
dem Laufzeitsystem. log.info ist kein einfacher Konsolenaufruf,
sondern eine API-Funktion, die direkt über die Go-Engine bereitgestellt
wird.
Damit ist der Einstieg niedrigschwellig – aber technisch „echt“. Das Logging landet im zentralen System, das für jede Skriptausführung eine Session mit Kontextinformationen anlegt.
Kommunikation per Skript: Das Bus-System
Ein zentrales Lernziel von Lunaria ist das Verständnis von
Messaging. Dafür gibt es die Module bus_pub und bus_sub, die
Publisher- und Subscriber-Logik demonstrieren – in reinen Lua-Skripten.
Ein einfaches Publisher-Beispiel sieht so aus:
local cfg = config.expect("APP_", {
pub_port = { type = "number", default = 5557, prompt = "ZMQ PUB Port" },
number = { type = "number", required = true, prompt = "How many messages?" }
})
bus.listen(cfg.pub_port)
timer.sleep(1000)
for i = 1, tonumber(cfg.number) do
bus.publish("example.topic", {
name = "button",
event = "click",
counter = i
})
timer.sleep(500)
end
Das Skript fragt interaktiv Konfigurationen ab (config.expect),
bindet einen ZeroMQ-Publisher und sendet strukturierte Nachrichten auf
ein Topic. Alles passiert deklarativ und nachvollziehbar – ein idealer
Einstieg in eventbasierte Systeme, ohne dass man direkt mit
Netzwerkprotokollen oder Message-Brokern arbeiten muss.
Formulare, Flows und Interaktion
Lunaria beschränkt sich nicht auf technische Backends. Ein weiteres Modul erlaubt die Definition und Steuerung von Formularlogik und Benutzerinteraktionen – ideal für Lehrzwecke, UI-Experimente oder einfache Web-Apps.
Ein Beispiel aus forms_flow/main.lua zeigt einen kleinen
Authentifizierungs-Flow:
local USERS = { demo = "secret", alice = "wonderland" }
local login_form = {
title = "Please log in",
fields = {
{ label = "Username", name = "username", type = "text", required = true },
{ label = "Password", name = "password", type = "password", required = true }
},
buttons = {
{ label = "Login", action = "submit" }
}
}
Diese Strukturen werden von der Laufzeitumgebung in ein dynamisches HTML-Interface übersetzt – komplett generiert durch Lua-Datenstrukturen. So lässt sich die Trennung von Logik, Darstellung und Datenfluss direkt nachvollziehen.
Solche Beispiele sind keine fertigen Apps, sondern didaktische Werkzeuge: Sie zeigen, wie sich Logik schrittweise von der Benutzeroberfläche bis zur Systemebene denken lässt.
Proof-of-Concept auf mehreren Ebenen
Lunaria ist nicht einfach eine Plattform, sondern eine Reihe aufeinander abgestimmter Proof-of-Concepts:
- Abstraktion komplexer Technologien durch eine leicht erlernbare Skriptsprache
- Kombination von kompiliertem (Go) und interpretiertem (Lua) Code
- Einbindung generativer KI über OpenAI-Module
- Deployment auf alternativen Plattformen wie Nomad
- Automatische Code- und Dokumentationsgenerierung im Entwicklungsprozess
Jede dieser Ebenen wurde gezielt genutzt, um Grenzen zwischen Systemarchitektur, Lernsystem und KI-gestütztem Coding zu untersuchen.
Fazit
Lunaria ist ein strukturiertes Prototyping-System. Es verbindet den Pragmatismus einer Skriptsprache mit der Robustheit einer modernen Laufzeit und schafft so einen Lernraum, in dem Technik nachvollziehbar wird.
Ob als Grundlage für Workshops, Lehrmaterial oder als Proof-of-Concept-Plattform für hybride Architekturen: Lunaria zeigt, dass Einfachheit und Experimentierfreude durchaus ernstzunehmende Werkzeuge für Systemverständnis und Innovation sind.
Kurz gesagt: Lunaria ist kein Produkt, sondern eine belastbare Prototyping-Basis, um moderne Technologie nachvollziehbar zu vermitteln und iterativ weiterzuentwickeln.
Bildnachweis: Das Lua-Logo ist ein urheberrechtlich geschütztes Design der Lua-Entwickler an der Pontifical Catholic University of Rio de Janeiro (PUC-Rio). Verwendung im Rahmen redaktioneller Berichterstattung gemäß den Hinweisen zur Logonutzung auf lua.org.