# Beitragen zu PBP Danke, dass du PBP verbessern möchtest! Hier findest du alles, was du dafür wissen musst. ## Schnellstart ```bash # Repository klonen git clone https://github.com/MadGapun/PBP.git cd PBP # Python-Umgebung einrichten python -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate pip install -e ".[all,dev]" playwright install chromium # Tests ausführen python -m pytest tests/ -q # Dashboard starten python start_dashboard.py # → http://localhost:8200 # Frontend entwickeln (Hot Reload) cd frontend pnpm install pnpm run dev # → http://localhost:5173 ``` ## Wie du beitragen kannst ### Bugs melden Nutze das [Bug-Template](https://github.com/MadGapun/PBP/issues/new?template=bug_report.yml). Je mehr Details (Version, Betriebssystem, Schritte zum Reproduzieren), desto schneller können wir helfen. **Issues sind öffentlich.** Schreibe keine Namen von Firmen, bei denen du dich beworben hast, keine Namen von Personen, keine E-Mail-Adressen oder Telefonnummern hinein — auch nicht in Log-Auszügen und Screenshots. Ersetze sie durch Platzhalter (``, ``). Ein Issue, das so etwas enthält, lässt sich nur durch Löschen bereinigen. ### Features vorschlagen Nutze das [Feature-Template](https://github.com/MadGapun/PBP/issues/new?template=feature_request.yml). Beschreibe das Problem, das du lösen möchtest — nicht nur die gewünschte Lösung. ### Code beitragen 1. **Fork** das Repository 2. Erstelle einen **Branch** von `main`: `git checkout main && git checkout -b feature/mein-feature` (betrifft der Fehler auch die stabile Version, siehe unten) 3. Entwickle und teste lokal 4. Stelle sicher, dass alle Tests grün sind: `python -m pytest tests/ -q` 5. Erstelle einen **Pull Request** gegen `main` ### Branch-Strategie ``` main → Laufende Entwicklung = die Beta-Linie (1.8.0-beta.N, "Pre-release" auf GitHub) hotfix/v1.7.N → Die stabile Linie (1.7.x, "Latest" auf GitHub) feature/* → Einzelne Features/Bugfixes, werden nach main gemergt ``` - **Stabile Releases** (z.B. `v1.7.148`) entstehen auf einem Zweig `hotfix/v1.7.N`, der vom Tag der vorigen stabilen Version abzweigt, und werden dort getaggt → GitHub "Latest Release" - **Beta-Releases** (z.B. `v1.8.0-beta.15`) werden auf `main` getaggt → GitHub "Pre-release". Solange ein großer Pull Request noch nicht gemergt ist, wird auf dessen Zweig getaggt (so `v1.8.0-beta.16` auf `feature/v18-firmen-1080`). - **Ein Fehler, der auch die stabile Version betrifft**, gehört zuerst in die 1.7-Linie (`hotfix/…`) und danach per Rückführung nach `main` — nicht nur in die Beta, die kaum jemand nutzt. Gib im Pull Request an, ob der Fehler die stabile Version betrifft. ### Tipp für die Zusammenarbeit mit Claude/Codex Claude (und andere KI-Assistenten) brauchen manchmal explizite, wiederholte Anweisungen — besonders bei komplexeren Aufgaben. Wenn etwas nicht beim ersten Mal klappt: Nochmal klar sagen, was genau erwartet wird. Das ist kein Fehler, sondern Teil des Workflows. ## Konventionen ### Code-Stil - **Python:** Keine strikten Linter-Regeln, aber sauberer, lesbarer Code - **Deutsche UI:** Alle Texte, Tooltips und Fehlermeldungen auf Deutsch - **Docstrings:** Für neue Tools und Services erwünscht ### Commit-Messages ``` feat: Kurze Beschreibung # Neues Feature fix: Kurze Beschreibung # Bugfix docs: Kurze Beschreibung # Dokumentation refactor: Kurze Beschreibung # Refactoring ohne Funktionsänderung ``` ### Tests - Neue Features sollten Tests haben - Tests liegen in `tests/` - Ausführen: `python -m pytest tests/ -q` - Browser-Tests brauchen Playwright: `playwright install chromium` ### Projektstruktur ``` src/bewerbungs_assistent/ ├── tools/ ← MCP-Tools, nach Themen in Modulen ├── services/ ← Service-Layer ├── job_scraper/ ← Jobportal-Scraper ├── database.py ← SQLite Schema ├── dashboard.py ← FastAPI + REST-API └── server.py ← MCP-Server (Composition Root) frontend/ ← React 19 + Vite + Tailwind tests/ ← pytest Test-Suite ``` ## Fragen? Erstelle ein [Issue](https://github.com/MadGapun/PBP/issues) — wir antworten auf Deutsch und Englisch. ## Lizenz Mit deinem Beitrag stimmst du zu, dass er unter der [MIT-Lizenz](LICENSE) veröffentlicht wird.