3 Lokale Entwicklung
Ralf Warmuth edited this page 2026-01-09 22:32:38 +01:00

Lokale Entwicklung

Diese Seite beschreibt den lokalen Dev-Loop so, wie das Projekt wirklich läuft: Build erzeugt public/, und daraus wird getestet/serviert.

Voraussetzungen

  • Node.js (für Build)
  • PHP 8+ (für Endpoints/Admin)
  • (optional) sqlite3 CLI (Debug/Inspection)

TL;DR Dev-Loop

  1. Änderungen machen (Content/Assets/PHP/Backend)
  2. Build laufen lassen: npm run build
  3. Lokal aus public/ serven: php -S localhost:8000 (im public/-Ordner)
  4. Browser testen

Warum: Nur public/ entspricht der Laufzeitstruktur auf dem Server.

Build

Im Repo-Root:

  • npm install
  • npm run build

Build erzeugt/kopiert:

  • Content → public/<slug>/index.html
  • Assets → public/assets/*
  • Public PHP → public/anmeldung/*, public/registration/*, public/api/*
  • Backend → public/backend/*
  • Data-Dir → public/data/* (inkl. .htaccess)

Siehe: Projekt-Landkarte

Lokal starten (PHP Built-in Server)

Im Ordner public/:

  • php -S localhost:8000

Dann testen:

  • /willkommen/ (statische Seite)
  • /anmeldung/ (PHP Formular)
  • /backend/web/admin_login.php (Admin)

Datenbank & Rechte

  • DB-Pfad zur Laufzeit: public/data/zwergenboerse.db
  • Das Verzeichnis public/data/ muss beschreibbar sein (lokal meist OK; auf Server unbedingt prüfen).

Tipp: Wenn “Database directory is not writable” kommt, ist fast immer public/data/ das Problem.

Mail-Queue lokal testen

Admin-Settings

Im Admin (/backend/web/admin.php, Tab “Mail-Queue”):

  • mailQueueEnabled an/aus
  • mailMaxPerHour setzen
  • optional: mailRedirectToSchumbi (wirkt nur außerhalb Anmeldezeitraum)

Worker ausführen

Der Worker ist als Cron/CLI gedacht:

  • Script: public/backend/cron/send_mail_queue.php

Lokal kann man es direkt via CLI ausführen (aus dem Projekt heraus).

Details: Mail-Queue

Debugging-Hinweise

  • Alles, was “auf dem Server” passiert, passiert in public/.
    • Wenn du zgb-backend/ änderst und im Browser nichts passiert: Build vergessen.
  • Admin-POSTs:
    • CSRF-Token wird geprüft; bei “ungültig” → Seite neu laden.
  • Queue-Status:
    • Admin pollt admin_queue_status.php alle 10s.
  • Logs:
    • PHP-Fehler: serverabhängig (error_log)
    • Admin-Aktionen: public/data/admin_actions.log
    • Mail-Queue Cron: je nach Host $HOME/logs/mail-queue.log oder public/data/mail-queue.log

Tests

Für Änderungen am Backend/Repos/Services empfiehlt sich ein schneller Testlauf:

  • php tests/run-tests.php

Ausführliche Doku: Tests

Häufige Änderungen

Neue Content-Seite

  1. content/neue-seite.md anlegen
  2. content/pages.json ergänzen
  3. npm run build

Änderung am Admin/Backend

  1. Datei in zgb-backend/ ändern
  2. npm run build (kopiert nach public/backend/)
  3. URL unter /backend/web/... testen