Bilder, die vor der Umstellung hochgeladen wurden, liegen unverkleinert im Originalformat im Repo - damals war sharp im Container kaputt, es gab also weder Verkleinerung noch Formatwandlung. Das Skript schickt sie durch dieselbe Verarbeitung wie einen frischen Upload. node dist/scripts/convert-images-to-avif.js # nur anzeigen node dist/scripts/convert-images-to-avif.js --apply # wirklich tun Ohne --apply wird nichts geschrieben. Ablauf: Workspace auf den Repo-Stand bringen, jedes referenzierte Bild umwandeln und nach seinem Inhalt benennen (Event-Titel, Alt-Text, Zweck), die Verweise in Events, Gallery und Textbereichen nachziehen, die Vorgaenger wegraeumen und committen. Weggeraeumt wird nur, was das CMS selbst angelegt hat. Ein handgepflegtes event_karaoke.jpg bekommt zwar eine AVIF-Fassung und der Verweis zeigt darauf, das Original bleibt aber liegen und wird im Bericht genannt. saveImageBuffer aus upload.service.ts herausgeloest, damit Upload und Skript nachweislich dieselbe Verarbeitung benutzen statt zweier Kopien. replaceImageUrls ersetzt Pfade in den Textbereichen, ohne die restliche JSON-Struktur anzufassen. Durchgespielt an vier Bildern zu je ~656 KB: 2.56 MB -> 0.16 MB. Die Vorschau schreibt nichts, ein zweiter Lauf findet nichts mehr, die Highlights-Liste bleibt unversehrt und alle Bilder werden danach als image/avif ausgeliefert. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
Gallus Pub CMS Backend
Headless CMS backend for managing Gallus Pub website content with Gitea OAuth authentication.
Setup
- Install dependencies:
npm install
- Create
.envfile from.env.example:
cp .env.example .env
-
Update environment variables in
.env:- Set Gitea OAuth credentials
- Set Git repository URL and token
- JWT secrets are already generated
-
Create data directory and run migrations:
mkdir -p data
- Generate and run migrations:
npm run db:generate
npm run db:migrate
- Start development server:
npm run dev
Server will run at http://localhost:3000
Available Scripts
npm run dev- Start development server with watch modenpm run build- Build for productionnpm run start- Start production servernpm run db:generate- Generate database migrationsnpm run db:migrate- Run database migrationsnpm run db:studio- Open Drizzle Studio
Documentation
See parent directory for complete documentation:
CMS_CONCEPT.md- System architectureCMS_GITEA_AUTH.md- Authentication detailsCMS_IMPLEMENTATION_EXAMPLE.md- Code examplesCMS_SETUP_GUIDE.md- Deployment guide