# Features & Funktionalität [← Zurück zur Hauptseite](../README.md) ## Übersicht Der Immorechner bietet zwei Hauptkomponenten: 1. **Web-Frontend** - Interaktive Benutzeroberfläche für Endanwender 2. **REST-API** - Programmgesteuerter Zugriff für Integrationen --- ## Frontend-Features ### 1. Immobilienrechner (Startseite) **URL:** http://localhost:8080/ Der Immobilienrechner ermöglicht die schnelle Berechnung wichtiger Kennzahlen einer Immobilie. #### Eingabefelder | Feld | Typ | Beschreibung | Pflicht | |------|-----|--------------|---------| | Adresse | Text | Vollständige Adresse der Immobilie | Nein | | Kaufpreis | Zahl | Kaufpreis in Euro | Empfohlen | | Wohnfläche | Zahl | Wohnfläche in m² | Ja | | Nutzfläche | Zahl | Nutzfläche in m² | Nein | | Zimmer | Zahl | Anzahl der Zimmer | Empfohlen | | Baujahr | Zahl | Baujahr der Immobilie | Nein | | Etage | Zahl | Stockwerk | Nein | | Immobilientyp | Auswahl | Wohnung, Haus oder Gewerbe | Empfohlen | | Bundesland | Auswahl | Deutsches Bundesland | Empfohlen | | Heizungstyp | Auswahl | Ölheizung, Gasheizung, Wärmepumpe, Pelletheizung | Nein | | Abschreibungszeit | Zahl | Jahre für Abschreibung (Standard: 50) | Nein | | Garage | Checkbox | Garage vorhanden? | Nein | #### Live-Berechnungen Alle Werte werden **in Echtzeit** berechnet (ohne Seitenreload): 1. **Gesamtfläche** - Formel: Wohnfläche + Nutzfläche - Einheit: m² 2. **Preis pro m² Wohnfläche** - Formel: Kaufpreis / Wohnfläche - Einheit: €/m² 3. **Grunderwerbsteuer** - Formel: Kaufpreis × Grunderwerbsteuersatz des Bundeslandes - Sätze: 3,5% (Bayern) bis 6,5% (Brandenburg, NRW, Saarland, SH) - Einheit: € 4. **Gesamtkosten** - Formel: Kaufpreis + Grunderwerbsteuer - Einheit: € 5. **Jährliche Abschreibung** - Formel: Kaufpreis / Abschreibungszeit - Standard-Abschreibungszeit: 50 Jahre - Einheit: €/Jahr 6. **Alter der Immobilie** - Formel: Aktuelles Jahr - Baujahr - Einheit: Jahre ### 2. URL-Sharing für anonyme Nutzer **Funktion:** "Link teilen" Button - Kodiert alle Formulardaten in URL-Parameter - Ermöglicht Teilen der Berechnung ohne Registrierung - Link funktioniert auch nach Tagen/Wochen - Daten werden **nicht** in der Datenbank gespeichert - Ideal für schnelle Berechnungen und Vergleiche **Beispiel-URL:** ``` http://localhost:8080/?adresse=Teststr+123&kaufpreis=300000&wohnflaeche=85&... ``` ### 3. Benutzer-Authentifizierung #### Registrierung **URL:** http://localhost:8080/register - Name (Pflicht, mind. 2 Zeichen) - E-Mail (Pflicht, muss gültig und eindeutig sein) - Passwort (Pflicht, mind. 6 Zeichen) - Passwort bestätigen **Sicherheit:** - Passwort wird mit bcrypt gehasht - E-Mail muss eindeutig sein - Validierung auf Client- und Server-Seite #### Login **URL:** http://localhost:8080/login - E-Mail - Passwort **Session-basiert:** - Bleibt aktiv bis zum Logout - Cookie-basierte Session - CSRF-Schutz integriert #### Logout - Link im Header "Abmelden" - Beendet Session - Redirect zur Startseite ### 4. Immobilien speichern (nur eingeloggte Nutzer) **Funktion:** "Speichern" Button (erscheint nur nach Login) - Speichert alle eingegebenen Daten in der Datenbank - Immobilie wird dem eingeloggten Nutzer zugeordnet - Nutzer kann nur eigene Immobilien sehen - AJAX-basiert (kein Seitenreload) - Erfolgs-/Fehlermeldung als Alert ### 5. Meine Immobilien **URL:** http://localhost:8080/meine-immobilien (nur nach Login) **Funktionen:** - Übersicht aller gespeicherten Immobilien - Anzeige aller Details pro Immobilie - Berechnete Werte werden angezeigt - Sortierung nach Erstellungsdatum (neueste zuerst) **Angezeigt werden:** - Typ, Kaufpreis, Flächen - Zimmer, Baujahr, Etage - Bundesland, Heizungstyp - Garage (Ja/Nein) - Erstellungsdatum --- ## API-Features Vollständige Details siehe [API-Dokumentation](api.md) ### 1. Dual-Authentifizierung **Session-basiert (Frontend):** - Form-Login mit E-Mail/Passwort - Cookie-basierte Sessions - Für Web-Interface **API-Key-basiert (API):** - Header: `X-API-KEY` - Automatisch generiert bei User-Erstellung - Für programmatischen Zugriff ### 2. Rollenbasierte Zugriffskontrolle | Rolle | Rechte | |-------|--------| | **USER** | Eigene Immobilien verwalten | | **ADMIN** | Alle Immobilien verwalten, alle User sehen | | **MODERATOR** | Erweiterte Rechte | | **TECHNICAL** | Bundesländer & Heizungstypen verwalten | ### 3. Mandantenfähigkeit - Jeder User sieht nur eigene Immobilien - Admins sehen alle Immobilien - Automatische Filterung auf Basis des eingeloggten Users - Keine manuelle Filterung nötig ### 4. Öffentliche Ressourcen **Ohne Authentifizierung verfügbar:** - `GET /api/bundeslands` - Alle Bundesländer mit Grunderwerbsteuersätzen - `GET /api/heizungstyps` - Alle Heizungstypen **Vorbefüllt:** - 16 deutsche Bundesländer mit aktuellen Steuersätzen - 4 Heizungstypen (Öl, Gas, Wärmepumpe, Pellet) ### 5. Swagger/OpenAPI-Dokumentation **URL:** http://localhost:8080/api/docs.html **Features:** - Interaktive API-Dokumentation - "Try it out" Funktion für alle Endpunkte - Request/Response Beispiele - Schema-Dokumentation - Export als JSON/YAML --- ## Technische Features ### 1. Responsive Design - Mobile-optimiert - Grid-Layout passt sich an Bildschirmgröße an - Touch-freundliche Buttons und Formulare ### 2. Performance - **Live-Berechnungen** ohne Server-Anfragen - **AJAX** für Speichern-Funktion (kein Reload) - **Opcache** aktiviert in Produktion - **Doctrine Query Cache** ### 3. Datenvalidierung **Frontend:** - HTML5-Validierung - Required-Felder - Type-Checking (number, email, etc.) **Backend:** - Symfony Validator - Doctrine Constraints - Custom Validation Rules ### 4. Sicherheit - **CSRF-Protection** für alle Forms - **Passwort-Hashing** mit bcrypt - **SQL-Injection-Schutz** durch Doctrine ORM - **XSS-Schutz** durch Twig Auto-Escaping - **CORS-Konfiguration** für API ### 5. Separation of Concerns - **CSS** in separaten Dateien (`public/css/`) - **JavaScript** in separaten Dateien (`public/js/`) - **Templates** mit Twig - **Controller** für Logik - **Entities** für Datenmodell --- ## Berechnungslogik ### Grunderwerbsteuer Bundesland-spezifisch (Stand 2025): | Bundesland | Steuersatz | |------------|-----------| | Bayern | 3,5% | | Baden-Württemberg, Bremen, Niedersachsen, Rheinland-Pfalz, Sachsen-Anhalt, Thüringen | 5,0% | | Hamburg, Sachsen | 5,5% | | Berlin, Hessen, Mecklenburg-Vorpommern | 6,0% | | Brandenburg, NRW, Saarland, Schleswig-Holstein | 6,5% | ### Kaufnebenkosten (nur API) Bei API-Anfragen werden zusätzlich berechnet: - **Notarkosten:** ca. 1,5% des Kaufpreises - **Grundbuchkosten:** ca. 0,5% des Kaufpreises - **Grunderwerbsteuer:** siehe oben - **Gesamt:** Summe aller Nebenkosten --- **Siehe auch:** - [Technische Dokumentation](technical.md) - Architektur & Datenbank - [API-Dokumentation](api.md) - REST-API Details - [Installation](installation.md) - Setup-Anleitung [← Zurück zur Hauptseite](../README.md)