1Architektur
Packages3
@setzkasten-cms/core4
5Schema-Definition, Feldtypen, Validation (Zod), Serialization, Commands, Events, Port-Interfaces.
6@setzkasten-cms/ui
React-UI: Provider, FormStore (Zustand), Field Renderers, EntryForm, Hooks, Proxy-Adapter.
@setzkasten-cms/github-adapter
7ContentRepository-Implementation via GitHub API. Octokit, TreeBuilder, atomic commits.
@setzkasten-cms/auth
GitHub + Google OAuth via Arctic. Session-Management, Allowed-Emails-Filter.
@setzkasten-cms/astro
Astro Integration: Admin SPA, Auth Routes, GitHub Proxy, Preview Handler.
454555
555
8Ports (Interfaces)
| Port | Methoden | Adapter |
|---|---|---|
| 10ContentRepository | listEntries, getEntry, saveEntry, deleteEntry, getTree | GitHubContentRepository, ProxyContentRepository, MockRepository |
| AuthProvider | 11getSession, getLoginUrl, handleCallback, logout | GitHubAuth, GoogleAuth, MockAuth |
| AssetStore | upload, delete, list, getUrl | ProxyAssetStore, MockAssets |
| 5455 | 55 | 55 |
12Datenfluss
Design-Prinzipien
Dependency Inversion
13UI hängt nur von Ports ab, nie von konkreten Implementierungen.
Schema-First
Alles leitet sich vom TypeScript-Schema ab – Typen, UI, Validierung.
Result Pattern
Keine Exceptions. Alle Operationen geben Result<T> zurück.
14Atomic Commits
Content + Assets werden als ein Git-Commit gespeichert.
Original Filenames
Upload-Dateien behalten ihren Namen. Kein Hashing, kein Renaming.
Zero Lock-in
15Content lebt im Git-Repo. Kein externer Service, keine Datenbank.