ChorManager ist eine webbasierte Verwaltungsplattform für Chöre und Vereine. Die Anwendung deckt zentrale Organisationsprozesse ab, von Mitglieder- und Rollenverwaltung bis zu Terminen, Anwesenheiten, Finanzen, Newslettern und auswertbaren Berichten.
- Mitglieder-, Rollen- und Rechteverwaltung für typische Vereinsrollen.
- Termin- und Veranstaltungsmanagement inklusive Anwesenheitserfassung.
- Finanz- und Auswertungsfunktionen für den laufenden Vereinsbetrieb.
- Newsletter- und Kommunikationsfunktionen für interne Abläufe.
- Entwicklungsfreundliche Dev-Seed-Daten für reproduzierbare Testszenarien.
- SMTP-Konfiguration über Umgebungsvariablen statt UI-Settings.
- DDEV starten:
ddev start- Abhängigkeiten installieren:
ddev npm ci --omit=dev
ddev composer install
ddev php bin/copy-assets.php- Konfiguration anlegen:
cp .env.example .env- Datenbank migrieren:
ddev php vendor/bin/phinx migrate- Anwendung im Browser öffnen (URL wird von DDEV ausgegeben).
ddev php vendor/bin/phinx migrateFür lokale Entwicklung und Feature-Validierung gibt es einen Dev-only Seed-Befehl.
- Seeding ist nur erlaubt, wenn
APP_ENVaufdevelopment,devoderlocalsteht. ALLOW_DEV_SEED=1muss explizit gesetzt sein.- Fehlt eine der Bedingungen, wird der Seed-Lauf abgebrochen.
Empfohlen mit DDEV:
ddev exec APP_ENV=development ALLOW_DEV_SEED=1 php bin/dev_seed.php --mode=reset-and-seed --years=3 --seed=20260321Alternative (Composer-Skript):
ddev exec APP_ENV=development ALLOW_DEV_SEED=1 composer seed:dev -- --mode=append --years=3 --seed=20260321Verfügbare Modi:
append: fügt weitere Seed-Daten hinzu.reset-and-seed: leert seed-relevante Tabellen und erzeugt einen frischen Datensatz (nur Dev).
Der Seed-Report enthält credentials_by_role mit einem Demo-Login je Rolle:
- Admin
- Vorstand
- Chorleitung
- Stimmvertretung
- Ersatzvertretung
- Mitglied
Jeder Eintrag enthält role, email, password_plain und user_id.
Diese Zugangsdaten sind ausschließlich für Dev-Workflows gedacht und dürfen nie in Produktion genutzt werden.
SMTP-Einstellungen werden über Umgebungsvariablen gesetzt und nicht mehr in Stammdaten/App-Einstellungen gepflegt.
Verfügbare Variablen:
SMTP_HOST(Dev-Standard: ``)SMTP_PORT(Dev-Standard: ``)SMTP_AUTH(1/0,true/false; in Dev standardmäßig0)SMTP_USERNAME(in Produktion typischerweise erforderlich)SMTP_PASSWORD(in Produktion erforderlich)SMTP_ENCRYPTION(tls,ssl,none; Dev-Standard:none)SMTP_FROM_EMAIL(Dev-Standard:noreply@chor.local)SMTP_FROM_NAME(Dev-Standard:Chor-Manager)
docker-compose up --buildDanach ist die Anwendung unter http://localhost erreichbar.
Die Anwendung kann auch klassisch mit Nginx oder Apache betrieben werden.
- PHP 8.5
- Composer 2
- Node.js 24+ und npm
- MySQL oder MariaDB
- Webserver mit PHP-FPM oder Apache (Rewrite-Unterstützung)
Erforderliche PHP-Erweiterungen:
- mbstring
- pdo_mysql
- gd
- zip
- bcmath
git clone <REPOSITORY-URL>
cd ChorManagernpm ci --omit=dev
composer install --no-dev --optimize-autoloader --no-interaction --no-scripts
php bin/copy-assets.phpcp .env.example .envBeispiel für zentrale .env-Werte:
APP_ENV=production
APP_TIMEZONE=Europe/Vienna
DB_HOST=127.0.0.1
DB_DATABASE=chormanager
DB_USERNAME=chormanager
DB_PASSWORD=change_me
DB_PORT=3306
SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_AUTH=1
SMTP_USERNAME=smtp-user
SMTP_PASSWORD=change_me
SMTP_ENCRYPTION=tls
SMTP_FROM_EMAIL=noreply@example.com
SMTP_FROM_NAME=Chor-ManagerHinweis: Standardmäßig wird Port 3306 für die Datenbank verwendet.
php vendor/bin/phinx migrateDas Web-Root muss auf das Verzeichnis public zeigen.
Beispiel für Nginx:
server {
listen 80;
server_name example.com;
root /var/www/chormanager/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.5-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}Nach dem ersten Start kann unter /setup ein Administrator-Account erstellt werden.
- In Produktion sollte die Anwendung ausschließlich über HTTPS bereitgestellt werden.
- Frontend-Assets aus npm-Paketen werden mit
bin/copy-assets.phpnachpublic/vendorkopiert. - Nach
npm cisollte bei Paket-Änderungen erneutphp bin/copy-assets.phpausgeführt werden. - Wenn
composer installmit aktivierten Scripts läuft, werden Frontend-Assets nicht automatisch kopiert.