# Immorechner Eine moderne Webanwendung zur Immobilienberechnung mit interaktivem Frontend und vollständiger REST-API. ## Schnellstart ```bash # Repository klonen git clone 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.