API updadte

This commit is contained in:
2025-11-09 11:27:21 +01:00
parent 77206224a2
commit 4953d192c0
8 changed files with 2343 additions and 784 deletions

291
docs/installation.md Normal file
View File

@@ -0,0 +1,291 @@
# Installation & Setup
[← Zurück zur Hauptseite](../README.md)
## Voraussetzungen
- **Docker Desktop** (Windows/Mac) oder **Docker Engine + Docker Compose** (Linux)
- **Git**
- Mindestens 2GB freier RAM für Docker
- Ports 8080, 8081 und 3306 verfügbar
## Installations-Schritte
### 1. Repository klonen
```bash
git clone <repository-url>
cd immorechner
```
### 2. Docker-Container starten
```bash
docker-compose up -d --build
```
Dieser Befehl:
- Baut das PHP 8.4 Image mit allen benötigten Extensions
- Startet MariaDB Container
- Startet phpMyAdmin Container
- Startet den Apache-Webserver
**Hinweis:** Der erste Build kann 5-10 Minuten dauern.
### 3. Dependencies installieren
```bash
docker-compose exec web composer install
```
### 4. Bundle-Assets installieren
```bash
docker-compose exec web php bin/console assets:install public --symlink --relative
```
Dieser Schritt ist wichtig für die Swagger UI (CSS, JS, Bilder).
### 5. Datenbank-Schema erstellen
```bash
docker-compose exec web php bin/console doctrine:migrations:migrate --no-interaction
```
Diese Migration erstellt:
- Users-Tabelle mit Passwort- und API-Key-Feldern
- Bundesländer-Tabelle (vorbefüllt mit allen 16 deutschen Bundesländern)
- Heizungstypen-Tabelle (vorbefüllt mit Ölheizung, Gasheizung, Wärmepumpe, Pelletheizung)
- Immobilien-Tabelle mit allen Relationen
### 6. Cache leeren
```bash
docker-compose exec web php bin/console cache:clear
```
## Überprüfung der Installation
### Anwendung testen
Öffnen Sie die folgenden URLs in Ihrem Browser:
1. **Frontend (Rechner):** http://localhost:8080
- Sie sollten den Immobilienrechner sehen
- Bundesländer-Dropdown sollte befüllt sein
- Heizungstypen-Dropdown sollte befüllt sein
2. **API-Dokumentation:** http://localhost:8080/api/docs.html
- Swagger UI sollte mit CSS/Styling laden
- Alle API-Endpunkte sollten sichtbar sein
3. **phpMyAdmin:** http://localhost:8081
- Server: `db`
- Benutzer: `root`
- Passwort: `root`
- Datenbank `immorechner` sollte existieren
### Datenbank überprüfen
```bash
# In Container einloggen
docker-compose exec db bash
# MariaDB-Client starten
mariadb -u root -proot immorechner
# Tabellen anzeigen
SHOW TABLES;
# Bundesländer überprüfen (sollte 16 Einträge haben)
SELECT COUNT(*) FROM bundeslaender;
# Heizungstypen überprüfen (sollte 4 Einträge haben)
SELECT COUNT(*) FROM heizungstypen;
# Beenden
EXIT;
```
## Erste Schritte nach der Installation
### 1. Testbenutzer anlegen
#### Via Frontend (Empfohlen)
1. Öffnen Sie http://localhost:8080/register
2. Registrieren Sie sich mit:
- Name: "Test User"
- E-Mail: "test@example.com"
- Passwort: "test123" (min. 6 Zeichen)
3. Nach der Registrierung werden Sie zum Login weitergeleitet
4. Melden Sie sich an
#### Via API
```bash
curl -X POST http://localhost:8080/api/users \
-H "Content-Type: application/json" \
-d '{
"name": "Test User",
"email": "test@example.com",
"role": "user"
}'
```
**Hinweis:** Die API-Response enthält den `apiKey`, den Sie für API-Anfragen benötigen.
### 2. Erste Immobilie berechnen
#### Via Frontend
1. Gehen Sie zu http://localhost:8080/
2. Füllen Sie das Formular aus (mindestens: Adresse, Kaufpreis, Wohnfläche)
3. Sehen Sie die Live-Berechnungen rechts
4. Optional: Klicken Sie auf "Link teilen" zum Teilen
5. Wenn angemeldet: Klicken Sie auf "Speichern"
#### Via API
```bash
# Ersetzen Sie YOUR_API_KEY mit dem API-Key aus Schritt 1
curl -X POST http://localhost:8080/api/immobilies \
-H "Content-Type: application/json" \
-H "X-API-KEY: YOUR_API_KEY" \
-d '{
"verwalter": "/api/users/1",
"adresse": "Teststraße 123, 12345 Teststadt",
"wohnflaeche": 85,
"nutzflaeche": 15,
"zimmer": 3,
"typ": "wohnung",
"kaufpreis": 300000,
"bundesland": "/api/bundeslands/1"
}'
```
## Umgebungsvariablen anpassen
Die Datei `.env` enthält alle wichtigen Konfigurationen:
```env
# Symfony
APP_ENV=dev # Für Produktion: prod
APP_SECRET=<generiert> # Für Produktion: neu generieren
# Datenbank
DATABASE_URL="mysql://immorechner_user:immorechner_pass@db:3306/immorechner?serverVersion=mariadb-11.7.1&charset=utf8mb4"
# CORS (nur für API relevant)
CORS_ALLOW_ORIGIN='^https?://(localhost|127\.0\.0\.1)(:[0-9]+)?$'
```
### Für Produktion
Erstellen Sie eine `.env.local` Datei (wird von Git ignoriert):
```env
APP_ENV=prod
APP_SECRET=<neue-generierte-secret-hier>
DATABASE_URL="mysql://prod_user:sichere_passwort@db-host:3306/prod_db?serverVersion=mariadb-11.7.1&charset=utf8mb4"
CORS_ALLOW_ORIGIN='^https?://(ihre-domain\.com)(:[0-9]+)?$'
```
## Ports anpassen
Falls die Standard-Ports bereits belegt sind, können Sie diese in `docker-compose.yml` ändern:
```yaml
services:
web:
ports:
- "8090:80" # Statt 8080:80
db:
ports:
- "3307:3306" # Statt 3306:3306
phpmyadmin:
ports:
- "8091:80" # Statt 8081:80
```
## Häufige Probleme bei der Installation
### Container starten nicht
```bash
# Container-Logs prüfen
docker-compose logs
# Spezifischen Container-Log prüfen
docker-compose logs web
docker-compose logs db
# Container-Status prüfen
docker ps -a
```
### "Permission Denied" Fehler
```bash
# Container neu bauen und Berechtigungen setzen
docker-compose down
docker-compose up -d --build
# Berechtigungen im Container setzen
docker-compose exec web chown -R www-data:www-data /var/www/html/var
```
### Datenbank-Verbindungsfehler
```bash
# Prüfen ob DB-Container läuft
docker ps | grep db
# DB-Logs prüfen
docker-compose logs db
# Warten bis DB bereit ist (kann 30-60 Sekunden dauern)
docker-compose exec web php bin/console doctrine:query:sql "SELECT 1"
```
### Composer-Fehler
```bash
# Composer Cache leeren
docker-compose exec web composer clear-cache
# Dependencies neu installieren
docker-compose exec web rm -rf vendor
docker-compose exec web composer install
```
## Deinstallation
### Nur Container stoppen
```bash
docker-compose down
```
### Container und Volumes löschen (Datenbank wird gelöscht!)
```bash
docker-compose down -v
```
### Alles entfernen (inkl. Images)
```bash
docker-compose down -v --rmi all
```
---
**Nächste Schritte:**
- [Features & Funktionalität](features.md) - Übersicht aller Funktionen
- [API-Dokumentation](api.md) - REST-API verwenden
- [Entwicklung](development.md) - Development-Workflow
[← Zurück zur Hauptseite](../README.md)