Files
immorechner/README.md
2025-11-09 11:27:21 +01:00

155 lines
4.6 KiB
Markdown

# Immorechner
Eine moderne Webanwendung zur Immobilienberechnung mit interaktivem Frontend und vollständiger REST-API.
## Schnellstart
```bash
# Repository klonen
git clone <repository-url>
cd immorechner
# Docker-Container starten
docker-compose up -d --build
# Dependencies installieren
docker-compose exec web composer install
# Datenbank initialisieren
docker-compose exec web php bin/console doctrine:migrations:migrate --no-interaction
# Anwendung öffnen
# Frontend: http://localhost:8080
# API-Docs: http://localhost:8080/api/docs.html
# phpMyAdmin: http://localhost:8081
```
## Features
### Frontend (Web-Interface)
- 🧮 **Interaktiver Immobilienrechner** mit Live-Berechnungen
- 🔗 **URL-Sharing** für anonyme Nutzer (keine Registrierung nötig)
- 👤 **Benutzer-Registrierung & Login**
- 💾 **Immobilien speichern** (nur für registrierte Nutzer)
- 📊 **Automatische Berechnungen**: Grunderwerbsteuer, Gesamtkosten, Abschreibung, etc.
- 📱 **Responsive Design** (Mobile-optimiert)
### Backend (REST-API)
- 🔌 **Vollständige REST-API** mit API Platform 4.2
- 🔐 **Dual-Authentifizierung**: Session-basiert (Frontend) & API-Key (API)
- 🔑 **Rollenbasierte Zugriffskontrolle**: USER, ADMIN, MODERATOR, TECHNICAL
- 📖 **Swagger/OpenAPI** Dokumentation
- 🏢 **Mandantenfähigkeit**: Jeder User sieht nur seine eigenen Immobilien
- 🌍 **Öffentliche Ressourcen**: Bundesländer und Heizungstypen ohne Authentifizierung
### Technologie
- **Backend**: PHP 8.4, Symfony 7.3
- **Frontend**: Twig, jQuery, separates CSS/JS
- **Datenbank**: MariaDB
- **Container**: Docker & Docker Compose
- **ORM**: Doctrine 3.0
- **API**: API Platform 4.2
## Dokumentation
📚 **Detaillierte Dokumentation:**
- **[Installation & Setup](docs/installation.md)** - Schritt-für-Schritt Installationsanleitung
- **[Features & Funktionalität](docs/features.md)** - Übersicht aller Funktionen
- **[Technische Dokumentation](docs/technical.md)** - Architektur, Datenbank-Schema, Konfiguration
- **[API-Dokumentation](docs/api.md)** - REST-API Endpunkte, Authentifizierung, Beispiele
- **[Entwicklung](docs/development.md)** - Testing, Code Quality, Entwickler-Workflow
- **[Docker](docs/docker.md)** - Docker-Befehle und Container-Management
- **[Fehlerbehebung](docs/troubleshooting.md)** - Lösungen für häufige Probleme
## Projekt-Struktur
```
immorechner/
├── config/ # Symfony Konfiguration
├── docs/ # Dokumentation
├── migrations/ # Datenbank-Migrationen
├── public/ # Web-Root, CSS, JS, Assets
├── src/ # PHP-Quellcode
│ ├── Controller/ # Controller (Frontend & API)
│ ├── Entity/ # Doctrine Entities
│ ├── Repository/ # Doctrine Repositories
│ └── Security/ # Authentifizierung
├── templates/ # Twig-Templates
├── docker-compose.yml # Docker Compose-Konfiguration
└── Dockerfile # Docker-Image für PHP/Apache
```
## Verwendung
### Frontend
**Startseite (Rechner):** http://localhost:8080
- Immobiliendaten eingeben
- Live-Berechnungen ansehen
- Link zum Teilen generieren
- Bei Anmeldung: Immobilie speichern
**Registrierung:** http://localhost:8080/register
**Login:** http://localhost:8080/login
**Meine Immobilien:** http://localhost:8080/meine-immobilien (nach Login)
### API
**API-Dokumentation (Swagger UI):** http://localhost:8080/api/docs.html
**API Entrypoint:** http://localhost:8080/api
**Öffentliche Endpunkte (ohne Authentifizierung):**
- `GET /api/bundeslands` - Alle Bundesländer
- `GET /api/heizungstyps` - Alle Heizungstypen
**Geschützte Endpunkte (API-Key erforderlich):**
- `/api/immobilies` - Immobilien-Management
- `/api/users` - Benutzer-Management
## Schnelle Befehle
```bash
# Container starten
docker-compose up -d
# Container stoppen
docker-compose down
# Logs anzeigen
docker-compose logs -f
# In Container einloggen
docker-compose exec web bash
# Cache leeren
docker-compose exec web php bin/console cache:clear
# Tests ausführen
docker-compose exec web php bin/phpunit
```
## Sicherheitshinweise
**⚠️ Wichtig für Produktion:**
1. Ändern Sie alle Standardpasswörter in `docker-compose.yml` und `.env`
2. Generieren Sie einen neuen `APP_SECRET`
3. Setzen Sie `APP_ENV=prod`
4. Aktivieren Sie HTTPS
5. Entfernen Sie phpMyAdmin
6. Konfigurieren Sie CORS für Ihre Domain
Details siehe [Technische Dokumentation](docs/technical.md#sicherheit).
## Lizenz
[Lizenz hier einfügen]
## Support
Bei Problemen siehe [Fehlerbehebung](docs/troubleshooting.md) oder öffnen Sie ein Issue.