Files
KenzoandClaude Opus 5 88ad16c86f
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline was successful
fix(backend): Publish repariert - spawn git ENOENT und kaputter Image-Build
Publish schlug bei jedem Versuch mit "spawn git ENOENT" fehl, obwohl git im
Container installiert ist. Node meldet ENOENT auch dann, wenn das cwd des
Kindprozesses nicht existiert: initialize() setzte simple-git auf den
Workspace, loeschte diesen per rm -rf und startete den Clone anschliessend
aus dem geloeschten Verzeichnis heraus.

Nebeneffekt davon: da Uploads unter GIT_WORKSPACE_DIR/public/images liegen,
hat jeder fehlgeschlagene Publish die hochgeladenen Bilder mitgeloescht.

git.service.ts:
- Clone laeuft aus dem Elternverzeichnis statt aus dem geloeschten Ziel
- Re-Clone nur noch wenn kein brauchbares Repo vorhanden ist
- Uploads werden ueber den Re-Clone hinweg gesichert (Repo-Stand gewinnt)
- commitAndPush scheitert nicht mehr, wenn es nichts zu committen gibt
- reset() nur bei echtem Repo, mit Ausnahme fuer public/images
- Token wird in Fehlermeldungen maskiert

Dockerfile:
- COPY von src/db/migrations entfernt. Das Verzeichnis war nie im Git und
  liess den Image-Build scheitern. Zur Laufzeit wird es nicht gebraucht,
  das Schema legt initDatabase() selbst an.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
2026-08-11 09:40:29 +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