Bilder sind im CMS meistens der Punkt, an dem Ordnung verloren geht: 400 Dateien im Root, keine Quelle, kein Alt-Text, und niemand traut sich zu löschen. RustyCMS gibt jedem Asset einen Ordner mit Vorgaben, eine redaktionelle Karteikarte und einen Index, der weiß, wo es verwendet wird.
Ordner, die ihre Vorgaben mitbringen
Ein Ordner kann Standardwerte für Tags, Lizenz und Credit tragen. Jeder Upload dorthin übernimmt sie — aber nur, wo das Bild selbst nichts mitbringt; explizite Werte bleiben unangetastet.
PUT /api/assets/folders/blog/meta
{
"description": "Blog-Titelbilder",
"defaultTags": ["blog", "hero"],
"defaultLicense": "CC-BY-4.0",
"defaultCredit": "Redaktion"
}
Die Karteikarte am Bild
Jedes Asset hat ein Sidecar mit abgeleiteten Daten (Maße, Hash, Blurhash) und redaktionellen Feldern: Titel, Credit, Lizenz, Standard-Alt-Text, Tags. Der Alt-Text am Asset greift überall, wo das Feld im Eintrag ihn nicht überschreibt — einmal pflegen, überall richtig. Die Liste filtert nach Ordner, MIME-Typ, Mindestgröße, Transparenz, Tags und unused=true — nur Assets ohne einen einzigen Verweis, für die Aufräumrunde.
Rein auf drei Wegen, klein beim Eingang
Upload per Multipart, per URL oder als Base64 — letzteres für Werkzeuge, die keine Datei anfassen können. Optional läuft jeder Eingang durch eine Optimierung: längste Kante auf 2560 Pixel, Re-Encode als WebP. Aus dem 10-MB-Handyfoto werden rund 400 KB, bevor es auf der Platte, im Backup oder im rsync landet. Das ist opt-in (RUSTYCMS_ASSET_AUTO_OPTIMIZE), SVG und GIF werden nie angefasst, und ein Ergebnis, das größer wäre als das Original, wird verworfen. Das Original lässt sich auf Wunsch archivieren.
Vom Handy direkt ins CMS
Ein Upload-Ticket ist ein kurzer Link — /u/<id> — der genau ein Bild in genau einen vorher festgelegten Ordner lässt, für wenige Minuten, ohne Login. Die Seite dahinter hat einen Kamera-Button. Vom Desktop aufs Handy, Foto machen, fertig. Das ist auch der Weg für KI-Assistenten: ein Modell kann ein Bild nicht als Bytes weiterreichen, aber es kann per MCP ein Ticket erzeugen, den Link geben und danach den Ordner abfragen.
Umbenennen ohne Angst
Ein Rename oder Verschieben in einen anderen Ordner schreibt alle Einträge, die das Bild referenzieren, im Hintergrund um — kein erneutes Speichern in der Redaktion. Möglich macht das ein Referrer-Index, der nach Inhalt statt nach Pfad schlüsselt. Derselbe Index beantwortet ?usages=true: welche Einträge, welches Feld, welche Sprache.
Was nicht passiert
Ordner sind eine Ebene tief, kein Baum. Dateinamen werden kleingeschrieben und bereinigt, ein zweiter Upload auf denselben Pfad wird abgelehnt statt still überschrieben. Kein Cloud-Speicher als Voraussetzung — Assets liegen im Content-Verzeichnis.