Klein geschnitten.
Groß gebaut.
J•Frame ist ein modulares PHP-Framework: Kern, Komponenten, Pakete und Themes als eigenständige Composer-Pakete. Jede App nimmt sich, was sie braucht, und pinnt es auf einen kompatiblen Versionsbereich. Darauf laufen eine Videoplattform, ein CMS, eine Firmenverwaltung, ein Feed-Dienst und eine zentrale Anmeldung.
- PHP 8
- über 50 Composer-Pakete
- SemVer pro Paket
- Doku mit ADRs
- stetig weiterentwickelt
Privat & nicht öffentlich verfügbar. J•Frame ist ein privates Framework. Es gibt keinen Download und keine öffentliche Installation — es kommt ausschließlich in eigenen Projekten auf eigenen Servern zum Einsatz.
/** * Routen stehen am Controller — kein Routing-File. * * @Route(path="/hello/") */ class HelloController extends AbstractController { /** @Route(path="{name}") */ public function index(): ResponseInterface { return $this->render('hello.phtml', [ 'name' => $this->getParam('name'), ]); } }
Prinzipien
J•Frame wächst seit Jahren mit echten Anwendungen. Ein paar Regeln haben sich dabei bewährt.
Pakete statt Monolith
Routing, ORM, Events, Templating … jede Fähigkeit ist ein eigenes Paket mit eigenem Release-Zyklus. Eine Änderung an einer Komponente bricht keine App, die auf einen anderen Bereich gepinnt ist.
Nähte vor Interna
Erweitert wird über Events, Registries und Konfiguration — nicht durch Eingriffe in fremden Code. Ein neues Paket hängt sich ein, ohne dass der Kern davon wissen muss.
Konfiguration als Code
Config sind typisierte PHP-Objekte, Geheimnisse kommen über Umgebungsvariablen
([ENV:…]). Dieselbe App läuft lokal, auf Staging und in Produktion.
Keine stillen Fehler
Was schiefgeht, wird geloggt oder gemeldet. Ein Paket, das einen Fehler verschluckt, gilt als Bug — auch wenn die Seite dabei „funktioniert“.
Entscheidungen werden aufgeschrieben
Jede größere Weiche bekommt einen Architecture Decision Record. Die Doku lebt beim Paket, zweisprachig, mit klarer Ablage.
Schnell, ohne Magie
Plain-PHP-Templates, Discovery-Caches und OPcache: kein Build-Schritt für PHP, keine versteckte Magie. Was im Code steht, passiert auch.
Eine Logik, drei Endpoints
Die Geschäftslogik steckt einmal in Services, Entities und Rechten. Ein Endpoint ist nur der Weg hinein: Ob ein Mensch im Browser klickt, ein Cronjob läuft oder ein anderes Frontend Daten abruft, alle nutzen dieselbe Logik.
Web
Server-gerenderte Seiten mit Themes, Navigation, Formularen und einer Administration, die Pakete selbst erweitern — von der Website bis zum internen Werkzeug.
CLI
Eigene Befehle über bin/console, dazu ein Scheduler für wiederkehrende Aufgaben:
Importe, Exporte, Migrationen, Cache-Aufbau, Wartungsfenster.
API (headless)
JSON-Endpunkte über dieselben Routen und Controller, abgesichert mit Token- bzw. JWT-Authentifizierung — für eigene Frontends, Apps und andere Dienste.
Bausteine
Fünf Ebenen, jede als eigenes Paket versioniert. Eine App aktiviert Pakete in ihrer Konfiguration — Controller und Routen werden dann automatisch gefunden.
jframe/corejframe-componentjframe-packagejframe-pluginjframe-themeGebaut mit J•Frame
Fünf Anwendungen, ein Fundament. Sie teilen sich dieselben Pakete — was eine App verbessert, bekommen die anderen beim nächsten Update mit.
ViPla
„Your Video Platform“: Upload, Transkodierung und Streaming, Playlists und Sammlungen, Bewertungen und Statistiken.
vipla.watch →J•CMS
Ein CMS mit Themes, Menüs und WYSIWYG-Editor — öffentliches Frontend ohne JavaScript-Zwang, Verwaltung über die J•Frame-Administration.
jcms.eu →J•CoMa
Firmen-, Kunden- und Projektverwaltung mit Rollen, Board und Mandantentrennung — die Werkzeugkiste für den Agenturalltag.
Im internen EinsatzJ•Feed
Veröffentlicht eigene Beiträge wie ein Blog oder holt sie aus angebundenen Quellen wie Facebook-Seiten, synchronisiert regelmäßig und liefert alles als Atom-Feed und über eine JSON-API aus — zum Einbinden in andere Websites.
Im KundeneinsatzJ•Acc
Benutzerverwaltung und Anmeldung als Dienst für die eigenen Projekte: eine API mit JWT-Tokens, optional mit Zwei-Faktor-Authentifizierung — auch für Frontends, die selbst nicht auf J•Frame laufen.
Im internen Einsatz