# Secrets — nur config.example.php wird committed
/config/config.php
/config/config.production.php

# Composer
/vendor/

# Laufzeit-Daten
/storage/logs/*
/storage/cache/*
/storage/ratelimit/*
# Druck-QR-Codes (bin/qr.php) — Zwischenprodukte für Canva, kein Repo-Inhalt.
# Wichtig: sie enthalten die base_url fest eingebacken, ein versehentlich
# eingecheckter localhost-Code wäre eine Falle.
/storage/qr/
!/storage/logs/.gitkeep
!/storage/cache/.gitkeep
!/storage/ratelimit/.gitkeep

# Maschinenverwaltet: die JSON-Caches bleiben draußen, der Sync baut sie neu.
#
# Die BILDER dagegen sind versioniert, obwohl sie auch der Sync herunterlädt:
# eine VERÖFFENTLICHTE Stadionzeitung friert Verweise auf genau diese Dateien
# dauerhaft ein (Wappen in Tabellen/Ergebnissen/Vorschau, Instagram-Fotos auf der
# Momente-Seite). Ein frischer Klon zeigte sonst 37 kaputte Bilder im Heft, und
# der Instagram-Sync räumt alte Posts irgendwann weg — dann bräche eine
# archivierte Ausgabe nachträglich. Maschinenverwaltet und flüchtig ist nicht
# dasselbe wie maschinenverwaltet und für immer referenziert.
/data/instagram.json
/data/matchcenter.json

# Dateiablage /dateien — Nutzerdaten und Laufzeit-Kram der Files Gallery.
# Committed bleiben nur system/users/*/config.php (Rechte, keine Passwörter) und
# system/include/* (Skin). system/config/config.php generiert die App selbst und
# überschreibt sie bei jedem Update — unsere Werte stehen in _filesconfig.php.
/storage/dateien/uploads/*
!/storage/dateien/uploads/.gitkeep
/storage/dateien/system/cache/
/storage/dateien/system/config/

# Referenz-Material der alten Seite — NIE committen
# (.context_db enthält personenbezogene Daten: Mail-Logs, Hashes)
/.context/
/.context_db/

# OS
.DS_Store
