lindesbs/sourcerer-bundle

Contao 5 extension for importing content from external sources via webhooks

Maintainers

Package info

codeberg.org/lindesbs/sourcerer-bundle

Issues

Type:contao-bundle

pkg:composer/lindesbs/sourcerer-bundle

Statistics

Installs: 1

Dependents: 0

Suggesters: 0

dev-develop 2026-06-27 14:32 UTC

This package is not auto-updated.

Last update: 2026-06-28 12:12:25 UTC


README

Contao-5-Erweiterung zum webhook-gesteuerten Import von Inhalten aus externen Quellen in Artikel, News und (perspektivisch) Kalender.

Der erste Importer liest Markdown aus Git-Repositories (Shallow Fetch), mappt Frontmatter und CommonMark auf Contao-Datensätze und unterstützt Assets, interne Links sowie gezielten Re-Import bei Push-Webhooks.

Paket: lindesbs/sourcerer-bundle
Autor: Stefan Lindecke
Lizenz: MIT

Funktionsumfang (Stand)

BereichFunktion
ImporterGit/Markdown → Artikel oder News
WebhookPOST/GET /sourcerer/webhook/{uniqueKey} (Forgejo, Generic)
BackendImporter verwalten, manueller Test-Import (Modal), Log-Viewer
GitHTTPS oder SSH (Private Key), Branch- und Verzeichnis-Auswahl aus Remote
InhalteFrontmatter, CommonMark, Bilder/Downloads, interne Markdown-Links
RobustheitImport-Timeout, Ziel-Verifikation (gelöschte Artikel werden neu angelegt)
BenachrichtigungE-Mail und Gotify bei Fehler/partial
LoggingRotierende Logfiles unter var/log/sourcerer/{importerId}/

Geplant u. a. RSS/Atom, IMAP/POP3, Kalender — siehe ROADMAP.md. Ideen für spätere Versionen: WISHLIST.md.

Voraussetzungen

  • PHP 8.3+
  • Contao 5.3+ (contao/core-bundle, contao/news-bundle)
  • Git CLI auf dem Server (für Shallow Fetch)
  • Optional: Contao-Vault für Credentials (Git, Webhook-Secret, Gotify)

Installation

Als Composer-Paket (Contao-Projekt)

Path-Repository oder VCS in der Contao-Installation:

{
  "repositories": [
    {
      "type": "path",
      "url": "../entwicklung/sourcerer"
    }
  ],
  "require": {
    "lindesbs/sourcerer-bundle": "@dev"
  }
}
composer update lindesbs/sourcerer-bundle
php bin/console contao:migrate
php bin/console cache:clear

Backend

Unter System → Sourcerer Importer anlegen, Ziel (Seite/Archiv + Ersteller) und Git-Zugang konfigurieren. Die Webhook-URL wird beim ersten Speichern einmalig erzeugt.

Konfiguration (Auszug)

EinstellungBeschreibung
repositoryProtocolhttps oder ssh
repositoryUrlRemote-URL
credentialRefVault-Referenz oder direkter Wert (Token bzw. SSH-Key)
branchBranch aus Remote-Auswahl
contentPathUnterverzeichnis mit Markdown (aus Repo-Struktur)
authorContao-Benutzer als Ersteller aller importierten Inhalte
importTimeoutMax. Laufzeit in Sekunden (0 = Standard 300)

Globaler Standard-Timeout in der Contao-Installation:

# config/services.yaml
parameters:
  lindesbs_sourcerer.import_timeout: 600

Entwicklung

Repository klonen, Abhängigkeiten installieren:

composer install

Qualitätssicherung

composer cs          # Easy Coding Standard (PSR-12, Symfony, Clean Code)
composer cs:fix      # ECS mit Auto-Fix
composer phpstan     # Statische Analyse (Level 5)
composer test        # PHPUnit
composer qa          # cs + phpstan + test

Konfiguration: ecs.php (PSR-12/Symfony/Clean-Code, angelehnt an Contao-Stil), phpstan.neon.dist

Tests

40 PHPUnit-Tests decken u. a. Git-Credentials, Webhook-Payloads, Markdown-Parsing und Import-Logik ab.

Architektur (Kurz)

Webhook / Backend  →  ImportRunner  →  GitMarkdownImporter
                           ↓
              Artikel / News + tl_content + tl_files
                           ↓
              tl_sourcerer_external_ref (Upsert-Tracking)

Synchroner Import im HTTP-Request — keine Queue. Details, Datenmodell und Phasenplan: ROADMAP.md.

Entwicklungsweise & Transparenz

Dieses Projekt entsteht in enger menschlich geführter Entwicklung mit Unterstützung durch LLMs (z. B. Cursor). Die KI wird bewusst eingesetzt für:

  • Debugging und Fehleranalyse
  • Mockups und UI-/Ablauf-Skizzen und natürlich CSS (!!!)
  • Durchspielen von Abläufen vor der Implementierung
  • Code-Review und Konsistenzprüfungen
  • Planung (Roadmap, Architektur, Wishlist)

Architektur-Entscheidungen, Review und Freigabe liegen beim Autor. Automatisierte Checks (ECS, PHPStan, PHPUnit) sichern den Code zusätzlich ab.

Weitere Dokumentation

DateiInhalt
ROADMAP.mdArchitektur, Phasen, Datenmodell
WISHLIST.mdGeplante Features (z. B. Autor-Mapping)

Lizenz

MIT — siehe Composer-Paketmetadaten.