Files
Gallus_Pub/backend
KenzoandClaude Opus 5 a2bdbf9035 feat(backend): Skript zur Umwandlung des Altbestands nach AVIF
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]>
2026-08-11 13:46:27 +02:00
..

Gallus Pub CMS Backend

Headless CMS backend for managing Gallus Pub website content with Gitea OAuth authentication.

Setup

  1. Install dependencies:
npm install
  1. Create .env file from .env.example:
cp .env.example .env
  1. Update environment variables in .env:

    • Set Gitea OAuth credentials
    • Set Git repository URL and token
    • JWT secrets are already generated
  2. Create data directory and run migrations:

mkdir -p data
  1. Generate and run migrations:
npm run db:generate
npm run db:migrate
  1. Start development server:
npm run dev

Server will run at http://localhost:3000

Available Scripts

  • npm run dev - Start development server with watch mode
  • npm run build - Build for production
  • npm run start - Start production server
  • npm run db:generate - Generate database migrations
  • npm run db:migrate - Run database migrations
  • npm run db:studio - Open Drizzle Studio

Documentation

See parent directory for complete documentation:

  • CMS_CONCEPT.md - System architecture
  • CMS_GITEA_AUTH.md - Authentication details
  • CMS_IMPLEMENTATION_EXAMPLE.md - Code examples
  • CMS_SETUP_GUIDE.md - Deployment guide