Files
web-cad/docs/requirements.md
T

26 KiB
Raw Blame History

Requirements Specification web-cad

Project: web-cad Web-basiertes 2D-CAD für Event-Bestuhlungspläne
Phase: 1 (Intake)
Date: 2026-06-19
Status: Draft ready for user review


1. Vision & Ziel

Das Ziel von web-cad ist eine web-basierte 2D-CAD-Anwendung, die:

  • alle grundlegenden CAD-Funktionen bereitstellt (Zeichnen, Bearbeiten, Bemaßen, Ebenen, Bibliothek, Gruppierung, Export/Import)
  • spezialisierte Tools für Event-Bestuhlungspläne bietet (Reihen- und Block-Bestuhlung)
  • später um weitere branchenspezifische Tools erweiterbar ist
  • Multi-User-Kollaboration in Echtzeit unterstützt
  • performant im Browser läuft auch bei großen Projekten
  • später auf Docker und Coolify deploybar ist

Referenz-UI: AutoCAD Web
Referenz-Architektur (Kollaboration): Figma / Onshape (Cloud-native, Single Source of Truth)


2. Nutzer & Rollen

Rolle Beschreibung
Planer Erstellt und bearbeitet Bestuhlungspläne, nutzt CAD-Grundfunktionen und Bestuhlungs-Tools
Betrachter Kann Pläne ansehen, kommentieren, aber nicht bearbeiten (Read-Only-Zugriff)
Admin Verwaltung von Projekten, Nutzern, Berechtigungen und Bibliothek
Gast Temporärer Zugriff auf spezifische Pläne ohne Account (z. B. für Kundenfreigabe)

3. Funktionale Anforderungen

3.1 CAD-Grundfunktionen

ID Anforderung Akzeptanzkriterium
F-CAD-01 Zeichnen von Grundelementen: Linie, Kreis, Bogen, Rechteck, Polygon, Ellipse Alle genannten Elemente können erstellt, ausgewählt, verschoben und gelöscht werden
F-CAD-02 Bearbeiten: Verschieben, Kopieren, Rotieren, Skalieren, Spiegeln, Trimmen, Verlängern, Abrunden (Fillet) Jede Operation verändert die Geometrie korrekt und kann rückgängig gemacht werden (Undo/Redo)
F-CAD-03 Bemaßung: Lineare, winkelige, radiale Bemaßung mit automatischer Maßberechnung basierend auf dem Hintergrund-Grundriss-Maßstab Bemaßung zeigt korrekte Werte in realen Maßeinheiten (m/cm) an
F-CAD-04 Raster & Fang: Rasteranzeige, Snap-to-Grid, Snap-to-Endpoint, Snap-to-Midpoint, Snap-to-Intersection, Ortho-Modus Fangpunkte werden visuell hervorgehoben und beim Zeichnen exakt eingefangen
F-CAD-05 Eingabefeld (Command Line): Befehlseingabe via Tastatur wie in AutoCAD (z. B. "L" für Line) Befehle können über die Tastatur eingegeben und ausgeführt werden; Autovervollständigung vorhanden
F-CAD-06 Eigenschaften-Panel: Anzeige und Bearbeitung von Element-Eigenschaften (Position, Größe, Winkel, Farbe, Linientyp, Linienstärke) Eigenschaften können angezeigt und geändert werden; Änderungen sind sofort sichtbar
F-CAD-07 Auswahl-Methoden: Einzelauswahl, Fenster-Auswahl, Kreuz-Auswahl, Selektion-Filter Alle Auswahlmethoden funktionieren und können kombiniert werden
F-CAD-08 Gruppierung: Elemente zu Gruppen zusammenfassen, Gruppen verschachteln, Gruppen speichern Gruppen können erstellt, aufgelöst und in der Bibliothek gespeichert werden
F-CAD-09 Undo/Redo: Strukturierte Undo/Redo-Historie mit beliebig vielen Schritten Undo und Redo funktionieren für alle Operationen; Historie kann eingesehen werden
F-CAD-10 Kopieren zwischen Dateien: Elemente können via Zwischenablage zwischen Projekten kopiert werden Kopierte Elemente behalten ihre Eigenschaften und relative Position

3.2 Ebenen-System (Layers)

ID Anforderung Akzeptanzkriterium
F-LAY-01 Ebenen als Baumstruktur: Ebenen hierarchisch organisiert mit Parent-Child-Beziehungen Ebenen werden in einem Baum-Widget angezeigt; Parent-Child-Beziehung sichtbar
F-LAY-02 Ebenen-Eigenschaften: Name, Sichtbarkeit (On/Off), Sperrung (Lock/Unlock), Farbe, Linientyp Jede Eigenschaft kann pro Ebene gesetzt werden und wirkt sich auf alle zugehörigen Elemente aus
F-LAY-03 Ebenen-Operationen: Erstellen, Löschen, Umbenennen, Verschieben im Baum, Duplizieren Alle Operationen funktionieren und aktualisieren den Baum in Echtzeit
F-LAY-04 Element-Zuordnung: Elemente können zwischen Ebenen verschoben werden Drag-and-Drop oder Kontextmenü zum Verschieben von Elementen zwischen Ebenen
F-LAY-05 Aktive Ebene: Neue Elemente werden auf der aktiven Ebene erstellt Aktive Ebene ist klar markiert; neue Elemente erscheinen auf der aktiven Ebene

3.3 Bibliothek (Block-Bibliothek)

ID Anforderung Akzeptanzkriterium
F-LIB-01 Bibliothek als Baumstruktur: Bibliothekselemente hierarchisch organisiert mit Ordnern und Unterordnern Baum-Widget zeigt Ordner und Blöcke; Drag-and-Drop für Organisation
F-LIB-02 SVG-Import: SVG-Dateien können in die Bibliothek importiert werden SVG wird korrekt importiert, im Viewer angezeigt und als wiederverwendbarer Block gespeichert
F-LIB-03 Gruppen in Bibliothek speichern: Im Zeichenbereich erstellte Gruppen können in die Bibliothek gespeichert werden Gruppe wird als Block gespeichert und kann per Drag-and-Drop in den Zeichenbereich eingefügt werden
F-LIB-04 Block-Einfügen: Blöcke aus der Bibliothek per Drag-and-Drop in den Zeichenbereich einfügen Block wird an der Drop-Position eingefügt; Skalierung und Rotation können beim Einfügen gesetzt werden
F-LIB-05 Block-Bearbeitung: Blöcke können nach dem Einfügen bearbeitet, skaliert, rotiert und gespiegelt werden Alle Bearbeitungsoperationen funktionieren auf eingefügten Blöcken
F-LIB-06 Bibliotheks-Verwaltung: Blöcke umbenennen, duplizieren, löschen, in Ordner verschieben Alle Verwaltungsoperationen funktionieren; Änderungen werden persistent gespeichert

3.4 Hintergrund & Grundriss

ID Anforderung Akzeptanzkriterium
F-BG-01 Grundriss laden: Bild- oder Vektor-Datei (PNG, JPG, SVG, PDF-Seite) als Hintergrund laden Datei wird als Hintergrund-Ebene geladen und im Zeichenbereich angezeigt
F-BG-02 Maßstabs-Definition: Maßstab des Grundrisses kann definiert werden (z. B. 1:100, Referenzstrecke) Nach Maßstabsdefinition werden Bemaßungen in realen Maßeinheiten (m/cm) angezeigt
F-BG-03 Hintergrund-Positionierung: Hintergrund kann verschoben, rotiert und skaliert werden Transformationen sind möglich und Bemaßungen aktualisieren sich entsprechend
F-BG-04 Hintergrund-Sichtbarkeit: Hintergrund kann ein- und ausgeblendet werden Sichtbarkeit kann pro Ebene oder global geschaltet werden

3.5 Bestuhlungs-Tools (Event-Spezifisch)

ID Anforderung Akzeptanzkriterium
F-EVT-01 Reihen-Bestuhlung: Automatische Platzierung von Stühlen in einer Reihe mit konfigurierbarem Abstand, Anzahl und Ausrichtung Reihe wird mit korrekter Anzahl, Abstand und Ausrichtung generiert; Parameter sind im Nachhinein änderbar
F-EVT-02 Block-Bestuhlung: Automatische Platzierung von Stuhl-Blöcken in einem rechteckigen Bereich mit konfigurierbaren Reihen, Spalten, Abständen Block wird mit korrekter Reihe/Spalte-Anzahl und Abständen generiert; Parameter im Nachhinein änderbar
F-EVT-03 Bestuhlungs-Parameter: Stuhl-Typ (aus Bibliothek), Reihe/Spalte-Anzahl, Abstand, Versatz, Ausrichtung, Block-Konfiguration Alle Parameter können konfiguriert werden; Änderungen aktualisieren die Bestuhlung in Echtzeit
F-EVT-04 Bestuhlung bearbeiten: Generierte Bestuhlung kann nachträglich modifiziert werden (Stühle hinzufügen/entfernen, verschieben) Einzelne Stühle können hinzugefügt, entfernt oder verschoben werden; Gesamttbestuhlung aktualisiert sich
F-EVT-05 Bestuhlungs-Zählung: Automatische Zählung der platzierten Stühle pro Reihe, Block und Gesamt Zähler wird in Echtzeit aktualisiert und kann im Eigenschaften-Panel abgelesen werden

3.6 Import & Export

ID Anforderung Akzeptanzkriterium
F-IMP-01 DXF-Import: DXF-Dateien können importiert und als Zeichnung bearbeitet werden DXF wird korrekt importiert; Layer, Blöcke und Geometrie bleiben erhalten
F-IMP-02 SVG-Import: SVG-Dateien können als Zeichnung importiert werden SVG wird korrekt importiert und als Vektor-Elemente bearbeitbar
F-IMP-03 DWG-Import (Optional): DWG-Dateien können importiert werden (falls Lizenz/Library verfügbar) DWG wird korrekt importiert oder klare Fehlermeldung bei nicht unterstützter Version
F-IMP-04 PDF-Import: PDF-Dateien als Hintergrund oder als Vektor-Import PDF wird geladen; Seiten können ausgewählt werden; Vektoren werden als bearbeitbare Elemente importiert
F-EXP-01 DXF-Export: Zeichnung kann als DXF exportiert werden Exportierte DXF-Datei kann in AutoCAD/QCAD korrekt geöffnet werden
F-EXP-02 SVG-Export: Zeichnung kann als SVG exportiert werden Exportierte SVG-Datei ist W3C-konform und in Browsern/Vektor-Programmen darstellbar
F-EXP-03 PDF-Export: Zeichnung kann als PDF exportiert werden (mit Layout, Maßstab, Titelblock) PDF wird mit korrektem Maßstab und allen Elementen generiert
F-EXP-03a PNG-Export: Zeichnung kann als PNG exportiert werden PNG wird in konfigurierbarer Auflösung generiert
F-EXP-04 JSON-Export (Projekt): Vollständiges Projekt kann als JSON exportiert und wieder importiert werden JSON enthält alle Daten (Ebenen, Elemente, Bibliothek, Grundriss); Re-Import ergibt identisches Projekt

3.7 Multi-User & Kollaboration

ID Anforderung Akzeptanzkriterium
F-MU-01 Echtzeit-Kollaboration: Mehrere Nutzer können gleichzeitig an derselben Zeichnung arbeiten Änderungen eines Nutzers sind für alle anderen in Echtzeit (< 1 Sekunde) sichtbar
F-MU-02 Konfliktfreie Bearbeitung: Gleichzeitige Bearbeitung desselben Elements führt nicht zu Konflikten oder Datenverlust CRDT-basierte Synchronisation stellt Konsistenz sicher; keine Merge-Konflikte
F-MU-03 Nutzer-Anwesenheit: Sichtbare Anzeige welcher Nutzer online ist und an welcher Zeichnung arbeitet Avatar/Farbmarkierung pro Nutzer; Liste der aktiven Nutzer im Panel
F-MU-04 Cursor-Anzeige: Position und Aktionen anderer Nutzer in Echtzeit sichtbar Cursor anderer Nutzer wird mit Name/Farbe in Echtzeit angezeigt
F-MU-05 Berechtigungs-System: Rollenbasierte Zugriffskontrolle (Planer, Betrachter, Admin, Gast) Berechtigungen werden enforced; Betrachter kann nicht bearbeiten; Gast hat nur Zugriff auf freigegebene Pläne
F-MU-06 Offline-Unterstützung: Offline-Änderungen werden synchronisiert, wenn Verbindung wiederhergestellt ist Offline-Änderungen werden automatisch synchronisiert; keine Datenverluste
F-MU-07 Versionshistorie: Änderungen werden protokolliert; Versionen können eingesehen und wiederhergestellt werden Historie zeigt Zeitstempel und Nutzer; Versionen können wiederhergestellt werden

3.8 UI / UX

ID Anforderung Akzeptanzkriterium
F-UI-01 AutoCAD Web-ähnliche Oberfläche: Ribbon-/Menü-Band, Werkzeug-Paletten, Eigenschaften-Panel, Command-Line, Status-Bar Layout orientiert sich an AutoCAD Web; Hauptwerkzeuge sind sichtbar und erreichbar
F-UI-02 Zeichenbereich: Großer Canvas-Bereich mit Zoom, Pan, und View-Controls (Zoom-to-Fit, Zoom-to-Window) Zoom und Pan funktionieren flüssig (60fps); View-Controls sind erreichbar
F-UI-03 Kontextmenüs: Rechtsklick-Kontextmenüs mit relevanten Aktionen Kontextmenü zeigt aktionsabhängige Einträge
F-UI-04 Tastatur-Shortcuts: Standard-CAD-Shortcuts (z. B. L, C, M, CO, RO, SC, MI) Shortcuts funktionieren und sind dokumentiert
F-UI-05 Responsive Design: UI funktioniert auf Desktop-Bildschirmen (min. 1280px) Bei 1280px Breite sind alle Panels nutzbar; kleinere Bildschirme werden in späterer Phase unterstützt
F-UI-06 Theme-Unterstützung: Dark- und Light-Mode Theme kann umgeschaltet werden; alle UI-Elemente passen sich an

3.9 Erweiterbarkeit

ID Anforderung Akzeptanzkriterium
F-EXT-01 Plugin/Tool-System: Architektur ermöglicht das Hinzufügen neuer Tools ohne Core-Änderung Ein neues Tool kann als Plugin/Modul implementiert und registriert werden ohne Core-Code zu ändern
F-EXT-02 Tool-API: Definierte Schnittstelle für externe Tools (Zeichnen, Bearbeiten, Bibliothek, Export) API ist dokumentiert; ein Beispiel-Tool kann die API nutzen
F-EXT-03 Bibliothek-Erweiterung: Neue Bibliothekstypen können hinzugefügt werden (nicht nur SVG) Neue Typen können registriert und in der Bibliothek verwendet werden

4. Nicht-funktionale Anforderungen

4.1 Performance

ID Anforderung Akzeptanzkriterium
NF-PERF-01 Große Projekte: Anwendung muss Projekte mit 50.000+ Elementen flüssig darstellen (60fps) Benchmark: 50.000 Linienelemente werden bei 60fps gerendert (Canvas 2D mit Indexierung oder WebGL)
NF-PERF-02 Ladezeit: Initiale Ladezeit < 3 Sekunden bei Standard-Internetverbindung Lighthouse-Performance-Score >= 80; First Contentful Paint < 1,5s
NF-PERF-03 Speicher-Effizienz: Browser-Speicherverbrauch bleibt < 500MB bei 50.000 Elementen Speicherverbrauch wird überwacht und bleibt unter 500MB
NF-PERF-04 Kollaborations-Latenz: Echtzeit-Synchronisation < 1 Sekunde bei normaler Netzwerkverbindung Latenz wird gemessen und bleibt unter 1 Sekunde

4.2 Rendering-Technologie (Architektur-Empfehlung)

Basierend auf Recherche (Stand 2025/2026):

Technologie Einsatzbereich Begründung
Canvas 2D (mit Indexierung & Layer-System) Primärer Renderer für 2D-CAD Kann 50.000+ Elemente bei 60fps rendern; gute Balance aus Performance und Entwicklungs-Aufwand
WebGL (optional, Hybrid) Performance-Boost für sehr große Szenen (> 100k Elemente) GPU-Beschleunigung; höhere Komplexität; erst bei Bedarf implementieren
SVG NICHT als primärer Renderer geeignet DOM-Overhead bei > 3.000-5.000 Elementen; Performance-Einbruch
WebAssembly Berechnungsintensive Operationen (DXF-Parsing, Geometrie-Operationen) Nahe-native Performance für Parsing und Mathematik

Empfehlung: Canvas 2D mit räumlichem Index (Quadtree/R-Tree) und Layer-basiertem Rendering als primäre Technologie. WebGL als optionale Hybrid-Schicht für extrem große Szenen reservieren.

4.3 Kollaborations-Architektur (Architektur-Empfehlung)

Aspekt Empfehlung Begründung
Synchronisation CRDT (z. B. Yjs) über WebSocket Konfliktfreie Synchronisation; bewährt in Figma und modernen kollaborativen Apps; leichter korrekt zu implementieren als OT
Transport WebSocket für Dokument-Daten; WebRTC optional für Cursor-Daten WebSocket: zuverlässig, server-seitig kontrollierbar; WebRTC: niedrigere Latenz für Cursor-Positionen
Persistenz Server-seitige Persistenz der CRDT-Dokumente Single Source of Truth; Versionshistorie; Offline-Sync bei Reconnect
Skalierung WebSocket-Server mit Pub/Sub pro Raum (Zeichnung) Mehrere Zeichnungen parallel; isolierte Räume; horizontale Skalierung möglich

4.4 Sicherheit

ID Anforderung Akzeptanzkriterium
NF-SEC-01 Authentifizierung: Nutzer müssen sich authentifizieren (OAuth2/OIDC oder E-Mail/Passwort) Login funktioniert; Sessions sind sicher (HTTP-only Cookies, CSRF-Schutz)
NF-SEC-02 Autorisierung: Rollenbasierte Zugriffskontrolle für Projekte und Aktionen Berechtigungen werden server-seitig enforced
NF-SEC-03 Daten-Transport: HTTPS/WSS für gesamte Kommunikation TLS für alle Verbindungen; keine unverschlüsselte Kommunikation
NF-SEC-04 Input-Validierung: Import-Dateien werden validiert (DXF, SVG, PDF) Maliciöse Dateien werden abgewiesen; Schema-Validierung erfolgt vor Verarbeitung

4.5 Deployment

ID Anforderung Akzeptanzkriterium
NF-DEP-01 Docker-Deployment: Anwendung kann in Docker-Containern betrieben werden Dockerfile und docker-compose.yml vorhanden und funktionsfähig
NF-DEP-02 Coolify-Deployment: Deployment via Coolify ist möglich Coolify-kompatible Konfiguration vorhanden; Deployment-Dokumentation erstellt
NF-DEP-03 Umgebungs-Konfiguration: Konfiguration über Umgebungsvariablen Keine fest codierten Credentials; alle Secrets über Env-Variablen
NF-DEP-04 Datenbank: Persistente Datenhaltung für Projekte, Nutzer, Bibliothek Datenbank-Schema definiert; Migration-Skripte vorhanden

4.6 Plattform & Browser-Kompatibilität

ID Anforderung Akzeptanzkriterium
NF-PLAT-01 Browser-Unterstützung: Chrome, Firefox, Edge, Safari ( aktuelle Versionen) Anwendung läuft in allen genannten Browsern; keine Browser-spezifischen Fehler
NF-PLAT-02 WebAssembly-Unterstützung: Browser muss WebAssembly unterstützen Fallback-Strategie für Browser ohne WebAssembly oder klare Fehlermeldung

5. Annahmen (Assumptions)

  1. Primär Desktop: Die Anwendung wird primär auf Desktop-Geräten (≥1280px Breite) verwendet; mobile Unterstützung ist nicht Teil der initialen Version.
  2. Deutsche UI: Die Benutzeroberfläche wird primär auf Deutsch entwickelt; Mehrsprachigkeit kann später hinzugefügt werden.
  3. Keine 3D: Die Anwendung ist rein 2D; keine 3D-Modellierung oder 3D-Ansicht.
  4. DXF als primäres Austauschformat: DXF ist das wichtigste Import/Export-Format für CAD-Interoperabilität; DWG ist optional und von Library-Verfügbarkeit abhängig.
  5. CRDT als Synchronisations-Standard: CRDT (Yjs oder ähnlich) wird als Standard für Echtzeit-Kollaboration angenommen; OT wird nicht verwendet.
  6. Canvas 2D als primärer Renderer: Canvas 2D mit räumlichem Index wird als primäre Rendering-Technologie angenommen; WebGL ist optional.
  7. Einzelner Server-Deployment: Initiales Deployment ist ein einzelner Server (Docker/Coolify); horizontale Skalierung ist später möglich.
  8. SVG-Import als Bibliothekserweiterung: SVG-Dateien werden primär für die Bibliothek importiert; SVG als Projekt-Import ist sekundär.
  9. Möglichst Open Source: Soweit möglich sollen Open-Source-Bibliotheken verwendet werden, um Lizenzkosten zu minimieren.
  10. Bestuhlungs-Stühle als Bibliothek-Blöcke: Stühle für Bestuhlungs-Tools werden als Blöcke in der Bibliothek definiert, nicht fest codiert.

6. Non-Goals (Nicht im Scope der initialen Version)

  1. Keine 3D-Modellierung rein 2D; keine 3D-Ansicht, keine Höhen, keine 3D-Renderings.
  2. Keine mobile App oder mobile-optimierte UI Desktop first; mobile wird erst bei Bedarf addressed.
  3. Keine lokalen Druck-/Plot-Konfigurationen PDF-Export ersetzt direktes Drucken in der ersten Version.
  4. Keine AutoCAD-LISP-/Macro-Skripting-Engine keine benutzerdefinierten Skripte in LISP/AutoLISP.
  5. Keine parametrische Modellierung keine Constraint-basierte Geometrie oder parametrischen Relationen.
  6. Keine BIM-Integration keine IFC-Importe, keine BIM-Datenmodellierung.
  7. Keine Desktop-Installation rein web-basiert; keine Electron-/NW.js-Desktop-App.
  8. Keine KI-gestützten Funktionen keine automatische Bestuhlungsvorschläge oder KI-Features in der ersten Version.
  9. Keine Multi-Tenant-Isolierung auf Organisationsebene initiale Version ist Single-Tenant; Multi-Tenant später.
  10. Keine erweiterten Druck-Layouts keine Plot-Styles, Linienstärken-Tabellen oder Print-Studio-Konfigurationen.
  11. Keine Video-/Audio-Kommunikation keine integrierte Video- oder Audio-Calls zwischen Nutzern.
  12. Keine automatische Flächenberechnung / Mengenermittlung in der ersten Version nicht enthalten.

7. Offene Fragen

# Frage Priorität Auswirkung bei Nicht-Beantwortung
Q-01 Soll die Anwendung Open Source oder Closed Source sein? Welche Lizenz? Hoch Lizenzierung, Bibliotheksauswahl
Q-02 Welche Authentifizierungsmethode wird bevorzugt (E-Mail/Passwort, OAuth2/OIDC, SSO)? Hoch Architektur, Security-Design
Q-03 Welche Datenbank soll verwendet werden (PostgreSQL, SQLite, MongoDB)? Mittel Persistenz-Design, Deployment
Q-04 Gibt es eine erwartete Nutzerzahl / Anzahl gleichzeitiger Kollaborateure pro Zeichnung? Mittel Skalierungs-Architektur, WebSocket-Server-Design
Q-05 Soll DWG-Import unterstützt werden? Wenn ja, welche DWG-Versionen? Mittel Library-Auswahl, Lizenzkosten (ODA/Teigha)
Q-06 Welche Stuhl-Typen / Bibliothekseinträge werden initial benötigt? Mittel Initial-Bibliothek, Bestuhlungs-Tool-Design
Q-07 Sollen Bestuhlungs-Tools weitere Event-Elemente unterstützen (Tische, Bühnen, Absperrungen)? Mittel Tool-Scope, Bibliothek
Q-08 Ist eine Kommentar-/Annotations-Funktion für Kollaborateure gewünscht? Niedrig UI-Design, Kollaborations-Features
Q-09 Sollen Projekte in Ordnern/Projektgruppen organisiert werden können? Niedrig Projekt-Management-UI
Q-10 Gibt es Anforderungen an Barrierefreiheit (WCAG 2.1 AA)? Niedrig UI-Design, Testing-Aufwand
Q-11 Soll es ein API für externe Integrationen geben (REST/GraphQL)? Niedrig Architektur-Erweiterung
Q-12 Welche Maßeinheiten sollen unterstützt werden (metrisch, imperial, beides)? Niedrig Bemaßungs-Logic, UI

8. Technologie-Recherche & Empfehlungen

8.1 Rendering-Technologie

Recherche-Ergebnisse (Stand 2025/2026):

  • SVG: Gut für einfache Grafiken; DOM-Overhead bei > 3.000-5.000 Elementen → Performance-Einbruch. Nicht geeignet für CAD mit großen Zeichnungen.
  • Canvas 2D: Kann 50.000+ Elemente bei 60fps rendern, wenn räumliche Indexierung (Quadtree/R-Tree) und Layer-basiertes Culling eingesetzt werden. Empfohlen als primärer Renderer.
  • WebGL: Höchste Performance für sehr große Szenen (> 100k Elemente); GPU-Beschleunigung; jedoch höherer Entwicklungs-Aufwand. Als optionale Hybrid-Schicht reservieren.
  • WebAssembly: Nahe-native Performance für Berechnungen (DXF-Parsing, geometrische Operationen). Empfohlen für rechenintensive Aufgaben.

Quellen:

  • SVG Genie Blog: SVG vs Canvas vs WebGL Performance Comparison (2026)
  • AlterSquare: WebGL vs Canvas for Browser-Based CAD Tools
  • Medium (@codetip.top): SVG vs Canvas vs WebGL for Diagram Viewers
  • PMC: Cross-Device Benchmark of Modern Web Animation Systems

8.2 Multi-User Kollaboration

Recherche-Ergebnisse (Stand 2025/2026):

  • CRDT (Conflict-free Replicated Data Types): Moderner Standard für kollaborative Anwendungen; verwendet von Figma und vielen modernen Apps; leichter korrekt zu implementieren als OT.
    • Yjs: Beliebteste CRDT-Bibliothek; unterstützt Text, Arrays, Maps, XML; WebSocket- und WebRTC-Bindings vorhanden.
    • Automerge: Alternative CRDT-Bibliothek; ähnliche Features.
  • OT (Operational Transformation): Älterer Ansatz (Google Docs); komplexer korrekt zu implementieren; erfordert zentrale Server-Logik.
  • Transport: WebSocket für Dokument-Synchronisation; WebRTC für Cursor-Positionen (niedrigere Latenz).
  • Persistenz: Server-seitige Speicherung der CRDT-Dokumente für Single Source of Truth und Versionshistorie.

Empfehlung: CRDT (Yjs) über WebSocket als primäre Kollaborations-Architektur.

Quellen:

  • Medium (toonsquare.tech): Real-Time Collaborative Editor with CRDT and Durable Objects
  • Velt Blog: OT vs CRDT in 2026; Yjs WebSocket Server Guide
  • Daydreamsoft: Real-Time Collaboration Using CRDTs and OT
  • Onshape: Cloud-native CAD Collaboration

8.3 Architektur-Referenzen

  • AutoCAD Web: Browser-basierte CAD-Oberfläche mit Ribbon-UI, DWG-Viewing, Markup-Tools.
  • Onshape: Cloud-native CAD mit echter Multi-User-Kollaboration; Single Source of Truth; keine Datei-Kopien.
  • Figma: Browser-basierte Design-Tool mit CRDT-basierter Kollaboration; inspirierend für UI und Sync-Architektur.
  • xDraftSight: Cloud-basierter 2D-CAD; browser-basierte Architektur.

9. Abhängigkeiten & Risiken

Risiko Beschreibung Mitigation
DXF/DWG-Kompatibilität DXF-Parser in JavaScript/WebAssembly muss verschiedene DXF-Versionen korrekt verarbeiten Open-Source-Library (dxf-parser) verwenden; Tests mit realen DXF-Dateien
Performance bei großen Zeichnungen 50k+ Elemente können Browser überlasten Canvas 2D mit räumlichem Index; Viewport-Culling; Virtualisierte Layer
Kollaborations-Komplexität CRDT-Synchronisation für komplexe CAD-Daten ist nicht trivial Yjs als bewährte Bibliothek; inkrementelle Implementierung; erst einfache Operationen, dann komplexe
Bibliotheks-Lizenzen Einige CAD-Bibliotheken sind kommerziell (z. B. ODA für DWG) Open-Source-Alternativen evaluieren; DWG als optional markieren
Browser-Speicherlimit Sehr große Projekte können Browser-Speicherlimit überschreiten Lazy-Loading; Kompression; IndexedDB für Persistenz

10. Deployment-Erwartungen

Aspekt Erwartung
Containerisierung Docker (Dockerfile + docker-compose.yml)
Orchestrierung Coolify auf coolify-01 (46.225.91.159)
Domain TBD z. B. cad.media-on.de
SSL Let's Encrypt via Coolify/Traefik
Datenbank PostgreSQL (empfohlen) oder SQLite (für kleinere Deployments)
WebSocket-Server Separater Container oder integriert; WebSocket-Proxy via Traefik
Persistenz Docker-Volume für Datenbank und Datei-Storage (Grundrisse, Bibliothek)
Skalierung Initiale Version: Einzelner Server; später horizontal skalierbar

11. Handoff

Requirements Status

  • Draft erstellt: Ja (2026-06-19)
  • Testbare Anforderungen: Ja alle funktionalen und nicht-funktionalen Anforderungen haben konkrete Akzeptanzkriterien
  • Akzeptanzkriterien konkret: Ja
  • Annahmen explizit: Ja (10 Annahmen dokumentiert)
  • Non-Goals dokumentiert: Ja (12 Non-Goals)
  • Offene Fragen: 12 (davon 2 hoch, 3 mittel, 7 niedrig priorisiert)

Ready for Architecture

  • Bedingt bereit nach Beantwortung von Q-01 (Lizenz) und Q-02 (Authentifizierung) kann die Architektur-Phase starten
  • Die technologischen Empfehlungen (Canvas 2D + CRDT/Yjs) sind bereits fundiert recherchiert und können als Architektur-Vorgaben dienen

Empfohlene nächste Schritte

  1. User-Review der requirements.md
  2. Beantwortung der hoch-priorisierten offenen Fragen (Q-01, Q-02)
  3. Freigabe für Architektur-Phase (Phase 2)
  4. Delegation an Solution Architect