# 📦 Versionierung im Projekt

## 🎯 Ziel

Dieses Projekt verwendet eine automatisierte und konsistente Versionsverwaltung, um Klarheit über
die aktuelle App-Version zu gewährleisten und manuelle Fehler zu vermeiden.

---

## 🗂️ Wo wird die Version gespeichert?

Die App-Version ist in **vier Dateien synchron enthalten**:

| Datei               | Zweck                                     |
| ------------------- | ----------------------------------------- |
| `package.json`      | Hauptquelle für Version (npm, Git)        |
| `package-lock.json` | Technischer Zustand des Builds            |
| `.env.development`  | Anzeige in der UI zur Entwicklungszeit    |
| `.env.production`   | Anzeige in der UI auf Produktionssystemen |

Beispiel-Eintrag in `.env.*`:

```env
NEXT_PUBLIC_APP_VERSION=1.1.265
```

---

## ⚙️ Wie wird die Version erhöht?

Die Version wird automatisch durch folgendes Skript erhöht:

```bash
node scripts/bumpVersion.js
```

### Dieses Skript erledigt:

- Erhöhung der Patch-Version (z. B. `1.1.265` → `1.1.266`)
- Aktualisierung von `package.json`
- Erstellung eines synchronen `package-lock.json`
- Aktualisierung der `.env.development` und `.env.production` mit neuer Version

Das Skript wird zusätzlich automatisch beim Git-Commit über Husky (`.husky/pre-commit`) ausgeführt.

---

## 🧠 Warum ist das hilfreich?

- Die UI zeigt **immer die aktuelle App-Version**, über `process.env.NEXT_PUBLIC_APP_VERSION`
- Git-History, Deployments und ZIP-Versionen sind nachvollziehbar
- Keine Inkonsistenzen durch manuelle Pflege
- Reproduzierbare Builds dank `package-lock.json`

---

## 🧑‍💻 Hinweis für neue Entwickler

- ❌ Niemals die Versionsnummer manuell in nur einer Datei ändern!
- ✅ Immer das Skript nutzen oder den Commit-Hook wirken lassen.
- 🔁 Nach Konflikten: Stelle sicher, dass `package-lock.json` und `.env.*` konsistent sind.

---

📘 Pfad diese Datei:  
[`/docs/standards/versioning.md`](/docs/standards/versioning.md)
