276 lines
6.9 KiB
Markdown
276 lines
6.9 KiB
Markdown
# 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)
|