Finanzmanager/CONTRIBUTE.md
fds2610-bot 94e8057d73 Fix #43: CONTRIBUTE.md und Setup-Skript für Mitwirkende
CONTRIBUTE.md beschreibt Wege für Beiträge, gesuchte Unterstützung und die
drei bindenden Leitlinien (FOSS, Datensparsamkeit, Security) mit einem
Disclaimer, dass VIBE Coding ausdrücklich erlaubt ist. dev-setup.sh im
Repo-Root richtet Docker, Fork/Upstream-Checkout, lokale Container und
optional die E2E-Testinfrastruktur ein.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-19 20:28:10 +02:00

166 lines
6.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Mitmachen
## Disclaimer: VIBE Coding ist ausdrücklich erlaubt
Dieses Projekt ist mit intensivem Einsatz von LLMs entstanden – Architektur,
Implementierung, Tests und Dokumentation liefen zu einem großen Teil über
Claude Code. Das ist kein Betriebsunfall, sondern bewusste Arbeitsweise. Wer
hier mitmachen möchte, muss also keine Glaubensfrage klären: Ob eine Änderung
per Hand geschrieben oder mit einem Coding-Agenten erarbeitet wurde, spielt für
die Aufnahme keine Rolle. Wichtig ist, was am Ende im PR steht – nachvollziehbar,
getestet, den Leitlinien unten folgend.
## Leitlinien
Diese drei Punkte sind die grundsätzliche Haltung des Autors und für dieses
Projekt bindend. Mitwirkende dürfen fachlich anderer Meinung sein – an diesen
Leitplanken selbst ändert das nichts.
1. **FOSS – Open Source first.** Der Code enthält keine proprietären
Bestandteile. So, wie er in diesem Repository liegt, ist er vollständig
nutzbar – ohne versteckte Abhängigkeit von einem externen Dienst, einer
kostenpflichtigen Lizenz oder einer geschlossenen Komponente.
2. **Datensparsamkeit.** Wer die Anwendung betreibt, hat jederzeit maximale
Transparenz darüber, welche Daten verarbeitet werden. Es gibt keine
Telemetrie und keine Übermittlung von Nutzdaten an die Autoren dieses
Repos. Werden Daten irgendwohin verschickt, die der Nutzer nicht selbst
konfiguriert hat, gilt das als Security-Bug mit höchster Priorität.
3. **Security.** Das Modul soll jederzeit dem Stand der Technik entsprechen.
Gemeldete Sicherheitslücken werden mit oberster Priorität behoben. Da es
sich dabei um vertrauliche Informationen handelt: **bitte nicht als
öffentliches Issue melden**, sondern direkt per E-Mail an
[fds2610@sonnengetrock.net](mailto:fds2610@sonnengetrock.net).
## Wie mithelfen?
Damit ein Beitrag wirklich ankommt, bitte einen der folgenden Wege nutzen:
1. Ein Issue auf [Codeberg](https://codeberg.org/fds2610/Finanzmanager/issues)
anlegen – als **BUG** oder **FEATURE**.
2. Einen Pull Request aus einem eigenen Fork erstellen.
3. Eine E-Mail an [fds2610@sonnengetrock.net](mailto:fds2610@sonnengetrock.net).
Besonders willkommen ist Unterstützung bei:
- **Dokumentation** (kann immer verbessert werden)
- **Übersetzungen**
- **Bugfixes**
- **Feature-Umsetzungen**
Aktuell review ich jeden Pull Request persönlich. Das ist bei wachsendem
Interesse möglicherweise irgendwann ein Flaschenhals – dann werde ich mir
etwas überlegen. Bis dahin: etwas Geduld beim Review einplanen.
Fachbegriffe im Code und in der Oberfläche folgen bewusst dem Original
(Lexware FinanzManager) und bleiben deutsch – siehe die Begriffsliste in
[`CLAUDE.md`](CLAUDE.md). Neue Wortschöpfungen oder englische Entsprechungen
bitte vermeiden.
## Entwicklungsumgebung aufsetzen
Das Setup ist bewusst schlank gehalten: Auf dem Host werden nur **Docker**,
**Git** und optional **Claude Code** benötigt – alles Projektspezifische läuft
in Containern. Kein lokales PHP, kein Composer, kein MariaDB auf dem Host.
Wer alle Schritte auf einmal ausführen will, nutzt das Setup-Skript:
```bash
./dev-setup.sh
```
Es fragt nichts nach, was sich per Flag oder Umgebungsvariable vorgeben lässt
(siehe `./dev-setup.sh --help`), und lässt sich beliebig oft erneut ausführen.
Im Folgenden die einzelnen Schritte, die das Skript automatisiert.
### 0. Voraussetzungen auf dem Host
Nur was zwingend nötig ist, um überhaupt Container starten und Code verwalten
zu können:
- **Docker** (inkl. Compose-Plugin)
- **Git**
- optional **Claude Code**, wenn mit einem Coding-Agenten gearbeitet werden
soll
Alles andere – PHP, Composer, MariaDB, Node/Playwright für die E2E-Tests –
bleibt in Containern gekapselt.
### 1. Fork, Remotes und Zugangsdaten
Dieses Repository arbeitet mit zwei Remotes: dem persönlichen Fork (`origin`,
wohin gepusht wird) und dem Upstream-Repository (`upstream`, von dem gezogen
wird):
```bash
git clone https://codeberg.org/<dein-fork-account>/Finanzmanager.git
cd Finanzmanager
git remote add upstream https://codeberg.org/fds2610/Finanzmanager.git
git fetch upstream
```
Für Pull Requests reicht ein persönliches [Zugriffs-Token](https://codeberg.org/user/settings/applications)
mit Schreibrechten auf den eigenen Fork. Wer die Entwicklung automatisiert
(z. B. über einen eigenen Bot-Account, wie es dieses Repo mit dem
`fds2610-bot`-Account und dem Token in `CODEBERG_BOT_TOKEN` tut), legt dafür
einen separaten Account an, forkt darüber das Upstream-Repo und authentifiziert
sich mit dem Bot-Token statt dem persönlichen:
```bash
curl -s -X POST "https://codeberg.org/api/v1/repos/fds2610/Finanzmanager/forks" \
-H "Authorization: token $CODEBERG_BOT_TOKEN"
git remote set-url origin "https://<bot-account>:${CODEBERG_BOT_TOKEN}@codeberg.org/<bot-account>/Finanzmanager.git"
```
Der eigentliche Beitrag – Issue, PR, E-Mail – läuft aber unabhängig davon,
ob mit persönlichem Token oder Bot-Setup gearbeitet wird.
### 2. Lokale Container starten
```bash
cp .env.example .env
docker compose up -d
```
Die Anwendung ist danach unter **http://localhost:8000** erreichbar
(Port aus `docker-compose.yml`). Migrationen spielt der Container beim Start
automatisch ein, siehe `docker-entrypoint.sh`. Die Test-Suite:
```bash
./scripts/run-tests.sh
```
### 3. E2E-Tests (optional)
Browser-Tests laufen über ein separates, generisches Playwright-Runner-Projekt
(`e2e-runner`), das **nicht** Teil dieses Repos ist und standardmäßig unter
`~/projects/e2e-runner` erwartet wird. Ist es nicht vorhanden, überspringt
`tests/e2e/run.sh` die E2E-Tests automatisch mit einer Warnung – nichts
schlägt deswegen fehl. Wer es einrichten möchte:
```bash
docker compose exec -u www-data php php scripts/e2e-benutzer.php # Testnutzer anlegen
tests/e2e/run.sh # läuft, sobald der Runner existiert
```
Details und abweichende Pfade/URLs stehen in `tests/e2e/README.md`.
### 4. Claude Code auf dem Projektverzeichnis
Claude Code wird im ausgecheckten Projektverzeichnis gestartet und liest
[`CLAUDE.md`](CLAUDE.md) als verbindliche Betriebs- und Coding-Regeln – unter
anderem: keine lokale Installation von PHP/Composer/MariaDB ohne Rückfrage,
Tests immer im Container als `www-data`, SQL nur über `Database::…` mit
Prepared Statements, deutsche Fachbegriffe. Darüber hinausgehende, riskante
Aktionen (Force-Push, Löschen, Schema-Änderungen außerhalb von `migrations/`
usw.) bestätigt Claude Code vor der Ausführung interaktiv – das entspricht dem
Standard-Berechtigungsmodell von Claude Code und wurde für dieses Projekt
nicht erweitert. Wer Claude Code stärker automatisiert einsetzen möchte (z. B.
für wiederkehrende Aufgaben ohne Rückfrage), regelt das über die eigene
`.claude/settings.json` – das ist eine persönliche Entscheidung und nicht Teil
dieses Repos.
## Lizenz
MIT, siehe [`LICENSE`](LICENSE). Beiträge werden unter derselben Lizenz
angenommen.