Files
rentman-clone/.a0/requirements.md
T
Agent Zero 7f7da15965 Initial commit: Rentman Clone - Phase 0-6 (T001-T023)
Completed:
- Phase 0: Project Setup (T001-T003) - Docker Compose, FastAPI skeleton, React SPA
- Phase 1: Auth System (T004-T008) - DB models, JWT auth, RBAC middleware, user management
- Phase 2: Contacts & Tags (T009-T011) - CRUD API + UI
- Phase 3: Equipment Catalog (T012-T014) - Models, API, UI with barcode/QR
- Phase 4: Crew Management (T015-T017) - Models, availability, UI
- Phase 5: Vehicle Fleet (T018-T020) - Models, assignments, UI
- Phase 6: Projects (T021-T023) - Project hierarchy models, CRUD API, list/detail UI
2026-05-31 20:36:42 +00:00

48 KiB
Raw Blame History

Funktionaler Anforderungskatalog Rentman.io Klon

Version: 1.0
Datum: 2026-05-31
Projekt: Rentman.io-Nachbau mit ≥90% Funktionsumfang
Autor: Requirements Analyst (A0 Software Orchestrator)


Inhaltsverzeichnis

  1. Projektübersicht & Vision
  2. Systemkontext & Benutzerrollen
  3. Datenmodell Kernentitäten & Beziehungen
  4. Funktionale Anforderungen User Stories
  5. UI-Komponenten-Matrix
  6. Nicht-funktionale Anforderungen
  7. Annahmen
  8. Nicht-Ziele (Out of Scope)
  9. Offene Fragen

1. Projektübersicht & Vision

Rentman.io ist eine projektzentrische SaaS-Plattform für die Vermietungs- und Event-Branche (AV, Licht, Ton, Bühne). Die Kernphilosophie: Alles gehört zu einem Projekt.

Vision für den Klon

Ein eigenständiger, voll funktionsfähiger Nachbau mit:

  • Webanwendung (Desktop + Tablet)
  • Mobile App (PWA oder nativ)
  • REST API
  • Multi-Tenant-Fähigkeit (mehrere Firmen/Accounts)
  • ≥90% Funktionsumfang des Originals

Zielgruppe

  • AV- und Event-Technik-Verleiher
  • Event-Agenturen mit eigenem Equipment-Pool
  • Messebau-Firmen
  • Klein- bis Mittelständische Betriebe sowie größere Verleihhäuser

2. Systemkontext & Benutzerrollen

System-Kontext-Diagramm (textuell)

┌──────────────────────────────────────────────────────────┐
│                    Rentman-Klon                          │
│                                                          │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌─────────┐ │
│  │ Projekte │  │Equipment │  │   Crew   │  │Fahrzeuge│ │
│  └────┬─────┘  └────┬─────┘  └────┬─────┘  └────┬────┘ │
│       └──────────────┴────────────┴──────────────┘       │
│                         │                                │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐              │
│  │ Finanzen │  │Kontakte  │  │Dokumente │              │
│  └──────────┘  └──────────┘  └──────────┘              │
│                                                          │
│  ┌──────────────────────────────────────────────────┐   │
│  │              REST API / Webhooks                  │   │
│  └──────────────────────────────────────────────────┘   │
└──────────────────────────────────────────────────────────┘
         │              │                │
    ┌────┴────┐    ┌────┴────┐     ┌─────┴──────┐
    │  Web UI │    │Mobile App│     │ Externe    │
    │(Desktop)│    │(PWA)     │     │ Systeme    │
    └─────────┘    └─────────┘     └────────────┘

Benutzerrollen

Rolle Beschreibung Zentrale Berechtigungen
Admin Vollzugriff auf alle Module und Einstellungen Benutzerverwaltung, Systemkonfiguration, Abrechnung
Projektleiter Verwaltet eigene Projekte, Crew und Equipment Projekte CRUD, Crew-Zuweisung, Finanzübersicht
Lagerist Equipment-Tracking, Packlisten, Status-Updates Equipment-Scanning, Status-Änderung, Lagerort
Freelancer Eingeschränkter Datenzugriff, Anwesenheit melden Projekt-Details (read-only), eigene Verfügbarkeit, Aufgaben
Kunde (Gast) Projektanfragen stellen, Angebote einsehen Projektanfrage-Portal, Angebots-Download

3. Datenmodell Kernentitäten & Beziehungen

Entitäten-Diagramm (textuell)

Account (Tenant)
 │
 ├─ User (Benutzer)
 │    └─ Role (Rolle)
 │
 ├─ Contact (Kontakt: Firma/Person)
 │
 ├─ Project (Projekt)
 │    ├─ Subproject (Subprojekt)
 │    ├─ ProjectFunctionGroup (Funktionsgruppe)
 │    │    └─ ProjectFunction (Funktion: Crew/Equipment)
 │    │         └─ ProjectCrew (Crew-Zuweisung)
 │    │         └─ Rate (Preis/Kosten)
 │    ├─ ProjectEquipmentGroup (Equipment-Gruppe im Projekt)
 │    │    └─ ProjectEquipment (Equipment-Position)
 │    ├─ Quote (Angebot)
 │    ├─ Invoice (Rechnung)
 │    └─ ProjectRequest (Projektanfrage)
 │         └─ ProjectRequestEquipment (Equipment in Anfrage)
 │
 ├─ Equipment (Equipment-Katalog)
 │    ├─ EquipmentGroup (Bundle/Set)
 │    ├─ StockLocation (Lagerort)
 │    └─ EquipmentStatusLog (Tracking-Log)
 │
 ├─ Crew (Crew-Mitglied)
 │    └─ CrewAvailability (Verfügbarkeit)
 │
 ├─ Vehicle (Fahrzeug)
 │    └─ VehicleAssignment (Fahrzeug-Zuweisung)
 │
 ├─ Document (Dokument/Datei)
 └─ Tag (Schlagwörter/Farben)

Felddefinitionen pro Entität

Project

Feld Typ Beschreibung Pflicht
id UUID Eindeutige ID Auto
name String(255) Projektname
reference String(50) Externe Referenz (z.B. Auftragsnummer)
number String(50) Interne Projektnummer (auto-inkrement) Auto
displayname String Anzeigename Auto
customer FK→Contact Auftraggeber (Firma oder Person)
contact_person FK→Contact Ansprechpartner beim Kunden
account_manager FK→User Verantwortlicher Projektleiter
project_type Enum Projekttyp (z.B. Vermietung, Dienstleistung, Verkauf)
planperiod_start DateTime Planungsbeginn (Logistik)
planperiod_end DateTime Planungsende (Logistik)
usageperiod_start DateTime Nutzungsbeginn (vor Ort)
usageperiod_end DateTime Nutzungsende (vor Ort)
status Enum Status (Anfrage, Geplant, Bestätigt, Aktiv, Abgeschlossen, Storniert)
location_name String(255) Veranstaltungsort
location_street String(255) Straße
location_city String(100) Stadt
location_postalcode String(20) PLZ
location_country String(100) Land
remark Text Interne Bemerkung
price Decimal Gesamtpreis (kalkuliert) Readonly
cost Decimal Gesamtkosten (kalkuliert) Readonly
created_at DateTime Erstellungsdatum Auto
updated_at DateTime Letzte Änderung Auto
archived Boolean Archiviert

Subproject

Feld Typ Beschreibung Pflicht
id UUID Eindeutige ID Auto
project FK→Project Übergeordnetes Projekt
name String(255) Subprojekt-Name
custom JSON Benutzerdefinierte Felder

ProjectFunctionGroup

Feld Typ Beschreibung Pflicht
id UUID Eindeutige ID Auto
project FK→Project Zugehöriges Projekt
subproject FK→Subproject Zugehöriges Subprojekt (optional)
name String(255) Name (z.B. "Ton", "Licht")
usageperiod_start DateTime Nutzungsbeginn (überschreibt Projekt)
usageperiod_end DateTime Nutzungsende (überschreibt Projekt)
planperiod_start DateTime Planungsbeginn (überschreibt Projekt)
planperiod_end DateTime Planungsende (überschreibt Projekt)
remark Text Bemerkung

ProjectFunction

Feld Typ Beschreibung Pflicht
id UUID Eindeutige ID Auto
project FK→Project Zugehöriges Projekt
subproject FK→Subproject Subprojekt (optional)
group FK→ProjectFunctionGroup Funktionsgruppe (optional)
name String(255) Funktionsname (z.B. "Tontechniker", "PA-Anlage")
type Enum crew_function / equipment_function / transport_function
amount Integer Anzahl
usageperiod_start DateTime Individueller Nutzungsbeginn
usageperiod_end DateTime Individuelles Nutzungsende
planperiod_start DateTime Individueller Planungsbeginn
planperiod_end DateTime Individuelles Planungsende
cost_rate Decimal Interner Kostensatz
price_rate Decimal Verkaufspreissatz
remark Text Bemerkung

ProjectEquipmentGroup

Feld Typ Beschreibung Pflicht
id UUID Eindeutige ID Auto
project FK→Project Zugehöriges Projekt
subproject FK→Subproject Subprojekt (optional)
name String(255) Gruppenname (z.B. "Audio")
usageperiod_start DateTime Nutzungsbeginn
usageperiod_end DateTime Nutzungsende
planperiod_start DateTime Planungsbeginn
planperiod_end DateTime Planungsende
in_price_calculation Boolean In Preiskalkulation einbeziehen
remark Text Bemerkung

ProjectEquipment

Feld Typ Beschreibung Pflicht
id UUID Eindeutige ID Auto
equipment_group FK→ProjectEquipmentGroup Zugehörige Equipment-Gruppe
equipment FK→Equipment Verknüpfter Equipment-Artikel
name String(255) Freitext-Name (wenn kein Equipment verknüpft)
quantity Integer Geplante Menge
quantity_total Integer Verfügbare Gesamtmenge
unit_price Decimal Einzelpreis
discount Decimal Rabatt in %
external_remark Text Externe Bemerkung (für Kunden sichtbar)
internal_remark Text Interne Bemerkung

Equipment (Katalog)

Feld Typ Beschreibung Pflicht
id UUID Eindeutige ID Auto
name String(255) Artikelname
category String(100) Kategorie (Licht, Ton, Video, Rigging...)
brand String(100) Hersteller/Marke
model String(100) Modellbezeichnung
serial_number String(100) Seriennummer
barcode String(100) Barcode/QR-Code Unique
qr_code String(100) QR-Code (alternativ zum Barcode) Unique
stock_location FK→StockLocation Standard-Lagerort
status Enum Verfügbar, In Wartung, Defekt, Ausgemustert
purchase_price Decimal Einkaufspreis
current_value Decimal Aktueller Wert (mit Abschreibung)
weight_kg Decimal Gewicht in kg
dimensions_cm String(50) Maße (L×B×H)
power_watt Integer Leistungsaufnahme in Watt
custom_fields JSON Benutzerdefinierte Felder
notes Text Notizen
image_url URL Bild-URL

StockLocation

Feld Typ Beschreibung Pflicht
id UUID Eindeutige ID Auto
name String(100) Bezeichnung (z.B. "Regal A3", "Halle 2")
address String(255) Adresse (falls externes Lager)
is_default Boolean Standardlager

Crew

Feld Typ Beschreibung Pflicht
id UUID Eindeutige ID Auto
first_name String(100) Vorname
last_name String(100) Nachname
email Email E-Mail
phone String(50) Telefon
type Enum internal / freelancer
user FK→User Verknüpfter Benutzeraccount (optional)
hourly_rate Decimal Stundensatz
daily_rate Decimal Tagessatz
skills JSON Fähigkeiten/Tags (z.B. ["Ton", "Licht"])
is_active Boolean Aktiv/Inaktiv
note Text Interne Notiz

CrewAvailability

Feld Typ Beschreibung Pflicht
id UUID Eindeutige ID Auto
crew FK→Crew Crew-Mitglied
start DateTime Beginn der Unverfügbarkeit / Verfügbarkeit
end DateTime Ende
type Enum available / unavailable / tentative
reason String(255) Grund (Urlaub, gebucht, Krank...)

Vehicle

Feld Typ Beschreibung Pflicht
id UUID Eindeutige ID Auto
name String(100) Fahrzeugname
license_plate String(20) Kennzeichen
type String(50) Typ (LKW, Sprinter, PKW)
payload_kg Integer Zuladung in kg
volume_m3 Decimal Ladevolumen in m³
is_active Boolean Aktiv

VehicleAssignment

Feld Typ Beschreibung Pflicht
id UUID Eindeutige ID Auto
vehicle FK→Vehicle Fahrzeug
project FK→Project Projekt
start DateTime Beginn
end DateTime Ende
driver FK→Crew Fahrer (optional)

Contact

Feld Typ Beschreibung Pflicht
id UUID Eindeutige ID Auto
type Enum company / person
company_name String(255) Firmenname (wenn type=company) *
first_name String(100) Vorname *
last_name String(100) Nachname *
email Email E-Mail
phone String(50) Telefon
mobile String(50) Mobil
street String(255) Straße
number String(20) Hausnummer
postalcode String(20) PLZ
city String(100) Stadt
country String(100) Land
tax_number String(50) USt-ID / Steuernummer
note Text Notiz

ProjectRequest (Projektanfrage)

Feld Typ Beschreibung Pflicht
id UUID Eindeutige ID Auto
name String(255) Anfragename/Eventname
contact_name String(255) Name des Anfragenden
contact_person_first_name String(100) Vorname Ansprechpartner
contact_person_lastname String(100) Nachname Ansprechpartner
contact_person_email Email E-Mail Ansprechpartner
location_name String(255) Veranstaltungsort
location_mailing_street String(255) Straße
location_mailing_number String(20) Hausnummer
location_mailing_postalcode String(20) PLZ
location_mailing_city String(100) Stadt
location_mailing_country String(100) Land
planperiod_start DateTime Planungsbeginn
planperiod_end DateTime Planungsende
usageperiod_start DateTime Nutzungsbeginn
usageperiod_end DateTime Nutzungsende
status Enum Neu, In Bearbeitung, Konvertiert, Abgelehnt Auto
remark Text Bemerkung

ProjectRequestEquipment

Feld Typ Beschreibung Pflicht
id UUID Eindeutige ID Auto
project_request FK→ProjectRequest Zugehörige Anfrage
name String(255) Equipment-Name
quantity Integer Menge
quantity_total Integer Gesamtmenge
unit_price Decimal Einzelpreis
linked_equipment FK→Equipment Verknüpftes Equipment (optional)

Quote (Angebot)

Feld Typ Beschreibung Pflicht
id UUID Eindeutige ID Auto
project FK→Project Zugehöriges Projekt
number String(50) Angebotsnummer Auto
status Enum Draft, Versendet, Angenommen, Abgelehnt
valid_until Date Gültig bis
template String(50) Template-Name
content_html Text Generierter Inhalt Readonly
total_net Decimal Netto-Gesamt Readonly
total_gross Decimal Brutto-Gesamt Readonly
created_at DateTime Erstellungsdatum Auto

Invoice (Rechnung)

Feld Typ Beschreibung Pflicht
id UUID Eindeutige ID Auto
project FK→Project Zugehöriges Projekt
number String(50) Rechnungsnummer Auto
status Enum Draft, Versendet, Bezahlt, Überfällig, Storniert
due_date Date Fälligkeitsdatum
total_net Decimal Netto-Gesamt Readonly
total_gross Decimal Brutto-Gesamt Readonly
created_at DateTime Erstellungsdatum Auto

4. Funktionale Anforderungen User Stories

4.1 Projektmanagement

PM-01: Projekt anlegen

Als Projektleiter möchte ich ein neues Projekt mit grundlegenden Informationen anlegen, damit es als zentraler Container für alle Planungen dient.

Akzeptanzkriterien:

  • Formular mit Feldern: Name*, Referenz, Nummer, Kunde, Projekttyp, Planungszeitraum*, Nutzungszeitraum*, Ort, Bemerkung
  • Pflichtfelder werden validiert (clientseitig + serverseitig)
  • Bei erfolgreicher Erstellung: Redirect auf Projekt-Detailseite
  • Automatische Nummerngenerierung (konfigurierbares Präfix + laufende Nummer)
  • Planungszeitraum und Nutzungszeitraum können unabhängig gesetzt werden

PM-02: Projekt bearbeiten

Als Projektleiter möchte ich ein bestehendes Projekt bearbeiten können, damit ich Änderungen nachtragen kann.

Akzeptanzkriterien:

  • Alle Felder editierbar (außer systemgenerierte)
  • Änderungen werden sofort persistiert
  • Bei Datumsänderung: Warnung, falls Equipment/Crew bereits zugewiesen ist

PM-03: Projekt löschen/archivieren

Als Admin möchte ich Projekte löschen oder archivieren können, damit inaktive Projekte nicht die Übersicht stören.

Akzeptanzkriterien:

  • Löschen: Nur möglich, wenn keine Rechnungen verknüpft sind → Soft-Delete
  • Archivieren: Projekt in "Archiv" verschieben, alle Verknüpfungen bleiben erhalten
  • Bestätigungsdialog vor Löschung

PM-04: Projektliste mit Filtern

Als Projektleiter möchte ich eine filterbare, sortierbare Projektliste sehen, damit ich schnell relevante Projekte finde.

Akzeptanzkriterien:

  • Spalten: Name, Nummer, Kunde, Status, Zeitraum, Preis
  • Filter: Status, Kunde, Projekttyp, Datum (von/bis), Suchtext
  • Sortierung: Klick auf Spaltenkopf (auf-/absteigend)
  • Paginierung (25/50/100 pro Seite)
  • Gesamtzahl der Projekte wird angezeigt

PM-05: Subprojekte verwalten

Als Projektleiter möchte ich innerhalb eines Projekts Subprojekte anlegen, damit ich große Events in logische Einheiten unterteilen kann.

Akzeptanzkriterien:

  • Subprojekt anlegen mit Name
  • Subprojekt löschen (leer oder inkl. Inhalt)
  • Subprojekte in Baumstruktur unter dem Hauptprojekt
  • Anzahl Subprojekte unbegrenzt

PM-06: Projekt-Funktionsgruppen und Funktionen

Als Projektleiter möchte ich Funktionsgruppen (z.B. "Ton", "Licht") und darin Funktionen (z.B. "Tontechniker", "PA-Anlage") definieren, damit ich den Personal- und Equipment-Bedarf strukturiere.

Akzeptanzkriterien:

  • Funktionsgruppe anlegen: Name, Subprojekt, eigene Zeiträume, Bemerkung
  • Funktion anlegen: Name, Typ (crew/equipment/transport), Anzahl, Zeiträume, Kosten-/Preissatz
  • Drag-and-Drop von Funktionen zwischen Gruppen
  • Zeiträume von Gruppen auf Funktionen vererbt (überschreibbar)
  • Summierung der Funktionen pro Gruppe und gesamt

PM-07: Projekt-Status-Workflow

Als Projektleiter möchte ich den Projektstatus ändern können, damit der Projektfortschritt nachvollziehbar ist.

Akzeptanzkriterien:

  • Status-Übergänge: Anfrage → Geplant → Bestätigt → Aktiv → Abgeschlossen
  • Storniert als eigener Status (keine weitere Bearbeitung)
  • Status-Historie protokolliert (wer, wann, alter Status → neuer Status)
  • Status-Änderung löst optionale Benachrichtigung aus

PM-08: Projekt-Vorlagen

Als Projektleiter möchte ich ein Projekt als Vorlage speichern und daraus neue Projekte erstellen, damit ich wiederkehrende Events schnell anlegen kann.

Akzeptanzkriterien:

  • "Als Vorlage speichern" kopiert Projekt-Struktur (Funktionen, Gruppen, Equipment ohne konkrete Zuweisung)
  • Neues Projekt aus Vorlage: Name und Zeiträume werden gesetzt, Rest übernommen
  • Vorlagen-Liste mit Durchsuchen/Filtern

4.2 Equipment-Management

EQ-01: Equipment-Katalog pflegen

Als Lagerist möchte ich Equipment-Artikel im Katalog anlegen, bearbeiten und löschen, damit der Bestand aktuell bleibt.

Akzeptanzkriterien:

  • CRUD für Equipment mit allen Feldern gemäß Datenmodell
  • Barcode/QR-Code automatisch generierbar und manuell setzbar
  • Massen-Import via CSV/Excel
  • Massen-Export in CSV/Excel
  • Bilder-Upload pro Artikel

EQ-02: Equipment-Kategorisierung & Suche

Als Lagerist möchte ich Equipment nach Kategorien filtern und durchsuchen, damit ich schnell finde, was ich brauche.

Akzeptanzkriterien:

  • Freitextsuche über Name, Marke, Modell, Seriennummer, Barcode
  • Filter: Kategorie, Status, Lagerort
  • Kategorie-Baum (hierarchisch, z.B. Ton → Mikrofone → Funkmikrofone)
  • Anzeige: Kachel-Ansicht + Tabellen-Ansicht

EQ-03: Equipment-Gruppen (Bundles)

Als Projektleiter möchte ich Equipment-Gruppen (Bundles/Sets) definieren, damit ich häufig zusammen verliehene Artikel als Einheit planen kann.

Akzeptanzkriterien:

  • Bundle anlegen: Name + Liste von Equipment-Artikeln mit Menge
  • Bundle im Projekt wie Einzelartikel planbar
  • Auflösung des Bundles in Einzelartikel bei Verfügbarkeitsprüfung

EQ-04: Equipment zum Projekt hinzufügen

Als Projektleiter möchte ich Equipment direkt aus dem Katalog in eine Equipment-Gruppe des Projekts ziehen, damit die Planung schnell erfolgt.

Akzeptanzkriterien:

  • Equipment-Gruppe im Projekt anlegen
  • Equipment-Position hinzufügen: Artikel auswählen (Such-Autocomplete), Menge, Preis
  • Optional: Freitext-Position ohne Katalog-Verknüpfung
  • Rabatt pro Position setzbar
  • Drag-and-Drop aus Katalog in Projekt (optional, MVP: Formular)

EQ-05: Equipment-Verfügbarkeit prüfen

Als Projektleiter möchte ich für jedes Equipment sehen, ob es im gewünschten Zeitraum verfügbar ist, damit ich Konflikte vermeide.

Akzeptanzkriterien:

  • Timeline-Ansicht pro Artikel: Belegungsblöcke
  • Konflikt-Indikator in Equipment-Position (rot/grün/gelb)
  • Massen-Verfügbarkeits-Check für ganze Projekte
  • Alternative vorschlagen (gleiche Kategorie, verfügbar)

EQ-06: Equipment-Status-Tracking (Logistik)

Als Lagerist möchte ich den Status jedes Artikels im Projekt ändern, damit ich den Logistik-Fortschritt tracken kann.

Akzeptanzkriterien:

  • Status: Geplant → (Gepackt) → Vor Ort → (Zurück) → Eingelagert
  • Zusätzliche Stati: Verspätet, Fehlend, Beschädigt
  • Status-Änderung via Web-UI (Klick) oder Barcode-Scan (Mobile App)
  • Status-Historie pro Artikel und Projekt

EQ-07: QR/Barcode-Generierung und Scan

Als Lagerist möchte ich Barcodes/QR-Codes für Equipment drucken und scannen, damit das Tracking effizient ist.

Akzeptanzkriterien:

  • Barcode/QR-Code pro Equipment-Item (Unique-ID-basiert)
  • Druck-Layout: Label mit Name, Code, optional Projekt
  • Scan via Mobile-App-Kamera oder USB-Barcode-Scanner
  • Scan-Aktion: Status ändern, Info anzeigen

EQ-08: Lagerort-Verwaltung

Als Lagerist möchte ich Lagerorte definieren und Equipment zuweisen, damit ich weiß, wo sich Artikel befinden.

Akzeptanzkriterien:

  • CRUD für Lagerorte: Name, Adresse
  • Equipment: Standard-Lagerort + aktueller Standort
  • Lagerort-Übersicht: Welches Equipment liegt wo?

4.3 Crew & Personal

CR-01: Crew-Katalog pflegen

Als Projektleiter möchte ich Crew-Mitglieder (intern + Freelancer) im Katalog verwalten, damit ich sie Projekten zuweisen kann.

Akzeptanzkriterien:

  • CRUD für Crew: Name, Kontakt, Typ, Stundensatz/Tagessatz, Skills
  • Unterscheidung intern/Freelancer
  • Skills als Tags (Mehrfachauswahl)
  • CSV-Import/Export

CR-02: Crew zu Projektfunktion zuweisen

Als Projektleiter möchte ich ein Crew-Mitglied einer Projektfunktion (z.B. "Tontechniker") zuweisen, damit die Personalplanung abgeschlossen ist.

Akzeptanzkriterien:

  • Projektfunktion als Crew-Funktion definiert (type=crew_function)
  • Crew-Auswahl per Dropdown/Suche
  • Warnung bei Verfügbarkeitskonflikt
  • Mehrere Crew pro Funktion (wenn amount > 1)

CR-03: Crew-Verfügbarkeitsplanung

Als Projektleiter möchte ich die Verfügbarkeit der Crew im Projektzeitraum sehen, damit ich keine Doppelbuchungen mache.

Akzeptanzkriterien:

  • Kalender-Ansicht pro Crew-Mitglied
  • Unverfügbarkeiten eintragen: Datum, Typ, Grund
  • Konflikt-Erkennung bei Zuweisung
  • Monats-/Wochenübersicht für alle Crew

CR-04: Freelancer-Self-Service

Als Freelancer möchte ich meine Verfügbarkeit selbst eintragen und meine Projekte einsehen, damit ich selbstbestimmt planen kann.

Akzeptanzkriterien:

  • Freelancer-Login (eingeschränkter Zugang)
  • Eigene Verfügbarkeit eintragen/bearbeiten
  • Zugewiesene Projekte sehen (read-only)
  • Eigene Kontaktdaten bearbeiten

4.4 Fahrzeuge & Transport

FH-01: Fahrzeug-Katalog pflegen

Als Admin möchte ich Fahrzeuge im Katalog verwalten, damit Transport geplant werden kann.

Akzeptanzkriterien:

  • CRUD: Name, Kennzeichen, Typ, Zuladung, Volumen
  • Aktiv/Inaktiv-Status

FH-02: Fahrzeug zu Projekt zuweisen

Als Projektleiter möchte ich ein Fahrzeug einem Projekt zuweisen, damit der Transport gesichert ist.

Akzeptanzkriterien:

  • Zuweisung: Fahrzeug + Projekt + Zeitraum + Fahrer
  • Verfügbarkeitsprüfung (keine Doppelzuweisung)
  • Anzeige im Projekt als Transport-Funktion

FH-03: Transport-Planungsübersicht

Als Projektleiter möchte ich eine Übersicht aller Fahrzeug-Zuweisungen, damit ich Transportkonflikte erkenne.

Akzeptanzkriterien:

  • Kalender-Ansicht mit allen Fahrzeugen
  • Farbcodierung: eigenes Projekt vs. andere
  • Filter: Fahrzeug, Zeitraum

4.5 Kunden & Kontakte

KK-01: Kontakte verwalten

Als Projektleiter möchte ich Firmen und Personen als Kontakte speichern, damit ich sie Projekten zuweisen kann.

Akzeptanzkriterien:

  • CRUD für Firmen (company) und Personen (person)
  • Beziehung: Ansprechpartner (Person) gehört zu Firma (Company)
  • Suche und Filter
  • Verknüpfte Projekte anzeigen ("Welche Projekte hat Kunde X?")

KK-02: Kunde zum Projekt zuweisen

Als Projektleiter möchte ich einen Kontakt als Kunden im Projekt setzen, damit die Zuordnung klar ist.

Akzeptanzkriterien:

  • Kunden-Auswahl per Autocomplete-Suche
  • Adresse des Kunden als Veranstaltungsort übernehmbar
  • Ansprechpartner separat wählbar

4.6 Finanzen

FI-01: Preiskalkulation im Projekt

Als Projektleiter möchte ich dass das System automatisch Gesamtpreise kalkuliert, damit ich Angebote auf Basis der Planung erstellen kann.

Akzeptanzkriterien:

  • Equipment-Positionen: Menge × Einzelpreis
  • Crew-Funktionen: amount × Tagessatz/Stundensatz × Dauer
  • Transport: Preis pro Fahrzeug
  • Rabatte auf Positionen und global
  • Steuer-Berechnung (MwSt. konfigurierbar)
  • Echtzeit-Aktualisierung bei Änderungen

FI-02: Angebote erstellen und verwalten

Als Projektleiter möchte ich ein Angebot aus der Projektplanung generieren, damit ich es dem Kunden senden kann.

Akzeptanzkriterien:

  • Angebot aus Projekt generieren: Alle Positionen übernehmen
  • Angebots-Template auswählen
  • Status: Entwurf → Versendet → Angenommen/Abgelehnt
  • PDF-Export und E-Mail-Versand
  • Angebots-Historie pro Projekt (Versionen)

FI-03: Rechnungen erstellen und verwalten

Als Projektleiter möchte ich aus einem angenommenen Angebot eine Rechnung erstellen, damit ich abrechnen kann.

Akzeptanzkriterien:

  • Rechnung aus Angebot generieren (Positionen übernehmen)
  • Teil-Rechnungen möglich (z.B. 50% Anzahlung)
  • Rechnungsstatus: Entwurf → Versendet → Bezahlt/Überfällig/Storniert
  • Mahnwesen: Überfällige Rechnungen markieren, Mahnung generieren
  • PDF-Export und E-Mail-Versand
  • Nummernkreis automatisch (konfigurierbar)

FI-04: Währung & Steuern konfigurieren

Als Admin möchte ich Währung und Steuersätze global und pro Projekt konfigurieren, damit die Finanzberechnung korrekt ist.

Akzeptanzkriterien:

  • Standardwährung setzen (EUR, USD, CHF...)
  • Standard-Steuersatz (z.B. 19%)
  • Projekt kann abweichenden Steuersatz haben

FI-05: Finanz-Übersicht

Als Admin möchte ich eine Übersicht über offene Posten und Einnahmen, damit ich die Liquidität im Blick habe.

Akzeptanzkriterien:

  • Dashboard: Offene Rechnungen, Umsatz (Monat/Jahr), Top-Kunden
  • Filter: Zeitraum, Projektstatus
  • Export-Funktion

4.7 Projektanfragen (Project Requests)

PA-01: Projektanfrage einreichen (Kunden-Portal)

Als potenzieller Kunde möchte ich über ein öffentliches Formular eine Projektanfrage stellen, damit ich ein Angebot erhalte.

Akzeptanzkriterien:

  • Öffentliches Formular (ohne Login): Event-Name, Kontaktdaten, Ort, Zeitraum, Bemerkung
  • Validierung der Pflichtfelder
  • Bestätigungs-E-Mail nach Einreichung

PA-02: Equipment zur Anfrage hinzufügen

Als Kunde möchte ich gewünschtes Equipment in der Anfrage auflisten, damit der Anbieter meinen Bedarf kennt.

Akzeptanzkriterien:

  • Positionen hinzufügen: Name, Menge, optionaler Einzelpreis
  • Mehrere Positionen möglich
  • Möglichkeit, auf existierende Katalog-Artikel zu verweisen

PA-03: Anfrage prüfen und in Projekt konvertieren

Als Projektleiter möchte ich eine eingegangene Anfrage prüfen und in ein Projekt umwandeln, damit die Planung beginnen kann.

Akzeptanzkriterien:

  • Anfrage-Liste mit Status
  • Detailansicht der Anfrage mit allen Positionen
  • "In Projekt umwandeln": Neues Projekt aus Anfrage-Daten erstellen
  • Equipment-Positionen in Projekt übernehmen
  • Status der Anfrage auf "Konvertiert" setzen

4.8 Scheduling & Zeitplanung

SC-01: Projekt-Timeline (Gantt-Ansicht)

Als Projektleiter möchte ich eine visuelle Timeline aller Projekte sehen, damit ich Überschneidungen erkenne.

Akzeptanzkriterien:

  • Horizontale Zeitleiste: Monate/Wochen/Tage
  • Jedes Projekt als Balken (Planungszeitraum + Nutzungszeitraum)
  • Farbcodierung nach Status oder Projekttyp
  • Drag-and-Drop: Projektzeitraum ändern
  • Zoom: Jahr, Monat, Woche, Tag

SC-02: Equipment/Crew-Timeline (Ressourcen-Ansicht)

Als Projektleiter möchte ich in der Timeline sehen, welche Ressourcen belegt sind, damit ich Engpässe erkenne.

Akzeptanzkriterien:

  • Gruppierung: Equipment / Crew / Fahrzeuge
  • Belegungsblöcke pro Ressource
  • Konflikt-Hervorhebung (rot)
  • Filter nach Kategorie/Typ

SC-03: Kalender-Integration

Als Projektleiter möchte ich Projekte und Aufgaben in meinem externen Kalender sehen, damit ich alles an einem Ort habe.

Akzeptanzkriterien:

  • iCal/CalDAV-Feed pro Benutzer
  • Abonnement-Link für Google Calendar, Outlook, Apple Calendar
  • Option: Öffentlicher Projekt-Kalender

SC-04: Aufgaben-Management

Als Projektleiter möchte ich Aufgaben innerhalb eines Projekts anlegen und zuweisen, damit nichts vergessen wird.

Akzeptanzkriterien:

  • Aufgaben-CRUD: Titel, Beschreibung, Fälligkeit, Verantwortlicher, Status
  • Status: Offen, In Bearbeitung, Erledigt
  • Aufgaben-Liste im Projekt und persönliche To-Do-Liste
  • Erinnerungs-E-Mail vor Fälligkeit

4.9 Dokumenten-Management

DO-01: Angebots-Templates verwalten

Als Admin möchte ich Angebots-Templates mit eigenem Layout und Platzhaltern definieren, damit Corporate Design eingehalten wird.

Akzeptanzkriterien:

  • HTML/CSS-basierte Templates
  • Platzhalter: {{project_name}}, {{customer_name}}, {{total_price}}, {{items_table}}, etc.
  • Template-Vorschau mit Beispiel-Daten
  • Mehrere Templates speicherbar

DO-02: Rechnungs-Templates verwalten

Als Admin möchte ich Rechnungs-Templates definieren, damit Rechnungen dem Corporate Design entsprechen.

Akzeptanzkriterien:

  • Wie Angebots-Templates, jedoch mit Rechnungs-spezifischen Platzhaltern
  • Rechtlich korrekte Pflichtangaben
  • Zahlungsbedingungen konfigurierbar

DO-03: Digitale Packliste generieren

Als Lagerist möchte ich eine Packliste aus der Equipment-Planung generieren, damit ich weiß, was gepackt werden muss.

Akzeptanzkriterien:

  • Packliste: Alle Equipment-Positionen mit Menge und Lagerort
  • Gruppierung: Nach Equipment-Gruppe oder Lagerort
  • Checkboxen zum Abhaken (digital + Druck)
  • PDF-Export

DO-04: Lieferscheine generieren

Als Projektleiter möchte ich einen Lieferschein für das Equipment erstellen, damit der Kunde den Empfang quittieren kann.

Akzeptanzkriterien:

  • Lieferschein: Equipment-Liste, Projekt-Info, Lieferadresse
  • Unterschriftsfeld
  • PDF-Export

DO-05: Allgemeines Dokumenten-Management

Als Projektleiter möchte ich beliebige Dateien (PDF, Bilder, Pläne) zu einem Projekt hochladen, damit alle relevanten Dokumente zentral gespeichert sind.

Akzeptanzkriterien:

  • Datei-Upload per Drag-and-Drop
  • Unterstützte Formate: PDF, JPG, PNG, DOCX, XLSX, DWG (mind. Vorschau)
  • Dateien nach Kategorien ordnen
  • Zugriffskontrolle (projektbezogen)

4.10 Benutzer & Rollen

BR-01: Benutzerverwaltung

Als Admin möchte ich Benutzer anlegen, bearbeiten und deaktivieren, damit das Team Zugriff hat.

Akzeptanzkriterien:

  • Benutzer-CRUD: Name, E-Mail, Passwort, Rolle
  • Einladungs-Workflow: E-Mail mit Aktivierungslink
  • Passwort-Reset über E-Mail
  • Deaktivierung statt Löschung (Datenintegrität)

BR-02: Rollen & Berechtigungen

Als Admin möchte ich Rollen mit granular steuerbaren Berechtigungen definieren, damit jeder nur sieht, was er braucht.

Akzeptanzkriterien:

  • Vordefinierte Rollen: Admin, Projektleiter, Lagerist, Freelancer
  • Benutzerdefinierte Rollen möglich
  • Berechtigungen: Modul-Zugriff (read/write/delete), Projekt-Zugriff (alle/eigene)
  • Rollen-Matrix (UI für Konfiguration)

BR-03: Benutzer-Aktivitätslog

Als Admin möchte ich sehen, wer welche Änderungen vorgenommen hat, damit es nachvollziehbar bleibt.

Akzeptanzkriterien:

  • Log-Einträge: Benutzer, Aktion, Entität, Zeitstempel
  • Filter nach Benutzer, Aktionstyp, Datum
  • Nur für Admins sichtbar

4.11 Reporting & Analytik

RE-01: Dashboard

Als Projektleiter möchte ich ein Dashboard mit den wichtigsten Kennzahlen sehen, damit ich den Überblick behalte.

Akzeptanzkriterien:

  • Widgets: Aktive Projekte, Heutige Events, Equipment-Auslastung, Crew-Auslastung, Offene Rechnungen
  • Konfigurierbare Widgets (an/ab wählbar)
  • Daten per Klick in Detail-Ansicht drill-down

RE-02: Projekt-Statistiken

Als Admin möchte ich Statistiken zu Projekten, Umsatz, und Auslastung einsehen, damit ich das Geschäft analysieren kann.

Akzeptanzkriterien:

  • Umsatz pro Monat/Jahr, pro Kunde, pro Projekttyp
  • Anzahl Projekte nach Status
  • Durchschnittliche Projektdauer

RE-03: Equipment-Auslastungsreport

Als Lagerist möchte ich einen Report über die Equipment-Auslastung, damit ich Einkaufsentscheidungen treffen kann.

Akzeptanzkriterien:

  • Auslastung pro Artikel (Belegungstage / verfügbare Tage)
  • Top- und Flop-Artikel
  • Zeitraum flexibel wählbar
  • Export als CSV/Excel

RE-04: Finanz-Report

Als Admin möchte ich einen Finanz-Report mit Umsatz und offenen Posten, damit ich die Buchhaltung unterstützen kann.

Akzeptanzkriterien:

  • Umsatz pro Monat (Ist vs. Plan)
  • Offene Rechnungen mit Alter
  • Kunden-Ranking

4.12 Mobile App

MO-01: Barcode/QR-Code-Scanning

Als Lagerist möchte ich mit dem Smartphone Equipment scannen, damit ich unterwegs Status-Änderungen vornehmen kann.

Akzeptanzkriterien:

  • Kamera-Scan von Barcode und QR-Code
  • Nach Scan: Info anzeigen + Aktion wählen (Status ändern, Packen, Einlagern)
  • Vibrations-/Ton-Feedback bei erfolgreichem Scan

MO-02: Packliste digital abhaken

Als Lagerist möchte ich auf der Mobile App die Packliste durchgehen und abhaken, damit nichts vergessen wird.

Akzeptanzkriterien:

  • Packliste anzeigen (pro Projekt)
  • Checkbox pro Position
  • Fortschrittsbalken (X/Y gepackt)
  • Offline: Letzter Stand lokal gespeichert, Sync bei Verbindung

MO-03: Verfügbarkeits-Check mobil

Als Projektleiter möchte ich unterwegs schnell prüfen, ob Equipment verfügbar ist, damit ich beim Kunden direkt antworten kann.

Akzeptanzkriterien:

  • Suchfeld mit Autocomplete
  • Ergebnis: Verfügbarkeits-Status (frei/belegt) + Belegungsdetails

MO-04: Offline-Fähigkeit

Als Lagerist möchte ich die App auch ohne Internet nutzen können, damit ich in Hallen/Kellern ohne Empfang arbeiten kann.

Akzeptanzkriterien:

  • Projektdaten und Equipment-Listen offline cachen
  • Änderungen lokal speichern und bei Verbindung synchronisieren
  • Konflikt-Erkennung: Warnung, wenn Daten zwischenzeitlich geändert wurden
  • Sync-Status-Anzeige

4.13 Integrationen

INT-01: REST API

Als Entwickler möchte ich eine vollständige REST API, damit ich externe Systeme anbinden kann.

Akzeptanzkriterien:

  • API-Endpunkte für alle Kernentitäten (≥80% des Datenmodells)
  • Authentifizierung per API-Token (JWT/Bearer)
  • API-Dokumentation (OpenAPI/Swagger)
  • Rate Limiting
  • Versionierung (/api/v1/...)

INT-02: Webhooks

Als Admin möchte ich Webhooks konfigurieren, damit externe Systeme automatisch über Ereignisse informiert werden.

Akzeptanzkriterien:

  • Webhook-Ereignisse: Projekt erstellt, Status geändert, Rechnung erstellt, Ausrüstung gescannt
  • Webhook-URL + Secret konfigurierbar
  • Retry-Logik bei Fehlschlag
  • Webhook-Log (Erfolg/Fehler)

INT-03: Excel/CSV Import/Export

Als Admin möchte ich Daten via Excel/CSV importieren und exportieren, damit ich bestehende Daten migrieren kann.

Akzeptanzkriterien:

  • Import: Equipment, Crew, Kontakte
  • Validierung mit Fehlerbericht
  • Dry-Run-Modus (Vorschau)
  • Export: Projektdaten, Equipment-Liste, Reports

5. UI-Komponenten-Matrix

Modul Hauptseiten Schlüssel-Komponenten Interaktionsmuster
Projekte Liste, Detail, Formular Filter-Toolbar, Status-Badge, Timeline-Miniatur, Tab-Navigation (Übersicht/Funktionen/Equipment/Crew/Finanzen/Dokumente) Inline-Editing, Drag-and-Drop für Funktionen
Equipment Katalog, Detail, Scan-View Suchfeld mit Autocomplete, Kachel/Tabelle-Toggle, Barcode-Scan-Button, Verfügbarkeits-Kalender Barcode-Scan, Massen-Selektion, Drag-in-Projekt
Crew Katalog, Detail, Verfügbarkeit Profilkarte, Skill-Tags, Verfügbarkeits-Kalender Drag-and-Drop in Projektfunktion
Fahrzeuge Katalog, Zuweisung Fahrzeug-Kachel, Transport-Kalender Drag-and-Drop in Projekt
Kontakte Liste, Detail Firmen-Baum + Ansprechpartner-Tabelle, Projekt-Verknüpfungen Inline-Editing
Finanzen Angebote-Liste, Rechnungen-Liste, Template-Editor PDF-Preview, E-Mail-Dialog, Zahlungsstatus-Badge Template-Builder (WYSIWYG oder HTML)
Anfragen Liste, Detail, Konvertierungs-Dialog Status-Badge, Konvertierungs-Button, Positions-Tabelle Formular-basiert
Scheduling Gantt-Timeline, Kalender Horizontale Zeitleiste, Drag-and-Drop-Balken, Zoom-Slider, Ressourcen-Filter Drag-and-Drop, Scroll-Zoom
Dokumente Datei-Liste, Template-Editor Upload-Zone (Drag-and-Drop), Datei-Vorschau, Ordner-Baum Drag-and-Drop-Upload
Dashboard Dashboard-Startseite Widget-Grid, Drill-Down-Klick, Zeitraum-Filter Widget-Konfiguration, Responsive Grid
Admin Benutzer, Rollen, Einstellungen Rollen-Matrix (Checkbox-Grid), Aktivitätslog-Tabelle Matrix-Editor
Mobile App Scan, Packliste, Suche Kamera-View mit Overlay, Checkliste mit Fortschritt, Sync-Status-Indikator Touch-optimiert, Offline-First

6. Nicht-funktionale Anforderungen

Performance & Skalierbarkeit

ID Anforderung Messkriterium
NF-P01 Seiten-Ladezeit Initial Page Load < 2s (P95), Subsequent Navigation < 500ms
NF-P02 API-Response-Zeit < 200ms (P95) für GET-Endpunkte, < 500ms für POST/PUT
NF-P03 Datenbank-Abfragen Maximale Datenmenge: 100.000 Projekte, 500.000 Equipment-Items
NF-P04 Parallelität Mindestens 50 gleichzeitige Benutzer ohne spürbare Degradation
NF-P05 Offline-Sync Mobile App: Konflikt-Auflösung bei ≤100 Offline-Änderungen

Sicherheit

ID Anforderung Beschreibung
NF-S01 Authentifizierung JWT-basiert, Token-Ablauf konfigurierbar (Standard: 24h), Refresh-Token
NF-S02 Autorisierung Rollenbasierte Zugriffskontrolle (RBAC) auf Modul- und Objektebene
NF-S03 HTTPS Ausschließlich TLS 1.3, HSTS-Header
NF-S04 Passwort-Policy Mindestens 8 Zeichen, Komplexitätsanforderung, bcrypt-Hashing
NF-S05 API-Sicherheit Rate Limiting (100 req/min pro Token), Input-Validierung, SQL-Injection-Schutz
NF-S06 Daten-Isolation Multi-Tenant: Strikte Trennung der Account-Daten
NF-S07 Audit-Log Alle schreibenden Operationen protokolliert mit Benutzer + Zeitstempel
NF-S08 DSGVO-Konformität Recht auf Auskunft/Löschung, Auftragsverarbeitungsvertrag-fähig

Zuverlässigkeit

ID Anforderung Beschreibung
NF-R01 Verfügbarkeit 99,5% Uptime (außerhalb geplanter Wartungsfenster)
NF-R02 Backup Automatisches tägliches Backup, 30 Tage Retention
NF-R03 Disaster Recovery Wiederherstellungszeit < 4h, maximal 24h Datenverlust (RPO)

Benutzerfreundlichkeit

ID Anforderung Beschreibung
NF-U01 Responsive Design Optimiert für Desktop (1920px), Tablet (1024px), Mobile (375px)
NF-U02 Barrierefreiheit WCAG 2.1 Level AA (Kontrast, Tastatur-Navigation, Screenreader)
NF-U03 Internationalisierung Mehrsprachig (DE, EN). Weitere Sprachen per Übersetzungsdatei ergänzbar
NF-U04 Browser-Support Chrome, Firefox, Safari, Edge jeweils letzte 2 Major-Versionen

Technische Architektur-Präferenzen (Diskussionsbasis)

  • Frontend: React mit TypeScript (Mobile PWA mit Capacitor)
  • Backend: Python FastAPI oder Node.js NestJS
  • Datenbank: PostgreSQL
  • Caching: Redis
  • Datei-Speicher: S3-kompatibler Object Storage (MinIO oder AWS S3)
  • Containerisierung: Docker + Kubernetes
  • CI/CD: GitHub Actions oder GitLab CI

7. Annahmen

  1. Multi-Tenant-Architektur: Jedes Unternehmen (Account) hat vollständig isolierte Daten. Ein Account kann mehrere Benutzer haben.
  2. Keine Integration mit echtem Rentman: Dies ist ein Standalone-Produkt, kein Sync-Client.
  3. Firmen-eigener Server oder Cloud: Self-Hosted oder SaaS, keine zwingende Abhängigkeit von externen Diensten außer E-Mail und optional S3.
  4. Keine Echtzeit-Kollaboration im MVP (kein WebSocket-Sync mehrerer Benutzer im gleichen Formular). Locking-Mechanismus ausreichend.
  5. Buchhaltung: Kein vollständiges Buchhaltungssystem. Der Klon deckt Angebote, Rechnungen und grundlegende Finanzübersicht ab. DATEV-Export optional.
  6. E-Mail-Versand: Transaktionale E-Mails (SMTP) und optionale Integration mit SendGrid/Mailgun.
  7. Datei-Uploads: Maximal 50 MB pro Datei.
  8. Mobile App: PWA mit Capacitor (nicht nativ), ausreichend für Kamera-Zugriff und Offline-Speicher.
  9. Projektvorlagen: Kopieren nur die Struktur (Funktionen, Gruppen), nicht konkrete Crew- oder Equipment-Zuweisungen.
  10. Nummernkreise: pro Account konfigurierbar (Projektnummer, Angebotsnummer, Rechnungsnummer).

8. Nicht-Ziele (Out of Scope)

Dieser Abschnitt definiert explizit, was nicht Teil des Klons ist (MVP und V1).

ID Nicht-Ziel Begründung
N-01 Vollständige Buchhaltung / DATEV-Integration Übersteigt Scope; Fokus auf Angebot/Rechnung
N-02 Personalabrechnung / Lohn Eigene Domäne, nicht Kern des Verleih-Managements
N-03 GPS-Tracking von Fahrzeugen Hardware-Abhängigkeit, optional in V2
N-04 KI-basierte Preisvorschläge Außerhalb MVP-Scope
N-05 Native iOS/Android Apps PWA deckt Anforderungen; native Apps optional V2
N-06 Echtzeit-Chat zwischen Benutzern Kommunikation erfolgt über externe Kanäle
N-07 Integration mit Miet-ERP-Systemen Custom-Integrationen pro Kunde → Professional Services
N-08 BIM-/CAD-Integration Nischen-Anforderung, nicht für MVP
N-09 RFID-Hardware-Integration Barcode/QR ausreichend; RFID optional
N-10 On-Premise Active Directory / LDAP OAuth2/SAML für V2 geplant

9. Offene Fragen

Diese Fragen müssen vor Architektur-Beginn geklärt werden.

ID Frage Relevanz für Vorgeschlagene Antwort
Q-01 Welches Tech-Stack wird bevorzugt? (React/FastAPI vs. Vue/Laravel vs. Next.js/Prisma) Architektur-Entscheidung React + FastAPI, da API-zentrisch
Q-02 Multi-Tenant auf DB-Ebene (shared DB + tenant_id) oder Schema-Ebene (ein Schema pro Tenant)? Sicherheit, Skalierung Shared DB mit tenant_id (einfacher)
Q-03 Soll es ein Self-Service-Onboarding geben (Account registrieren) oder nur Admin-gesteuert? Benutzerfluss Self-Service mit Trial-Periode
Q-04 Wie soll die Template-Engine für Angebote/Rechnungen funktionieren? WYSIWYG oder HTML/CSS? UI-Design, Aufwand HTML mit Platzhaltern (ähnlich Rentman), Vorschau-Funktion
Q-05 Preis-Modell des Klons? (Open Source, kommerziell, SaaS-Abo) Geschäftsmodell Open Source mit kommerzieller SaaS-Option
Q-06 Welche Sprachen werden für MVP benötigt? i18n-Aufwand Deutsch + Englisch
Q-07 Barcode-Generierung: Code128, QR, beide? Welches Label-Format? Druck-Layout QR-Code primär, Code128 optional. Label: 50×25mm
Q-08 Offline-Sync-Strategie: Last-Write-Wins oder CRDT? Mobile App Last-Write-Wins (einfacher, ausreichend für Equipment-Tracking)

Zusammenfassung

Metrik Wert
Anzahl User Stories 40
Anzahl Kernentitäten 16
Abgedeckte Module 13/13 (100%)
Geschätzter Funktionsumfang vs. Rentman ≥90%
Offene Fragen 8
Explizite Nicht-Ziele 10
Bereit für Architektur Ja (nach Klärung der offenen Fragen)