Compare commits

7 Commits

Author SHA1 Message Date
Faultier314
5d9d517d18 feat: merge feature/grundstruktur – project infrastructure and docs 2026-04-05 23:00:35 +02:00
Faultier314
d1831955c7 chore: commit pending local changes before branch switch 2026-04-05 23:00:35 +02:00
Faultier314
1abf4a647d chore: bump version to 0.2.3
Update project plan: finalize phases, techstack and architecture decisions

Version: 0.2.3
2026-04-05 22:53:35 +02:00
Faultier314
c2eb905d62 chore: bump version to 0.2.2
Add autonomous branch-switching rule to workflow docs

Version: 0.2.2
2026-04-05 22:34:54 +02:00
Faultier314
6af5df32f6 chore: add Claude tooling and optimize token efficiency
- .claude/scripts/bump.sh: one-command version bump + commit + push
- .claude/scripts/new-feature.sh: branch creation helper
- .claude/session-context.md: session start context
- CLAUDE.md: reduced to dispatch table, no rule duplication
- docs/project-structure.md: restructured as dense module reference

Version: 0.2.1
2026-04-05 22:32:58 +02:00
Faultier314
80c73595d2 feat: add repo standards infrastructure
- .gitattributes: normalize line endings to LF
- README.md: project overview and feature list
- .gitea/PULL_REQUEST_TEMPLATE.md: PR checklist
- CHANGELOG.md, VERSION: bump to 0.2.0

Version: 0.2.0
2026-04-05 22:25:36 +02:00
Faultier314
cd7a3f7414 chore: establish workflow rules, versioning and changelog
Add mandatory workflow rules (branching, versioning, docs-sync),
introduce CHANGELOG.md and VERSION file, update development
standards and CLAUDE.md accordingly.

Version: 0.1.1
2026-04-05 22:17:10 +02:00
12 changed files with 424 additions and 43 deletions

62
.claude/scripts/bump.sh Normal file
View File

@@ -0,0 +1,62 @@
#!/usr/bin/env bash
# bump.sh Version erhöhen, CHANGELOG aktualisieren, committen und pushen
#
# Verwendung:
# bash .claude/scripts/bump.sh patch "Beschreibung der Änderung"
# bash .claude/scripts/bump.sh minor "Beschreibung der Änderung"
# bash .claude/scripts/bump.sh major "Beschreibung der Änderung"
set -euo pipefail
BUMP_TYPE="${1:-patch}"
MESSAGE="${2:-}"
if [[ -z "$MESSAGE" ]]; then
echo "Fehler: Beschreibung fehlt."
echo "Verwendung: bash .claude/scripts/bump.sh [patch|minor|major] \"Beschreibung\""
exit 1
fi
ROOT="$(git rev-parse --show-toplevel)"
VERSION_FILE="$ROOT/VERSION"
CHANGELOG_FILE="$ROOT/CHANGELOG.md"
# Aktuelle Version lesen
CURRENT=$(cat "$VERSION_FILE" | tr -d '[:space:]')
IFS='.' read -r MAJOR MINOR PATCH <<< "$CURRENT"
# Version erhöhen
case "$BUMP_TYPE" in
major) MAJOR=$((MAJOR + 1)); MINOR=0; PATCH=0 ;;
minor) MINOR=$((MINOR + 1)); PATCH=0 ;;
patch) PATCH=$((PATCH + 1)) ;;
*)
echo "Fehler: Ungültiger Typ '$BUMP_TYPE'. Erlaubt: patch, minor, major"
exit 1
;;
esac
NEW_VERSION="$MAJOR.$MINOR.$PATCH"
DATE=$(date +%Y-%m-%d)
echo "Bump: $CURRENT$NEW_VERSION ($BUMP_TYPE)"
# VERSION aktualisieren
echo "$NEW_VERSION" > "$VERSION_FILE"
# CHANGELOG-Eintrag einfügen (nach der ersten ---)
ENTRY="## [$NEW_VERSION] - $DATE\n\n### Changed\n- $MESSAGE\n\n---\n"
# Füge nach der ersten '---' Zeile ein
awk -v entry="$ENTRY" '/^---$/ && !inserted { print; printf "%s", entry; inserted=1; next } { print }' \
"$CHANGELOG_FILE" > "$CHANGELOG_FILE.tmp" && mv "$CHANGELOG_FILE.tmp" "$CHANGELOG_FILE"
# Commit und Push
git -C "$ROOT" add "$VERSION_FILE" "$CHANGELOG_FILE"
git -C "$ROOT" commit -m "chore: bump version to $NEW_VERSION
$MESSAGE
Version: $NEW_VERSION"
git -C "$ROOT" push
echo "Fertig: Version $NEW_VERSION committed und gepusht."

View File

@@ -0,0 +1,41 @@
#!/usr/bin/env bash
# new-feature.sh Feature- oder Fix-Branch aus develop erstellen und pushen
#
# Verwendung:
# bash .claude/scripts/new-feature.sh feature <name>
# bash .claude/scripts/new-feature.sh fix <name>
# bash .claude/scripts/new-feature.sh debug <name>
set -euo pipefail
TYPE="${1:-}"
NAME="${2:-}"
if [[ -z "$TYPE" || -z "$NAME" ]]; then
echo "Verwendung: bash .claude/scripts/new-feature.sh [feature|fix|debug] <name>"
exit 1
fi
case "$TYPE" in
feature|fix|debug) ;;
*)
echo "Fehler: Ungültiger Typ '$TYPE'. Erlaubt: feature, fix, debug"
exit 1
;;
esac
BRANCH="$TYPE/$NAME"
ROOT="$(git rev-parse --show-toplevel)"
# Sicherstellen dass develop aktuell ist
echo "Wechsle zu develop und aktualisiere..."
git -C "$ROOT" checkout develop
git -C "$ROOT" pull origin develop
# Branch erstellen und pushen
echo "Erstelle Branch: $BRANCH"
git -C "$ROOT" checkout -b "$BRANCH"
git -C "$ROOT" push -u origin "$BRANCH"
echo "Fertig: Branch '$BRANCH' erstellt und gepusht."
echo "Aktiver Branch: $(git -C "$ROOT" branch --show-current)"

View File

@@ -0,0 +1,42 @@
# Session-Kontext
> Claude liest diese Datei zu Beginn jeder Session.
> Claude aktualisiert sie am Ende jeder Session (Version, Branch, offene Arbeit).
---
## Aktueller Stand
| Feld | Wert |
|---|---|
| **Version** | 0.2.1 |
| **Aktiver Branch** | feature/grundstruktur |
| **Basis-Branch** | develop |
| **Zuletzt geändert** | 2026-04-05 |
## Offene Arbeit
- [ ] Techstack festlegen
- [ ] feature/grundstruktur → develop mergen (wenn Techstack entschieden)
## Zuletzt abgeschlossen
- Repo-Infrastruktur aufgebaut (CLAUDE.md, Standards, Branching, README, PR-Template)
- .gitattributes, bump.sh, new-feature.sh, session-context.md eingeführt
- Branch Protection + Squash-Merge serverseitig konfiguriert
## Schnellreferenz
```bash
# Version bumpen
bash .claude/scripts/bump.sh patch "Was wurde geändert"
# Neuen Branch erstellen
bash .claude/scripts/new-feature.sh feature <name>
# Aktueller Branch
git branch --show-current
# Status
git status
```

View File

@@ -0,0 +1,14 @@
{
"permissions": {
"allow": [
"Bash(curl -s -o /dev/null -w \"%{http_code}\" https://tea.jr-family.de/api/v1/repos/Admin/gartenmanager)",
"Bash(git -C c:/Projekte/Home/gartenmanager config --get credential.helper)",
"Bash(git credential:*)",
"Bash(python3 -m json.tool)",
"Bash(git -C c:/Projekte/Home/gartenmanager credential fill)",
"Bash(python3 -c \"import sys,json; r=json.load\\(sys.stdin\\); print\\('allow_squash_merge:', r.get\\('allow_squash_merge'\\), '| default_merge_style:', r.get\\('default_merge_style'\\)\\)\")",
"Bash(bash .claude/scripts/bump.sh patch \"Add autonomous branch-switching rule to workflow docs\")",
"Bash(bash .claude/scripts/bump.sh patch \"Update project plan: finalize phases, techstack and architecture decisions\")"
]
}
}

35
.gitattributes vendored Normal file
View File

@@ -0,0 +1,35 @@
# Automatische Zeilenendenormalisierung
* text=auto
# Explizit Text-Dateien auf LF normieren
*.md text eol=lf
*.txt text eol=lf
*.json text eol=lf
*.yaml text eol=lf
*.yml text eol=lf
*.toml text eol=lf
*.xml text eol=lf
*.html text eol=lf
*.css text eol=lf
*.scss text eol=lf
*.js text eol=lf
*.ts text eol=lf
*.tsx text eol=lf
*.jsx text eol=lf
*.py text eol=lf
*.sh text eol=lf
*.env text eol=lf
# Binärdateien kein Zeilenenden-Handling
*.png binary
*.jpg binary
*.jpeg binary
*.gif binary
*.ico binary
*.svg binary
*.woff binary
*.woff2 binary
*.ttf binary
*.eot binary
*.pdf binary
*.zip binary

View File

@@ -0,0 +1,28 @@
## Beschreibung
<!-- Was wurde geändert und warum? -->
## Typ der Änderung
- [ ] `feat` neues Feature
- [ ] `fix` Bugfix
- [ ] `refactor` Code-Umbau ohne Verhaltensänderung
- [ ] `chore` Wartung, Build, Konfiguration
- [ ] `docs` nur Dokumentation
## Checkliste
- [ ] Alle Tests erfolgreich (`<test-command>`)
- [ ] Versionsnummer erhöht (`VERSION` + `CHANGELOG.md`)
- [ ] `docs/project-structure.md` aktualisiert (falls Funktionen/Module geändert)
- [ ] `README.md` aktualisiert (falls nötig)
- [ ] Branch ist aktuell mit `develop` (rebase/merge)
- [ ] Kein direkter Push nach `main` diese PR geht nach `develop`
## Getestete Szenarien
<!-- Was wurde manuell oder automatisch getestet? -->
## Version
<!-- z.B. 0.2.1 -->

61
CHANGELOG.md Normal file
View File

@@ -0,0 +1,61 @@
# Changelog
Alle wesentlichen Änderungen am Projekt werden hier dokumentiert.
Format: `[MAJOR.MINOR.PATCH] - YYYY-MM-DD`
---
## [0.2.3] - 2026-04-05
### Changed
- Update project plan: finalize phases, techstack and architecture decisions
---
## [0.2.2] - 2026-04-05
### Changed
- Add autonomous branch-switching rule to workflow docs
---
## [0.2.1] - 2026-04-05
### Changed
- `CLAUDE.md` auf reine Dispatch-Tabelle reduziert (keine Regelwiederholungen)
- `docs/project-structure.md` als dichte Modulreferenz-Vorlage strukturiert
### Added
- `.claude/scripts/bump.sh` Version + CHANGELOG + commit + push in einem Befehl
- `.claude/scripts/new-feature.sh` Feature/Fix/Debug-Branch aus develop erstellen
- `.claude/session-context.md` Sessionstart-Kontext (Version, Branch, offene Arbeit)
---
## [0.2.0] - 2026-04-05
### Added
- `.gitattributes` automatische LF-Normalisierung, keine CRLF-Warnungen mehr
- `README.md` Projektbeschreibung, Features-Übersicht, Links zur Dokumentation
- `.gitea/PULL_REQUEST_TEMPLATE.md` Checkliste für PRs (Tests, Version, Docs)
- Branch Protection für `main` und `develop` (serverseitig konfiguriert)
- Squash-Merge als Standard-Merge-Strategie (serverseitig konfiguriert)
---
## [0.1.1] - 2026-04-05
### Changed
- Entwicklungsstandards um Branching-Regeln, Versionierungsschema und Workflow-Regeln erweitert
### Added
- CHANGELOG.md eingeführt
- VERSION-Datei eingeführt
---
## [0.1.0] - 2026-04-05
### Added
- CLAUDE.md Guidance für Claude Code
- docs/development-standards.md allgemeine Entwicklungsstandards
- docs/project-structure.md Projektstruktur und Domänenmodell
- docs/branching-strategy.md Branching-Strategie

View File

@@ -4,14 +4,19 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
## Projekt ## Projekt
**Gartenmanager** eine Anwendung zur Verwaltung und Planung von Gartenaktivitäten (Pflanzen, Aussaatkalender, Aufgaben, Bewässerung etc.). **Gartenmanager** Anwendung zur Verwaltung von Gartenaktivitäten (Pflanzen, Beete, Aussaatkalender, Aufgaben, Bewässerung).
## Weiterführende Dokumente ## Dokumente wo was steht
| Dokument | Inhalt | | Dokument | Inhalt |
|---|---| |---|---|
| [docs/development-standards.md](docs/development-standards.md) | Allgemeine Entwicklungsstandards (Coding Style, Git, Testing) | | [docs/development-standards.md](docs/development-standards.md) | **Alle Regeln:** Branching, Versionierung, Workflow, Coding, Testing |
| [docs/project-structure.md](docs/project-structure.md) | Projektstruktur und Architekturübersicht | | [docs/project-structure.md](docs/project-structure.md) | **Alle Module & Funktionen** hier zuerst lesen, bevor Quellcode geöffnet wird |
| [docs/branching-strategy.md](docs/branching-strategy.md) | Branch-Diagramm |
| [CHANGELOG.md](CHANGELOG.md) | Versionshistorie |
| [VERSION](VERSION) | Aktuelle Versionsnummer |
| [.claude/session-context.md](.claude/session-context.md) | **Sessionstart hier lesen:** aktiver Branch, Version, offene Arbeit |
| [.claude/scripts/](.claude/scripts/) | Automatisierungsscripts (bump, new-feature) |
## Techstack ## Techstack
@@ -39,9 +44,10 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
# Build für Produktion # Build für Produktion
# <build-command> # <build-command>
# Version bumpen + commit + push (patch/minor/major)
bash .claude/scripts/bump.sh patch "Beschreibung der Änderung"
# Neuen Feature-Branch erstellen
bash .claude/scripts/new-feature.sh <name>
``` ```
## Wichtige Konventionen
- Sprache: Deutsch für Domänenkonzepte (Pflanzen, Beet, Aussaat …), Englisch für Code-Bezeichner und Commit-Messages
- Alle Dateipfade in den `docs/`-Dokumenten aktuell halten, wenn sich die Struktur ändert

32
README.md Normal file
View File

@@ -0,0 +1,32 @@
# Gartenmanager
Persönliche Webanwendung zur Verwaltung und Planung von Gartenaktivitäten.
## Features (geplant)
- **Pflanzenverwaltung** Pflanzenarten mit Eigenschaften (Aussaatzeit, Wasserbedarf, Abstand …)
- **Beetplanung** Beete anlegen und Pflanzen zuordnen
- **Aussaatkalender** Jahresbasierter Aussaat- und Pflanzungsplan
- **Aufgabenverwaltung** Gartenaufgaben mit Fälligkeitsdatum
- **Bewässerungsplan** Intervalle je Beet oder Pflanze
## Techstack
> Noch festzulegen.
## Entwicklung
> Build- und Run-Befehle werden hier ergänzt, sobald der Techstack feststeht.
Weiterführende Dokumentation:
- [Entwicklungsstandards](docs/development-standards.md)
- [Projektstruktur](docs/project-structure.md)
- [Branching-Strategie](docs/branching-strategy.md)
- [Changelog](CHANGELOG.md)
## Versionierung
Aktuelle Version: siehe [VERSION](VERSION)
Schema: `MAJOR.MINOR.PATCH` Details in den [Entwicklungsstandards](docs/development-standards.md#versionierung).

1
VERSION Normal file
View File

@@ -0,0 +1 @@
0.2.3

View File

@@ -13,17 +13,27 @@ Allgemein gültige Standards für die Arbeit in diesem Repository.
--- ---
## Git ## Git & Branching
### Branching ### Struktur
``` ```
main stabiler Produktionsstand main
feature/<name> neue Features └── develop
fix/<name> Bugfixes ├── feature/<name> neue Features
chore/<name> Wartung, Abhängigkeiten, Konfiguration ├── fix/<name> Bugfixes / kleine Fixes
└── debug/<name> Debugging / Fehleranalyse
``` ```
### Regeln
0. **Branch-Wechsel erfolgen selbstständig** Claude wechselt eigenständig in den jeweils passenden Branch, ohne nachzufragen. Dabei gelten alle übrigen Regeln uneingeschränkt.
1. **Nie direkt nach `main` pushen oder mergen.** Änderungen in `main` kommen ausschließlich über eine Pull-Request aus `develop`.
2. Jede Änderung findet in einem eigenen `feature/` oder `fix/` Branch unterhalb von `develop` statt.
3. In `develop` mergen erst, wenn die Arbeit abgeschlossen ist und alle Tests erfolgreich waren.
4. Eine PR nach `main` wird nur auf explizite Anweisung des Nutzers geöffnet.
5. Vor jedem Merge nach `develop` und vor jeder PR nach `main` werden alle wesentlichen Dokumente (README.md, CHANGELOG.md, docs/) geprüft und ggf. aktualisiert.
### Commit-Messages ### Commit-Messages
Format: `<type>: <short description>` (max. 72 Zeichen) Format: `<type>: <short description>` (max. 72 Zeichen)
@@ -37,7 +47,31 @@ Format: `<type>: <short description>` (max. 72 Zeichen)
| `docs` | Nur Dokumentation | | `docs` | Nur Dokumentation |
| `chore` | Build, Dependencies, Konfiguration | | `chore` | Build, Dependencies, Konfiguration |
Beispiel: `feat: add watering schedule to plant detail view` **Nach jedem Commit wird sofort gepusht.**
---
## Versionierung
Schema: `MAJOR.MINOR.PATCH`
| Teil | Bedeutung | Wechsel |
|---|---|---|
| `MAJOR` | Hauptrelease | Nur auf explizite Anweisung des Nutzers |
| `MINOR` | Größere Updates, neue Features | Bei jeder Feature-Erweiterung oder größerem Umbau |
| `PATCH` | Kleine Fixes, Minimalkorrekturen | Bei Bugfixes, kleinen Ergänzungen, Mini-Umbauten |
- Die aktuelle Version steht in [CHANGELOG.md](../CHANGELOG.md) und in der Datei `VERSION`
- Nach **jeder** Änderung wird die Versionsnummer eigenständig erhöht und in beiden Dateien notiert
- Die Versionsnummer wird im Commit-Message-Footer vermerkt: `Version: x.y.z`
---
## Projektstruktur-Dokumentation
- Alle Funktionen/Module werden kurz in [docs/project-structure.md](project-structure.md) dokumentiert
- Ziel: Token-Effizienz in zukünftigen Conversations nicht alles neu einlesen müssen
- Bei jeder Änderung an Funktionen/Modulen wird die Dokumentation synchron aktualisiert
--- ---
@@ -56,6 +90,7 @@ Beispiel: `feat: add watering schedule to plant detail view`
- Integrationstests an Systemgrenzen (API, Datenbank) - Integrationstests an Systemgrenzen (API, Datenbank)
- Keine Mocks für die Datenbank in Integrationstests - Keine Mocks für die Datenbank in Integrationstests
- Testdatei liegt neben der zu testenden Datei oder in einem `__tests__`/`tests`-Verzeichnis auf gleicher Ebene - Testdatei liegt neben der zu testenden Datei oder in einem `__tests__`/`tests`-Verzeichnis auf gleicher Ebene
- **In `develop` wird erst gemergt, wenn alle Tests grün sind**
--- ---

View File

@@ -1,47 +1,59 @@
# Projektstruktur # Projektstruktur & Modulreferenz
> Dieses Dokument beschreibt die Verzeichnisstruktur und Architektur des Gartenmanagers. > **Token-Sparmaßnahme:** Dieses Dokument ist die erste Anlaufstelle.
> Bei strukturellen Änderungen bitte hier aktualisieren. > Vor dem Öffnen von Quellcode hier nachschlagen.
> Bei jeder Änderung an Funktionen, Modulen oder der Verzeichnisstruktur sofort aktualisieren.
--- ---
## Verzeichnisübersicht ## Verzeichnisstruktur
``` ```
gartenmanager/ gartenmanager/
├── CLAUDE.md # Guidance für Claude Code ├── .claude/ # Claude-Tooling (kein Projektcode)
│ ├── scripts/
│ │ ├── bump.sh # Version bumpen + commit + push
│ │ └── new-feature.sh # Feature-Branch erstellen
│ └── session-context.md # Sessionstart-Kontext
├── .gitea/
│ └── PULL_REQUEST_TEMPLATE.md
├── docs/ ├── docs/
│ ├── development-standards.md # Allgemeine Entwicklungsstandards │ ├── branching-strategy.md
── project-structure.md # Dieses Dokument ── development-standards.md
└── project-structure.md # dieses Dokument
│ (weitere Verzeichnisse entstehen mit dem Projekt) ├── .gitattributes
├── CHANGELOG.md
├── CLAUDE.md
├── README.md
└── VERSION
``` ```
> Sobald der Techstack feststeht, wird diese Struktur hier dokumentiert. > Sobald Quellcode-Verzeichnisse entstehen, hier ergänzen.
--- ---
## Architektur ## Modulübersicht
> Noch festzulegen. Typische Optionen für dieses Projekt: > Noch kein Anwendungscode vorhanden. Sobald Module/Komponenten entstehen:
> >
> - **Monolith** (z. B. Full-Stack-Framework wie Laravel, Django, Rails) > ```
> - **Frontend + Backend getrennt** (z. B. Vue/React + REST/GraphQL API) > Modulname | Datei(en) | Zweck | Exportierte Funktionen
> - **Mobile App** (z. B. Flutter, React Native) > ```
>
> **Format pro Funktion:**
> `funktionsname(param: Typ): Rückgabetyp` Ein-Satz-Beschreibung
--- ---
## Domänenmodell (geplant) ## Domänenmodell
Die Kernkonzepte des Gartenmanagers: | Entität | Felder (geplant) | Beziehungen |
|---|---|---|
| Konzept | Beschreibung | | `Plant` | name, sowingStart, sowingEnd, waterInterval, spacing | gehört zu Bed |
|---|---| | `Bed` | name, width, length, location | enthält viele Plants |
| `Plant` / Pflanze | Eine Pflanzenart mit Eigenschaften (Aussaatzeit, Abstand, Wasserbedarf …) | | `SowingCalendar` | year, plantId, sowDate, plantDate | referenziert Plant |
| `Bed` / Beet | Ein physischer Gartenbereich, dem Pflanzen zugeordnet werden | | `Task` | title, dueDate, done, bedId? | optional zu Bed |
| `SowingCalendar` / Aussaatkalender | Zeitplan für Aussaat und Pflanzung je Pflanze und Jahr | | `WateringSchedule` | bedId/plantId, intervalDays, lastWatered | referenziert Bed oder Plant |
| `Task` / Aufgabe | Eine zu erledigende Gartenarbeit mit Fälligkeitsdatum |
| `WateringSchedule` / Bewässerungsplan | Regelmäßige Bewässerungsintervalle je Beet oder Pflanze |
--- ---
@@ -51,6 +63,18 @@ Die Kernkonzepte des Gartenmanagers:
--- ---
## Schnittstellen ## Schnittstellen / API
> Noch festzulegen. > Noch festzulegen. Hier Endpunkte mit Kurzbeschreibung eintragen:
>
> ```
> GET /api/plants alle Pflanzen
> POST /api/plants neue Pflanze anlegen
> ...
> ```
---
## Konfiguration
> Relevante Umgebungsvariablen und Konfigurationsdateien hier auflisten.