Dieses Repository enthält die Grundlage für eine modulare Verwaltungsplattform zur Vermietung beliebiger Mietobjekte (Immobilien und bewegliche Güter).
Beispiele: Gebäude, Büros, Räume, Container, Stellplätze, Lagerflächen, Geräte/Equipment u. v. m.
Das System wird langfristig in zwei grobe Bereiche gegliedert:
- Vermietung: Mietobjekte, Verfügbarkeit/Reservierungen, Verträge, Dokumente, (optional später Abrechnung)
- Finanzen: Finanz- und Vermögensverwaltung, Reporting/Dashboards (Phase 2)
Aktueller Fokus (Phase 1): Domain-Entities und Beziehungen für „Vermietung“.
- Ein einheitliches Domänenmodell für „alles was man vermieten kann“
- Unterstützung von Mietzeiträumen:
- stunden- oder tagesgenau (
start_at,end_at) end_atkann offen sein (unbefristete Miete)
- stunden- oder tagesgenau (
- Modellierung von Beschaffenheit und Lage/Standort eines Mietobjekts
- Standardisierte Maße (z. B. qm, H×B×T)
- Flexible typabhängige Attribute (z. B. Bodenbelag, Traglast, Ausstattung)
- Multi-Tenant (vorsorglich): mehrere Vermieter/Mandanten in einer Instanz
- UI-Ansatz: Server Side Rendering mit HTMX (keine SPA notwendig)
- Datenbank: PostgreSQL, mit DB-seitiger Absicherung wichtiger Integritätsregeln (z. B. Zeitüberschneidungen)
- Python (Version wird im Projekt festgelegt)
- Django
- HTMX (UI-Interaktionen via Partial Rendering)
- Bootstrap 5.3 (UI Layout & Components)
- PostgreSQL
- Tenant: Mandant/Vermieter (Multi-Tenant-Root)
- Party: Mieter/Kunde (Person oder Organisation)
- Asset: Mietobjekt (universell, egal ob Immobilie oder bewegliches Gut)
- Hierarchisch (Parent/Child), z. B. Gebäude → Etage → Büro
- Location: Standort / Adresse (optional historisiert pro Asset)
- AssetDimension: Standardisierte Maße (qm, H×B×T)
- AssetAttribute: Flexible, typabhängige Eigenschaften via Definition/Value
- Reservation: Reservierung/Blocker zur Verfügbarkeitssteuerung
- Contract: Mietvertrag
- ContractItem: Vertragsposition: Asset + Zeitraum + Konditionen (ein Vertrag kann mehrere Assets enthalten)
Zeiträume werden grundsätzlich als start_at / end_at (Datetime) geführt.
end_at = NULLbedeutet offenes Ende- Tagesmieten können über Konventionen abgebildet werden (z. B. Start 00:00, Ende 23:59:59 oder durch zusätzliche Flags in späteren Iterationen)
- Kollisionen (Überschneidungen) sollen sowohl auf Applikationsebene (Validation) als auch DB-seitig (Postgres Constraints) verhindert werden
- Alle fachlichen Tabellen der Vermietung enthalten
tenant_id - Uniqueness/Constraints sind tenant-gescoped (z. B. Objekt-Nr pro Tenant eindeutig)
- Zugriff wird tenant-scoped (Middleware/Manager Pattern)
Es werden zwei Bereiche mit eigenen Dashboards entstehen:
Beispiele für Kennzahlen/Widgets:
- aktuell vermietete Assets / freie Assets
- auslaufende Verträge (nächste X Tage)
- offene Reservierungen / Optionen
- Assets in Wartung / Blocker
Beispiele:
- Einnahmen/Ausgaben
- Cashflow
- Vermögensübersicht (Assets als Anlagevermögen)
- Forderungen/Verbindlichkeiten
- Tenant
- Party (+ Kontakte/Adressen)
- AssetType, Asset (inkl. Hierarchie)
- Location
- AssetDimension (qm, H×B×T)
- Flexible Asset-Attribute (Definition/Value)
- Reservation (Verfügbarkeit/Blocker)
- Contract + ContractItem (Vertragsverwaltung)
- CRUD UI (Django Templates + Bootstrap 5.3 + HTMX)
- Verfügbarkeitsprüfung
- Workflow: Reservierung → Vertrag
- Finanzmodelle, Reporting, Dashboards
- Abrechnung/Billing (Rechnungen, Zahlungen, Mahnungen) – optional/modular
Empfohlene Django-App-Struktur:
core/– tenant scoping, base models, helpersparties/– Mieter/Kundenassets/– AssetType/Asset, Hierarchie, Standort, Maße, Attributeavailability/– Reservierungen/Blocker, Verfügbarkeitslogikcontracts/– Verträge + Positionendashboards/– Vermietung/Finanzen Dashboards (später)finance/– Finanzen/Vermögen (Phase 2)
- Vollständige Billing-/Rechnungslogik in Phase 1
- Integrationen (DATEV, Banking, DMS) in Phase 1
- Komplexe Preis-/Tarifmodelle (Staffeln, indexierte Mieten etc.) in Phase 1
- Architektur und Domäne werden über GitHub Issues/Epics beschrieben.
- Änderungen am Domänenmodell sollen stets accompanied sein von:
- Migrationen
- Kurzer Doku-Anpassung (README/ADR/ERD)
TBD (Projektentscheidung offen).