
pacod-cms ist ein Open-Source-Content-Management-System für redaktionelle Websites. Eine Installation hostet viele Sites, jede mit eigener Datenbank, eigenen Dateien und eigenem Cache; die Redaktion arbeitet in einem mehrsprachigen Studio, und die Leserschaft bekommt schnelle, nach Host geroutete öffentliche Sites.
Content-Management
- Lizenz: Apache-2.0
- Version: 0.0.1 · Vorschau
- Geschrieben in: Java
- Tech-Stack: Java 25, Spring Boot 4.1, Thymeleaf, MongoDB, Maven, Caddy, Gotenberg, Docker
- Auf GitHub ansehen · Issue eröffnen
Funktionen
Redaktioneller Kern
Artikel, Kategorien, Autoren, Tags und feste Seiten, mit einer gemeinsamen Bildbibliothek für die ganze Website.
Multi-Site von Grund auf
Jede Website hat ihre eigene MongoDB-Datenbank, eigene Dateien und eigenen Cache und antwortet unter den Hosts, die sie beansprucht.
Werbung und Statistiken
Werbebuchungen mit einem HTML5-Banner-Builder, eine Link-in-Bio-Seite für Social-Media-Profile und Statistiken zu Leserschaft, Werbung und Crawlern, damit die Redaktion sieht, was gelesen und was gecrawlt wird. Buchungen für einzelne Rubriken und ein GitHub-Icon für die Link-Seite sind in Vorbereitung (noch nicht veröffentlicht, im Branch blog-site).
Mehrsprachig
Inhalte in vielen Sprachen mit konfigurierbarer Originalsprache und KI-Übersetzung eines Artikels oder einer ganzen Website als Job, wobei jede Antwort verworfen wird, die das Markup des Artikels nicht exakt beibehält; das Studio selbst auf Englisch, Bulgarisch, Deutsch und Russisch. Russisch für die eigenen Beschriftungen der öffentlichen Site ist in Vorbereitung (noch nicht veröffentlicht, im Branch blog-site).
KI-Schreibhilfe
Titel, ein ganzer Artikel aus einem Briefing, ein Absatz an der Cursorposition und ein Text, in gestaltete Blöcke gegliedert, ohne dass ein Wort des Autors verloren geht.
KI-Design
Ein Theme, ein Seitenlayout oder das Design der ganzen Website aus wenigen Worten entworfen, als Überarbeitung des aktuellen Entwurfs; nur Entwürfe, mit einem Rückgängig-Schritt.
Organisationen und Rollen
Organisationen, Websites und Einladungen, mit Rollen pro Organisation und pro Website, verwaltet in pacod-id.
PDFs und Zeitschriftenausgaben
Artikel-PDFs als Hintergrund-Job, im Drucklayout der Website oder in einem zweispaltigen wissenschaftlichen Format, mit Abstract und Schlagwörtern aus dem Artikel oder von der KI geschrieben; eine Zeitschriftenausgabe bündelt Artikel zu einem PDF pro Sprache mit Titelseite, Editorial, Inhaltsverzeichnis und nummerierten Seiten, veröffentlicht im Archiv der Website.
Export und Wiederherstellung
Eine Website oder eine ganze Organisation wird als ein ZIP heruntergeladen und als neue wiederhergestellt, auf dieser Installation oder einer anderen.

Screenshots





Ein Stack, viele Websites
pacod-cms betreibt viele Websites für viele Organisationen aus einem Stack. Jede Website hat ihre eigene MongoDB-Datenbank, ihren eigenen Dateiordner und ihre eigenen Cache-Einträge und antwortet unter den Hosts, die sie beansprucht. Wer sich registriert, kann eine Organisation anlegen, deren Admin werden, darin Websites erstellen und Personen zur Mitarbeit einladen; ein Plattform-Admin legt die Limits fest.
Das Design geht davon aus, dass der Inhaber einer Website allen anderen auf der Installation feindlich gesinnt sein könnte. Websites führen Skripte aus, die ihre Inhaber geschrieben haben — HTML5-Banner, Tag-Manager, Artikeltexte —, und die Plattform muss diese Skripte und diese Daten dort halten, wo sie hingehören.
Wie die Teile zusammenspielen
| Teil | Was es tut |
|---|---|
pacod-cms-core |
Eine Bibliothek: Dokumente, Services, die Mandantenfähigkeit, die Control Plane, Seed-Inhalte, das Designmodell und eine Java-Portierung der Regel-Engine von pacod-id. |
pacod-cms-site |
Die öffentliche Site für alle Websites zugleich: Seiten, schreibgeschütztes JSON unter /web/v1/**, Medien, Zugriffszähler. |
pacod-cms-studio |
Das Studio: das Portal für Organisationen, Websites und Mitglieder, die Bearbeitungsansichten, Hintergrund-Jobs, KI. |
| Caddy | Die Eingangstür, routet nach Host: den Host des Studios zum Studio, den von pacod-id zu pacod-id, jeden anderen Host zur Site. |
| Gotenberg | Erzeugt die PDFs von Artikeln und Zeitschriftenausgaben aus den Druckansichten der Site. |
Die beiden Anwendungen rufen einander nie auf. Beide greifen direkt auf MongoDB zu, sodass eine Änderung im Studio die öffentliche Site über die Datenbank erreicht; die Caches der Site laufen nach 60 Sekunden ab, statt geleert zu werden, sodass eine Änderung innerhalb einer Minute live ist.
Vom Host zur Seite
Jede Arbeitseinheit gehört zu genau einer Website, die für ihre Dauer gebunden ist.
- Caddy reicht die Anfrage an die Site weiter. In Produktion fordert Caddy das Zertifikat einer Website beim ersten Besuch an, aber erst, nachdem die Site bestätigt hat, dass der Host zu einer aktiven Website gehört.
- Die Site schlägt den Host in der Control Plane nach, bevor irgendetwas anderes läuft. Ein Host, den keine aktive Website beansprucht, bekommt ein schlichtes 404, nie eine Standard-Website.
- Ist die Website gebunden, geht jede MongoDB-Operation an deren Datenbank. Ist keine gebunden, wirft die Datenbankschicht einen Fehler, statt zu raten.
- Das Layout des Seitentyps — Regionen mit geordneten Sektionen — wird gegen das Template-Set der Website aufgelöst, und die Daten jeder Sektion werden vorab geladen. Templates fragen nie selbst ab; eine Sektion, deren Daten fehlschlagen, wird weggelassen und protokolliert, und die Seite wird trotzdem gerendert.
Im Studio ergibt sich die Website aus dem Pfad (/sites/<id>/mgmt/…); Hintergrundarbeit bindet die
Website, für die sie läuft.
Wo die Daten liegen
| Wo | Was |
|---|---|
pacod_cms |
Die Control Plane: Organisationen, Websites, Domains, Plattform-Einstellungen, die Job-Warteschlange. |
site_<id> |
Eine Datenbank pro Website: Artikel, Seiten, Bilder, Banner, Menüs, Einstellungen, Layouts, Theme, Statistiken. |
sites/<id>/ |
Die Dateien der Website: Artikelbilder, Banner-Motive, PDFs. Die PDFs einer Ausgabe im Entwurf liegen in einem privaten Ordner, den nur das Studio ausliefert. |
| pacod-id | Personen, Sitzungen und Rollenzuweisungen. Das CMS speichert keine Konten. |
Die Identität einer Website — Name, Logos, Kontaktdaten, Drittanbieter-IDs — steckt in den Daten,
nicht im Markup. Eine Drittanbieter-ID wird nur gerendert, wenn sie gesetzt ist und das Format ihres
Anbieters hat, sodass eine frische Website überhaupt kein Tracking lädt. Die Originalsprache der
Inhalte einer Website ist der letzte Fallback für eine fehlende Übersetzung und der rechtlich
maßgebliche Text. Eine kanonische Adresse, hreflang und Artikel-Metadaten im Head jeder Leserseite
sowie ein Atom-Feed pro Website und pro Rubrik sind in Vorbereitung (noch nicht veröffentlicht, im
Branch blog-site).
Design ohne Code
Unter Gestaltung im Studio wählt jede Website eines von drei Template-Sets — editorial, eine
Startseite aus Artikelrastern mit einer Spalte neben dem Inhalt; minimal, eine ruhige Spalte; oder
magazine, bildbetont, mit einer Titelgeschichte über die volle Breite, Fotos im Mosaik und
Artikeln, die mit ihrem Bild beginnen — und stellt ein Layout pro Seitentyp
zusammen: Startseite, Artikel, Rubrik, Neueste, feste Seite und Suche. Zu den Sektionen gehören
Artikellisten (neueste, eine Rubrik oder die meistgelesenen), Rich Text, ein Call-to-Action, ein
Suchfeld und die Social-Links; eine Sektion, die den Text einer festen Seite in der Sprache der
Leserschaft zeigt, ist in Vorbereitung (noch nicht veröffentlicht, im Branch blog-site). Ein Theme
legt Farben mit Nachtmodus-Werten, Schriften und Breiten fest.
Der Text eines Artikels kann gestaltete Blöcke aus einer geschlossenen Liste enthalten: einen
Vorspann, einen Hinweiskasten, ein herausgestelltes Zitat, einen Kasten mit den wichtigsten Fakten,
zwei Spalten und eine Abbildung mit Bildunterschrift, normal oder links bzw. rechts gesetzt. Die
Websites gestalten sie aus dem Theme, auch in ihren Druckansichten und damit in PDFs, und der Editor
zeigt sie so, wie die Leserschaft sie sieht. Fünf davon bietet das Menü Blöcke des Editors; das
KI-Layout kann alle sechs nutzen. Codebeispiele, im Editor eingefügt und auf den Websites mit Prism
hervorgehoben, sind in Vorbereitung (noch nicht veröffentlicht, im Branch blog-site).
Ein Wechsel des Sets zeigt zuerst, was verloren ginge, und nichts wird entfernt: Sektionen, die das neue Set nicht darstellen kann, bleiben erhalten und kehren beim Zurückwechseln wieder. Layouts und Theme bleiben Entwürfe, bis jemand mit Veröffentlichungsrecht sie veröffentlicht, ob ein Mensch oder die KI sie geschrieben hat. Der Design-Assistent entwirft ein Theme, ein Layout oder das Design der ganzen Website aus wenigen Worten; Einzelheiten stehen im KI-Abschnitt unten. Die Vorschau zeigt Entwürfe unter der eigenen Adresse der Website, in Desktop-, Tablet- oder Telefonbreite, über ein signiertes Token mit 30 Minuten Gültigkeit, und zählt nichts.
Ein neues Template-Set ist Code, den ein Betreiber installiert, kein Upload: Ein Thymeleaf-Template kann alles, was die Site kann.
PDFs und Zeitschriftenausgaben
Langwierige Arbeit läuft im Studio als Job, höchstens einer pro Organisation zur Zeit, mit Live-Log und Abbrechen-Knopf. Der PDF-Export ist ein solcher Job: Gotenberg erzeugt aus jedem Artikel ein PDF pro Sprache, in der er geschrieben ist, und der Artikel verlinkt sein PDF, sobald es existiert.
- Zwei Formate. Standard ist die Druckansicht der Website. Wissenschaftlich ist ein Paper-Layout: ein Kopf über die volle Breite mit Titel, Autoren, Abstract und Schlagwörtern, danach der Text in zwei Spalten.
- Zwei Arten der Erstellung. Nur Code nimmt Abstract und Schlagwörter aus der Beschreibung und den Tags des Artikels. Mit KI lässt pacod-gw für jeden Artikel und jede Sprache ein Abstract, Schlagwörter und einen kurzen Kolumnentitel schreiben. Der Text des Artikels wird nie verändert.
- PDF-Einstellungen halten die Vorgaben jeder Website: Format und Art, Papier (A4, Letter oder A5) und Ränder, den Namen der Zeitschrift pro Sprache und ihre ISSN, einen Kolumnentitel und Seitenzahlen. Jeder Lauf kann ein anderes Format und eine andere Art wählen.
Eine Zeitschriftenausgabe bündelt Artikel zu einem PDF pro Sprache. Sie hat einen Jahrgang, eine
Nummer und einen Monat, einen Titel und ein Editorial pro Sprache und ein optionales Titelbild; ihre
Artikel werden einzeln ausgewählt oder aus ihrem Monat übernommen und dann geordnet. Beim Erzeugen
entstehen eine Titelseite, das Editorial, ein Inhaltsverzeichnis mit Seitenzahlen und danach die
Artikel, mit einem Lesezeichen pro Artikel und durchgehend nummerierten Seiten. Die PDFs einer
Ausgabe im Entwurf werden nur aus dem Studio heruntergeladen. Wird sie veröffentlicht,
erscheinen die Ausgabe und ihre PDFs auf der Website unter /issues und in ihrer Sitemap.
Sicherheitsmodell
Wer was darf
pacod-id besitzt Konten und Rollen. Tokens tragen keine Rollen: Das Studio folgt dem Feed der
Rollenzuweisungen von pacod-id und entscheidet jede Berechtigung selbst anhand des Manifests des CMS
(authz/cms.yaml). Die Rollen sind Plattform-Admin, Provisioner, Organisations-Admin,
Website-Admin, Designer, Redakteur, Autor und Analyst, vergeben auf der Plattform, in einer
Organisation oder auf einer Website. Ein Autor schreibt; ein Redakteur veröffentlicht auch.
- Jeder Handler im Studio deklariert die Berechtigung, die er braucht; einer, der keine deklariert, wird abgewiesen. Keine Rolle ist implizit.
- Hat der Feed von pacod-id eine Minute lang nicht geantwortet, antwortet das Studio mit 503, statt mit Rollen zu entscheiden, die womöglich entzogen wurden. Die öffentlichen Websites sind davon nicht betroffen.
Websites bleiben getrennt
- Studio und pacod-id liegen auf einer anderen registrierbaren Domain als die Websites, sonst
startet das Studio nicht. Andernfalls könnte das Skript einer Website Cookies für sie setzen und
ihren CSRF-Schutz aushebeln. Eine Installation, deren Websites alle vertrauenswürdig sind, etwa
eine Demo auf einer Domain, kann dieses Risiko mit
PACOD_SITE_DOMAIN_SHARED=truein Kauf nehmen: Das Studio startet dann mit einer Warnung, und eine Website bekommt trotzdem nie den eigenen Host des Studios oder von pacod-id. - Das Studio liefert nie HTML oder Skripte einer Website aus. Entwurfs- und HTML5-Banner-Vorschauen werden vom eigenen Origin der Website eingebettet.
- Gotenberg ist abgeschottet: Es erreicht nur die interne Adresse der Site und führt kein JavaScript aus.
- Nur veröffentlichte Artikel erreichen Leser, auf jeder Route, in jeder Liste, jeder Sitemap und jedem PDF. Eine Zeitschriftenausgabe im Entwurf ist nie öffentlich.
KI, die deine Schlüssel nicht anrührt
Jeder KI-Aufruf läuft über pacod-gw; das Studio hält nie den Schlüssel eines Anbieters. KI ist für neue Organisationen standardmäßig aus: Ein Plattform-Admin schaltet sie pro Organisation ein, und der Admin einer Website kann sie für die eigene Website abschalten.
Schreiben
Im Artikeleditor arbeitet die Schreibhilfe mit dem Text, wie er gerade dasteht, gespeichert oder nicht:
- Umformulieren: eine Auswahl auf sechs Arten — klarer, kürzer, ausführlicher, korrigiert, förmlicher oder freundlicher.
- Titel: bis zu drei Überschriften für den Artikel.
- Entwerfen: ein ganzer Artikel — Titel, Beschreibung und Text — aus einem Briefing, kurz, mittel oder lang (etwa 300, 600 oder 1.200 Wörter), in der Originalsprache der Website. Er nutzt nur die Fakten des Briefings; fehlt einer, schreibt er einen Platzhalter in eckigen Klammern, den der Autor ausfüllt, und erfindet nie einen.
- An der Cursorposition schreiben: ein Absatz aus einem Briefing, in der Sprache und im Ton des umgebenden Textes, nach derselben Regel für Fakten.
- Gliedern: eine Auswahl oder den ganzen Text in Überschriften, Listen, Hervorhebungen und die gestalteten Blöcke. Jedes Wort des Autors muss in seiner Reihenfolge erhalten bleiben, sonst wird die Antwort verworfen. Ein Text mit einem Frame, einem Video, einem Skript oder einem Formular wird vor jedem Aufruf abgewiesen, weil die Gliederung es verlieren würde.
- Zusammenfassung und Tags für den Artikel und Alt-Text pro Sprache, den ein Vision-Modell anhand des Bildes selbst schreibt.
Antworten werden auf eine kurze Liste von Tags und Link-Schemata (http, https, mailto, relativ)
bereinigt. Eine Klasse bleibt nur, wo sie einen gestalteten Block an seinem eigenen Element benennt;
kein style, kein Skript, kein Bild, das der Text des Autors nicht schon hatte, und kein Link auf
eine Adresse, die weder der Text des Autors noch das Briefing noch der Artikel angegeben hat. Zahlen,
Namen und herausgestellte Zitate, die eine Antwort enthält, ihr Material aber nicht, werden daneben
aufgelistet, damit der Autor sie prüft — eine Heuristik, kein Beweis. Eine
Umformulierung, ein Absatz oder eine Gliederung erscheint zuerst in einer Vorschau und wird als ein
Rückgängig-Schritt eingefügt; ein Entwurf füllt das Formular. Gespeichert wird erst, wenn der Autor
speichert.
Design
- Der Design-Assistent entwirft ein Theme oder das Layout eines Seitentyps aus wenigen Worten. Standardmäßig überarbeitet er den aktuellen Entwurf, den das Modell zu sehen bekommt, und ändert nur, was das Briefing verlangt; auf Wunsch beginnt er neu. Jede Antwort wird geprüft, als hätte ein Betreiber sie eingegeben, und ein Klick macht die Änderung rückgängig oder stellt sie wieder her.
- Das Design der ganzen Website — das Theme und das Layout jedes Seitentyps — entsteht aus einem Briefing als Job. Jeder Schritt steht für sich, sodass einer, der fehlschlägt, die anderen nicht aufhält; der Job kann gefahrlos erneut laufen, lässt sich abbrechen und verbucht seine Kosten. Eine Website hat höchstens einen Design-Job zur Zeit.
In beiden Fällen ändern sich nur Entwürfe; veröffentlichen muss weiterhin jemand, der es darf.
Übersetzung und PDFs
- Artikelübersetzung läuft als Job. Ein übersetzter Text muss das Markup seiner Quelle exakt
beibehalten — nur
alt,title,aria-labelundplaceholderdürfen sich ändern —, sonst wird er abgewiesen. - Website-Übersetzung umfasst feste Seiten, Rubriknamen, Menüs, die Link-Seite und, falls ausgewählt, Tags, ohne Änderungen zu überschreiben, die währenddessen gemacht wurden; höchstens 2.000 Aufrufe pro Lauf.
- PDF-Vorspann: Für PDFs, die mit KI erstellt werden, ein Abstract, Schlagwörter und ein Kolumnentitel pro Artikel und Sprache, als reiner Text geprüft. Sie werden wiederverwendet, bis der Artikel bearbeitet wird.
Was jede Antwort bestehen muss
- Jede Antwort muss einem strikten JSON-Schema entsprechen. Eine, die das Modell abgebrochen oder verweigert hat, ist ein Fehlschlag, und nichts davon wird geschrieben.
- Der Text der Person wird als Material gesendet, und dem Modell wird gesagt, dass er nie eine Anweisung ist, auch wo er wie eine klingt.
- Das Gateway sieht nur opake IDs, nie Namen oder E-Mail-Adressen.
Drei Umgebungen, ein Makefile
| dev | stage | prod | |
|---|---|---|---|
| Eingangstür | HTTP, dazu HTTPS von Caddys lokaler CA | HTTPS (Let's Encrypt) | HTTPS (Let's Encrypt, oder ein eigenes Zertifikatspaar) |
| Mails von pacod-id | von mailpit abgefangen | von mailpit abgefangen | dein Relay |
| KI | Mock-Gateway | Mock-Gateway | dein pacod-gw, oder aus |
| Demo-Websites | ja | ja | keine |
Stage ist die Konfiguration der Produktion, mit abgefangenen Mails und gemockter KI. make check
verweigert den Start, solange ein Secret fehlt oder die Konfiguration unsicher ist. Sichere .env,
die MongoDB-Datenbanken, die Dateien der Websites und das PostgreSQL von pacod-id. /mgmt-health des
Studios prüft nur, ob es läuft: Ein Studio, das pacod-id nicht erreicht, bleibt gesund, während seine
Ansichten mit 503 antworten, und meldet das in seinem Log. Site und Studio loggen im gemeinsamen
pacod-Format, als JSON oder Text (APP_LOG_FORMAT).
Export und Wiederherstellung bringen eine Website von einer Installation auf eine andere. Eine Website oder eine ganze Organisation wird aus dem Studio als ein ZIP ihrer Inhalte und Dateien heruntergeladen, ohne Besucherstatistiken, Mitglieder oder Hosts. Eine Wiederherstellung prüft das ganze Archiv, bevor sie etwas anlegt, und legt immer eine neue Website oder Organisation an, auf dieser Installation oder einer anderen; Uploads bis 2 GiB werden nur auf diesen beiden Pfaden angenommen. Sicherungen der ganzen Plattform bleiben MongoDB-Dumps.
Eine frische dev- oder stage-Installation legt drei Demo-Websites an: Demo Journal (editorial),
Demo Notes (minimal) und Starward (magazine), ein Magazin für Raumreisen in einem erfundenen
Sternsystem: 24 ausführliche Artikel, die jeden gestalteten Block nutzen, fünf Autoren, eigene Seiten,
Menüs, Layouts, ein eigenes Theme und zwei veröffentlichte Zeitschriftenausgaben, 37 NASA-Fotos mit
Bildnachweis und fünf erfundene Werbekunden mit HTML5-Motiven. make site-create … DEMO=space oder
make seed SITE=<id> DEMO=space gibt einer anderen Website die Inhalte von Starward. Eine Website aus
einem eigenen Ordner zu befüllen (SEED_DIR=<folder>), vor jedem Schreiben als Ganzes geprüft, ist
in Vorbereitung (noch nicht veröffentlicht, im Branch blog-site).
Jede Umgebung läuft im Docker-Netzwerk pacod-net, das sich alle pacod-Projekte teilen. Listener,
die nur für Server erreichbar sind, etwa der interne von pacod-id, liegen in einem zweiten, internen
Netzwerk, pacod-admin-net, dem das Studio beitritt. Die
eigenen Dienste des CMS — Site, Studio, MongoDB und Gotenberg — stehen in einer Compose-Datei; seine
eigenen Kopien der gemeinsamen Teile — Caddy, pacod-id mit seinem PostgreSQL, das
Entwicklungs-Gateway und der Mail-Catcher — in einer zweiten, die das Makefile mitlädt. Pro Rechner
passt nur ein Stack, der die gemeinsamen Teile betreibt; der Betrieb hinter einem Caddy und einem
pacod-id, die auf dem Host schon laufen (PROXY_MODE=external), ist in Vorbereitung (noch nicht
veröffentlicht, im Branch blog-site).
pacod-demo
lädt nur die erste Datei und betreibt das CMS zusammen mit den anderen Projekten hinter einem Caddy,
einem pacod-id, einem PostgreSQL und einem Gateway; online ist es unter
demo.pacod.io.
Was getestet wurde und wo die Grenzen liegen
- Die Unit-Tests laufen mit Bulgarisch als Originalsprache, damit gerade die vom Standard abweichende Konfiguration geprüft wird.
- Die Integrationstests betreiben zwei Websites in einer echten MongoDB und prüfen, dass sie getrennt bleiben: Routing, Host-Auflösung, Caches, Speicher und Statistiken.
make e2eprüft Anmeldung und Portal am laufenden Stack.- Die neueren KI-Abläufe — die Entwurfskarte, die Titelliste, Überarbeiten und Rückgängig im Design-Assistenten, der Design-Job und die Liste der zu prüfenden Fakten — sind noch nicht an einem laufenden Stack geprüft.
Grenzen und weiterführende Lektüre
Bekannte Einschränkungen in v1:
- Die Identität einer Website (
siteSettings) hat noch keine Ansicht im Studio; sie wird in der Datenbank bearbeitet. - Die Demo-Inhalte sind auf Englisch geschrieben, daher kann sie nur eine Website bekommen, deren Inhaltssprache Englisch ist.
- Die Mitgliederliste zeigt keine plattformweiten Rollen.
Die Roadmap nennt, was v1 zurückstellt, darunter eine Schreib-API, einen Gateway-Schlüssel und ein KI-Budget pro Organisation, einen separaten Worker, S3-Speicher und Importer für Inhalte.
Im Repository:
- Architektur — wie eine Anfrage ihre Website findet
- Sicherheit — was Websites und Studio voneinander trennt
- Template-Sets — ein eigenes Set schreiben
- Betrieb und Deployment — Umgebungen, TLS, Hosts, Einstellungen
- Roadmap — was v1 enthält und was zurückgestellt ist
Schnellstart
Ein Entwicklerrechner
make init
make up
open http://studio.localhost:8000/
Eine weitere Website über die Kommandozeile
make site-create SLUG=acme NAME="Acme News" HOSTS=acme.localhost DEMO=1
Funktioniert mit
- pacod-id: Das Studio meldet Personen über pacod-id an, das auch ihre Rollen pro Organisation und pro Website verwaltet.
- pacod-gw: KI-Funktionen laufen über das Gateway — das Studio hält nie den Schlüssel eines Anbieters.
- pacod-demo: Betreibt das CMS zusammen mit den anderen Projekten hinter einem Caddy, einem pacod-id und einem Gateway — das Live-Studio und drei Demo-Websites.
Der eigene Code des Projekts steht unter Apache-2.0. Das Studio bündelt den TinyMCE-Editor (GPL-2.0-or-later), daher wird das gebaute Studio als Ganzes unter den Bedingungen der GPL-3.0 weitergegeben. Die öffentliche Site enthält ihn nicht.