# Cazubu - Pflanzenverwaltung

Cazubu ist eine Webanwendung zur Verwaltung von Pflanzen, Inventar, Samen und Sensoren.

## Projektstruktur
Das Projekt ist so aufgebaut, dass der Quellcode vom Deployment-Setup getrennt ist:
- **`src/`**: Enthält den gesamten PHP-Quellcode, Assets und Frontend-Ressourcen.
- **`Dockerfile`**: Definition des Docker-Images.
- **`.gitea/workflows`**: CI/CD-Konfiguration.

## Installation & Betrieb

### Voraussetzungen
- Docker Engine
- Eine laufende MySQL/MariaDB Datenbank

### Docker Build & Run

1. **Image bauen:**
   ```bash
   docker build -t cazubu .
   ```

2. **Container starten (Produktiv):**
   Für den produktiven Einsatz sollten Uploads (Bilder) persistent gespeichert werden. Dafür binden wir ein Volume an `/var/www/html/uploads`.

   ```bash
   docker run -d \
     -p 8080:80 \
     -e DB_SERVER="deine-db-ip" \
     -e DB_USERNAME="cazubu" \
     -e DB_PASSWORD="dein-sicheres-passwort" \
     -e DB_NAME="cazubu" \
     -v cazubu_uploads:/var/www/html/uploads \
     --name cazubu-app \
     --restart unless-stopped \
     cazubu
   ```

### Umgebungsvariablen

Die Anwendung wird über Umgebungsvariablen konfiguriert. Wenn diese nicht gesetzt sind, werden interne Fallbacks (für Entwicklung) genutzt.

| Variable | Beschreibung | Standard (Dev) |
|----------|--------------|----------------|
| `DB_SERVER` | IP oder Hostname des Datenbankservers | `172.30.242.130` |
| `DB_USERNAME` | Datenbank-Benutzer | `cazubu` |
| `DB_PASSWORD` | Datenbank-Passwort | (interner Standard) |
| `DB_NAME` | Name der Datenbank | `cazubu` |

### Persistente Daten
User-Uploads (Pflanzenbilder) werden im Container unter `/var/www/html/uploads` gespeichert.
Um Datenverlust beim Neustart/Update des Containers zu vermeiden, **muss** dieses Verzeichnis als Volume gemountet werden (siehe oben).

## Entwicklung

Um lokal zu entwickeln, ohne jedes Mal das Image neu zu bauen, kann der `src`-Ordner direkt in den Container gemountet werden:

```bash
docker run -d \
  -p 8080:80 \
  -v $(pwd)/src:/var/www/html \
  --name cazubu-dev \
  cazubu
```

## Changelog

### 2025-12-07 - Refactoring & Dockerisierung
- **Struktur:** Quellcode nach `src/` verschoben für saubereres Root-Verzeichnis.
- **Docker:** `Dockerfile` angepasst (kopiert nun `src/`).
- **Doku:** `README.md` erweitert um detaillierte Deployment-Infos und Volume-Handling.
- **CI/CD:** Pipeline für automatischen Build & Push eingerichtet.