docs: update requirements v2 – AutoCAD Web reference, Open Source, Plugin-System, Q-01/Q-02 resolved
This commit is contained in:
+235
-70
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
**Project:** web-cad – Web-basiertes 2D-CAD für Event-Bestuhlungspläne
|
**Project:** web-cad – Web-basiertes 2D-CAD für Event-Bestuhlungspläne
|
||||||
**Phase:** 1 (Intake)
|
**Phase:** 1 (Intake)
|
||||||
**Date:** 2026-06-19
|
**Date:** 2026-06-19 (updated 2026-06-19)
|
||||||
**Status:** Draft – ready for user review
|
**Status:** Draft v2 – ready for user review
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -13,12 +13,13 @@ 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)
|
- 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)
|
- spezialisierte Tools für Event-Bestuhlungspläne bietet (Reihen- und Block-Bestuhlung)
|
||||||
- später um weitere branchenspezifische Tools erweiterbar ist
|
- später um weitere branchenspezifische Tools erweiterbar ist – in jede Richtung
|
||||||
- Multi-User-Kollaboration in Echtzeit unterstützt
|
- Multi-User-Kollaboration in Echtzeit unterstützt
|
||||||
- performant im Browser läuft – auch bei großen Projekten
|
- performant im Browser läuft – auch bei großen Projekten
|
||||||
- später auf Docker und Coolify deploybar ist
|
- später auf Docker und Coolify deploybar ist
|
||||||
|
- **ausschließlich Open-Source-Komponenten** verwendet und selbst als Open Source lizenziert wird
|
||||||
|
|
||||||
**Referenz-UI:** AutoCAD Web
|
**Referenz-UI:** AutoCAD Web (siehe Section 12 – AutoCAD Web Feature-Referenz)
|
||||||
**Referenz-Architektur (Kollaboration):** Figma / Onshape (Cloud-native, Single Source of Truth)
|
**Referenz-Architektur (Kollaboration):** Figma / Onshape (Cloud-native, Single Source of Truth)
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -40,26 +41,29 @@ Das Ziel von **web-cad** ist eine web-basierte 2D-CAD-Anwendung, die:
|
|||||||
|
|
||||||
| ID | Anforderung | Akzeptanzkriterium |
|
| 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-01 | **Zeichnen von Grundelementen:** Linie, Kreis, Bogen, Rechteck, Polygon, Ellipse, Polylinie (PLINE) | 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-02 | **Bearbeiten:** Verschieben (MOVE), Kopieren (COPY/CO), Rotieren (ROTATE/RO), Skalieren (SCALE/SC), Spiegeln (MIRROR/MI), Trimmen (TRIM), Verlängern (EXTEND), Abrunden (FILLET), Versatz (OFFSET) | 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-03 | **Bemaßung:** Lineare (DIM), 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-04 | **Raster & Fang:** Rasteranzeige, Snap-to-Grid, Snap-to-Endpoint, Snap-to-Midpoint, Snap-to-Intersection, Ortho-Modus, Polar Tracking | 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-05 | **Eingabefeld (Command Line):** Befehlseingabe via Tastatur wie in AutoCAD (z. B. "L" für Line, "PL" für Polyline, "C" für Circle) | 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-06 | **Eigenschaften-Panel:** Anzeige und Bearbeitung von Element-Eigenschaften (Position, Größe, Winkel, Farbe, Linientyp, Linienstärke, Transparenz) | 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-07 | **Auswahl-Methoden:** Einzelauswahl, Fenster-Auswahl, Kreuz-Auswahl, Selektion-Filter, Quick-Select (Eigenschafts-basierte Auswahl) | 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-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-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 |
|
| F-CAD-10 | **Kopieren zwischen Dateien:** Elemente können via Zwischenablage zwischen Projekten kopiert werden | Kopierte Elemente behalten ihre Eigenschaften und relative Position |
|
||||||
|
| F-CAD-11 | **Annotation & Text:** Einzel- und Mehrzeilentext (TEXT/MTEXT), Revision Clouds (REVCLOUD), Leaders (MLEADER) | Text kann erstellt, formatiert und platziert werden; Leaders und Revisionswolken funktionieren |
|
||||||
|
| F-CAD-12 | **Muster-/Schraffurfunktion:** Flächen können mit Mustern/Schraffuren gefüllt werden (HATCH) | Muster können ausgewählt, skaliert und angewendet werden |
|
||||||
|
|
||||||
### 3.2 Ebenen-System (Layers)
|
### 3.2 Ebenen-System (Layers)
|
||||||
|
|
||||||
| ID | Anforderung | Akzeptanzkriterium |
|
| 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-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-02 | **Ebenen-Eigenschaften:** Name, Sichtbarkeit (On/Off), Sperrung (Lock/Unlock), Farbe, Linientyp, Transparenz | 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-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-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 |
|
| 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 |
|
||||||
|
| F-LAY-06 | **Ebenen-Filter:** Filter nach Eigenschaften (Farbe, Linientyp, Name) | Gefilterte Ebenen werden korrekt angezeigt; Filter können gespeichert werden |
|
||||||
|
|
||||||
### 3.3 Bibliothek (Block-Bibliothek)
|
### 3.3 Bibliothek (Block-Bibliothek)
|
||||||
|
|
||||||
@@ -71,6 +75,7 @@ Das Ziel von **web-cad** ist eine web-basierte 2D-CAD-Anwendung, die:
|
|||||||
| 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-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-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 |
|
| F-LIB-06 | **Bibliotheks-Verwaltung:** Blöcke umbenennen, duplizieren, löschen, in Ordner verschieben | Alle Verwaltungsoperationen funktionieren; Änderungen werden persistent gespeichert |
|
||||||
|
| F-LIB-07 | **Block-Definition vs. Block-Referenz:** Blöcke werden als Definition gespeichert; Instanzen referenzieren die Definition (wie AutoCAD Blocks) | Änderung an der Block-Definition aktualisiert alle Instanzen; Instanzen können unabhängig transformiert werden |
|
||||||
|
|
||||||
### 3.4 Hintergrund & Grundriss
|
### 3.4 Hintergrund & Grundriss
|
||||||
|
|
||||||
@@ -88,7 +93,7 @@ Das Ziel von **web-cad** ist eine web-basierte 2D-CAD-Anwendung, die:
|
|||||||
| 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-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-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-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-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; Gesamtbestuhlung 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 |
|
| 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
|
### 3.6 Import & Export
|
||||||
@@ -97,7 +102,7 @@ Das Ziel von **web-cad** ist eine web-basierte 2D-CAD-Anwendung, die:
|
|||||||
|---|---|---|
|
|---|---|---|
|
||||||
| 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-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-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-03 | **DWG-Import (Optional):** DWG-Dateien können importiert werden (Open-Source-Library, z. B. libredwg) | 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-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-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-02 | **SVG-Export:** Zeichnung kann als SVG exportiert werden | Exportierte SVG-Datei ist W3C-konform und in Browsern/Vektor-Programmen darstellbar |
|
||||||
@@ -121,20 +126,37 @@ Das Ziel von **web-cad** ist eine web-basierte 2D-CAD-Anwendung, die:
|
|||||||
|
|
||||||
| ID | Anforderung | Akzeptanzkriterium |
|
| 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-01 | **AutoCAD Web-ähnliche Oberfläche:** Ribbon-/Menü-Band, Werkzeug-Paletten, Eigenschaften-Panel, Command-Line, Status-Bar, Blocks-Tab, Layers-Tab | 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-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-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-04 | **Tastatur-Shortcuts:** Standard-CAD-Shortcuts (z. B. L, C, M, CO, RO, SC, MI, PL, H) | 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-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 |
|
| F-UI-06 | **Theme-Unterstützung:** Dark- und Light-Mode | Theme kann umgeschaltet werden; alle UI-Elemente passen sich an |
|
||||||
|
| F-UI-07 | **Sidebar-Panels:** Tabs für Blocks, Layers, Eigenschaften (wie AutoCAD Web Side Panel) | Side-Panel-Tabs sind erreichbar und zeigen entsprechenden Inhalt |
|
||||||
|
| F-UI-08 | **Streamlined UI:** UI fokussiert auf 2D-Drafting – nicht überladen wie Desktop-CAD | Wesentliche Werkzeuge sichtbar; erweiterte Funktionen in Untermenüs oder ausblendbar |
|
||||||
|
|
||||||
### 3.9 Erweiterbarkeit
|
### 3.9 Erweiterbarkeit & Plugin-System
|
||||||
|
|
||||||
| ID | Anforderung | Akzeptanzkriterium |
|
| 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-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-02 | **Tool-API:** Definierte Schnittstelle für externe Tools (Zeichnen, Bearbeiten, Bibliothek, Export, UI) | 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 |
|
| 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 |
|
||||||
|
| F-EXT-04 | **Universelle Erweiterbarkeit:** Die Software soll später in jede Richtung erweiterbar sein – neue Branchen-Tools, neue Import/Export-Formate, neue UI-Komponenten | Architektur erlaubt Erweiterung in allen Bereichen ohne Core-Rewrite |
|
||||||
|
| F-EXT-05 | **Plugin-Isolation:** Plugins laufen isoliert und können den Core nicht crashen | Ein fehlerhaftes Plugin zeigt Fehlermeldung, aber die Anwendung stürzt nicht ab |
|
||||||
|
| F-EXT-06 | **Plugin-Registrierung:** Plugins können über ein Manifest registriert und zur Laufzeit geladen werden | Plugin-Manifest definiert Name, Version, Abhängigkeiten; Plugin wird zur Laufzeit geladen |
|
||||||
|
| F-EXT-07 | **Plugin-Lifecycle:** Plugins können aktiviert/deaktiviert werden ohne Neustart | Plugin kann in den Einstellungen aktiviert/deaktiviert werden; Änderung ist sofort wirksam |
|
||||||
|
| F-EXT-08 | **Plugin-UI-Integration:** Plugins können eigene UI-Elemente (Ribbon-Tabs, Panels, Dialoge) hinzufügen | Plugin-UI-Elemente erscheinen im Ribbon/Panel und sind funktional |
|
||||||
|
|
||||||
|
### 3.10 Authentifizierung & Benutzerverwaltung
|
||||||
|
|
||||||
|
| ID | Anforderung | Akzeptanzkriterium |
|
||||||
|
|---|---|---|
|
||||||
|
| F-AUTH-01 | **E-Mail/Passwort-Login:** Nutzer registrieren sich mit E-Mail und Passwort | Registrierung und Login funktionieren; Passwörter werden gehasht (bcrypt/argon2) gespeichert |
|
||||||
|
| F-AUTH-02 | **Passwort-Reset:** Passwort kann über E-Mail-Link zurückgesetzt werden | Reset-Link wird gesendet; Passwort kann nach Klick zurückgesetzt werden |
|
||||||
|
| F-AUTH-03 | **Session-Management:** Sichere Sessions mit HTTP-only Cookies | Sessions sind sicher; CSRF-Schutz aktiv; Session-Timeout konfigurierbar |
|
||||||
|
| F-AUTH-04 | **Benutzerverwaltung:** Admin kann Nutzer erstellen, bearbeiten, löschen, Rollen zuweisen | Alle Operationen funktionieren; Rollenänderungen sind sofort wirksam |
|
||||||
|
| F-AUTH-05 | **Gast-Zugang:** Admin kann temporäre Gast-Zugänge für spezifische Pläne erstellen | Gast-Link funktioniert; Gast hat nur Zugriff auf freigegebene Pläne; Link kann widerrufen werden |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -149,38 +171,48 @@ Das Ziel von **web-cad** ist eine web-basierte 2D-CAD-Anwendung, die:
|
|||||||
| NF-PERF-03 | **Speicher-Effizienz:** Browser-Speicherverbrauch bleibt < 500MB bei 50.000 Elementen | Speicherverbrauch wird überwacht und bleibt unter 500MB |
|
| 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 |
|
| 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)
|
### 4.2 Rendering-Technologie (Architektur-Empfehlung – Open Source)
|
||||||
|
|
||||||
Basierend auf Recherche (Stand 2025/2026):
|
Basierend auf Recherche (Stand 2025/2026). Alle Empfehlungen verwenden **ausschließlich Open-Source-Komponenten**.
|
||||||
|
|
||||||
| Technologie | Einsatzbereich | Begründung |
|
| Technologie | Einsatzbereich | Begründung | Open-Source-Verfügbarkeit |
|
||||||
|---|---|---|
|
|---|---|---|---|
|
||||||
| **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 |
|
| **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 | Browser-Native API (keine Library nötig); rbush (R-Tree, MIT) für räumliche Indexierung |
|
||||||
| **WebGL (optional, Hybrid)** | Performance-Boost für sehr große Szenen (> 100k Elemente) | GPU-Beschleunigung; höhere Komplexität; erst bei Bedarf implementieren |
|
| **WebGL (optional, Hybrid)** | Performance-Boost für sehr große Szenen (> 100k Elemente) | GPU-Beschleunigung; höhere Komplexität; erst bei Bedarf implementieren | regl (MIT) oder Three.js (MIT) als WebGL-Abstraktion |
|
||||||
| **SVG** | NICHT als primärer Renderer geeignet | DOM-Overhead bei > 3.000-5.000 Elementen; Performance-Einbruch |
|
| **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 |
|
| **WebAssembly** | Berechnungsintensive Operationen (DXF-Parsing, Geometrie-Operationen) | Nahe-native Performance für Parsing und Mathematik | Rust + wasm-bindgen (MIT/Apache); dxf-parser in Rust portierbar |
|
||||||
|
|
||||||
**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.
|
**Empfehlung:** Canvas 2D mit räumlichem Index (rbush/R-Tree) und Layer-basiertem Rendering als primäre Technologie. WebGL (via regl oder Three.js) als optionale Hybrid-Schicht für extrem große Szenen reservieren.
|
||||||
|
|
||||||
### 4.3 Kollaborations-Architektur (Architektur-Empfehlung)
|
### 4.3 Kollaborations-Architektur (Open Source)
|
||||||
|
|
||||||
| Aspekt | Empfehlung | Begründung |
|
| Aspekt | Empfehlung | Begründung | Open-Source-Verfügbarkeit |
|
||||||
|---|---|---|
|
|---|---|---|---|
|
||||||
| **Synchronisation** | CRDT (z. B. Yjs) über WebSocket | Konfliktfreie Synchronisation; bewährt in Figma und modernen kollaborativen Apps; leichter korrekt zu implementieren als OT |
|
| **Synchronisation** | CRDT (Yjs) über WebSocket | Konfliktfreie Synchronisation; bewährt in Figma und modernen kollaborativen Apps | Yjs (MIT), y-websocket (MIT) |
|
||||||
| **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 |
|
| **Transport** | WebSocket für Dokument-Daten; WebRTC optional für Cursor-Daten | WebSocket: zuverlässig, server-seitig kontrollierbar; WebRTC: niedrigere Latenz | ws (MIT), y-webrtc (MIT) |
|
||||||
| **Persistenz** | Server-seitige Persistenz der CRDT-Dokumente | Single Source of Truth; Versionshistorie; Offline-Sync bei Reconnect |
|
| **Persistenz** | Server-seitige Persistenz der CRDT-Dokumente | Single Source of Truth; Versionshistorie; Offline-Sync bei Reconnect | y-leveldb (MIT), IndexedDB client-side |
|
||||||
| **Skalierung** | WebSocket-Server mit Pub/Sub pro Raum (Zeichnung) | Mehrere Zeichnungen parallel; isolierte Räume; horizontale Skalierung möglich |
|
| **Skalierung** | WebSocket-Server mit Pub/Sub pro Raum (Zeichnung) | Mehrere Zeichnungen parallel; isolierte Räume; horizontale Skalierung möglich | Redis Pub/Sub (BSD) für Multi-Server-Skalierung |
|
||||||
|
|
||||||
### 4.4 Sicherheit
|
### 4.4 Open-Source-Lizenz & Komponenten
|
||||||
|
|
||||||
| ID | Anforderung | Akzeptanzkriterium |
|
| 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-OSS-01 | **Open-Source-Lizenz:** web-cad wird als Open Source veröffentlicht (Lizenz: AGPL-3.0 oder MIT, siehe Q-01) | Lizenz-Datei (LICENSE) im Repo; alle Quellen öffentlich |
|
||||||
|
| NF-OSS-02 | **Nur Open-Source-Komponenten:** Alle verwendeten Libraries, Tools und Frameworks müssen Open-Source-Lizenzen haben (MIT, Apache-2.0, BSD, ISC, LGPL, AGPL) | Keine proprietären Abhängigkeiten; Lizenz-Audit in CI/CD |
|
||||||
|
| NF-OSS-03 | **Lizenz-Kompatibilität:** Alle Abhängigkeiten sind untereinander lizenzkompatibel | Lizenz-Kompatibilitätsanalyse durchgeführt; keine Konflikte |
|
||||||
|
| NF-OSS-04 | **DXF-Bibliothek:** Open-Source DXF-Parser/Writer verwenden (z. B. dxf-parser, dxf-writer in JS oder Rust) | DXF-Import/Export funktioniert mit Open-Source-Library |
|
||||||
|
| NF-OSS-05 | **DWG-Bibliothek (Optional):** Falls DWG-Import unterstützt wird, Open-Source-Library verwenden (z. B. libredwg, GNU GPL) | DWG-Import funktioniert mit Open-Source-Library; keine kommerziellen Bibliotheken |
|
||||||
|
|
||||||
|
### 4.5 Sicherheit
|
||||||
|
|
||||||
|
| ID | Anforderung | Akzeptanzkriterium |
|
||||||
|
|---|---|---|
|
||||||
|
| NF-SEC-01 | **Authentifizierung:** E-Mail/Passwort-basierte Authentifizierung (entschieden, siehe Q-02) | Login funktioniert; Passwörter gehasht (bcrypt/argon2); Sessions sicher (HTTP-only Cookies, CSRF-Schutz) |
|
||||||
| NF-SEC-02 | **Autorisierung:** Rollenbasierte Zugriffskontrolle für Projekte und Aktionen | Berechtigungen werden server-seitig enforced |
|
| 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-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 |
|
| NF-SEC-04 | **Input-Validierung:** Import-Dateien werden validiert (DXF, SVG, PDF) | Maliziöse Dateien werden abgewiesen; Schema-Validierung erfolgt vor Verarbeitung |
|
||||||
|
|
||||||
### 4.5 Deployment
|
### 4.6 Deployment
|
||||||
|
|
||||||
| ID | Anforderung | Akzeptanzkriterium |
|
| ID | Anforderung | Akzeptanzkriterium |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
@@ -189,7 +221,7 @@ Basierend auf Recherche (Stand 2025/2026):
|
|||||||
| NF-DEP-03 | **Umgebungs-Konfiguration:** Konfiguration über Umgebungsvariablen | Keine fest codierten Credentials; alle Secrets über Env-Variablen |
|
| 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 |
|
| NF-DEP-04 | **Datenbank:** Persistente Datenhaltung für Projekte, Nutzer, Bibliothek | Datenbank-Schema definiert; Migration-Skripte vorhanden |
|
||||||
|
|
||||||
### 4.6 Plattform & Browser-Kompatibilität
|
### 4.7 Plattform & Browser-Kompatibilität
|
||||||
|
|
||||||
| ID | Anforderung | Akzeptanzkriterium |
|
| ID | Anforderung | Akzeptanzkriterium |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
@@ -203,13 +235,15 @@ Basierend auf Recherche (Stand 2025/2026):
|
|||||||
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.
|
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.
|
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.
|
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.
|
4. **DXF als primäres Austauschformat:** DXF ist das wichtigste Import/Export-Format für CAD-Interoperabilität; DWG ist optional und von Open-Source-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.
|
5. **CRDT als Synchronisations-Standard:** CRDT (Yjs) 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.
|
6. **Canvas 2D als primärer Renderer:** Canvas 2D mit räumlichem Index (rbush) 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.
|
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.
|
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.
|
9. **Open Source:** Alle Komponenten sind Open Source; web-cad selbst wird als Open Source lizenziert (AGPL-3.0 oder MIT).
|
||||||
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.
|
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.
|
||||||
|
11. **E-Mail/Passwort-Auth:** E-Mail/Passwort ist die Authentifizierungsmethode; keine OAuth2/SSO in der initialen Version.
|
||||||
|
12. **Universelle Erweiterbarkeit:** Die Plugin-Architektur ist so konzipiert, dass die Software später in jede Richtung erweiterbar ist (neue Branchen, Formate, UI-Komponenten).
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -227,18 +261,29 @@ Basierend auf Recherche (Stand 2025/2026):
|
|||||||
10. **Keine erweiterten Druck-Layouts** – keine Plot-Styles, Linienstärken-Tabellen oder Print-Studio-Konfigurationen.
|
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.
|
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.
|
12. **Keine automatische Flächenberechnung / Mengenermittlung** – in der ersten Version nicht enthalten.
|
||||||
|
13. **Kein OAuth2/OIDC/SSO** – E-Mail/Passwort reicht; SSO kann später als Plugin nachgerüstet werden.
|
||||||
|
14. **Keine AutoCAD-Block-Editor-Äquivalenz** – Block-Definitionen können bearbeitet werden, aber kein vollständiger Block-Editor wie in Desktop-AutoCAD.
|
||||||
|
15. **Keine CAD-Standards-Verwaltung** – keine DWS-Dateien oder Standards-Checking wie in Desktop-AutoCAD.
|
||||||
|
16. **Keine 3D-Viewing** – anders als AutoCAD Web (das DWG-3D-Viewing bietet), ist web-cad rein 2D.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 7. Offene Fragen
|
## 7. Entschiedene Fragen (Resolved)
|
||||||
|
|
||||||
|
| # | Frage | Antwort | Entscheidung |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Q-01 | Soll die Anwendung Open Source oder Closed Source sein? Welche Lizenz? | Open Source | ✅ **Entschieden:** Software wird als Open Source lizenziert (AGPL-3.0 empfohlen für Copyleft-Schutz, MIT als Alternative). Nur komplett offene Komponenten werden verwendet. |
|
||||||
|
| Q-02 | Welche Authentifizierungsmethode wird bevorzugt? | E-Mail/Passwort | ✅ **Entschieden:** E-Mail/Passwort als Authentifizierung. Keine OAuth2/OIDC/SSO in der initialen Version. SSO kann später als Plugin nachgerüstet werden. |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 8. Offene Fragen
|
||||||
|
|
||||||
| # | Frage | Priorität | Auswirkung bei Nicht-Beantwortung |
|
| # | 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-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-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-05 | Soll DWG-Import unterstützt werden? Wenn ja, welche DWG-Versionen? | Mittel | Library-Auswahl (libredwg, GNU GPL) |
|
||||||
| Q-06 | Welche Stuhl-Typen / Bibliothekseinträge werden initial benötigt? | Mittel | Initial-Bibliothek, Bestuhlungs-Tool-Design |
|
| 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-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-08 | Ist eine Kommentar-/Annotations-Funktion für Kollaborateure gewünscht? | Niedrig | UI-Design, Kollaborations-Features |
|
||||||
@@ -246,12 +291,13 @@ Basierend auf Recherche (Stand 2025/2026):
|
|||||||
| Q-10 | Gibt es Anforderungen an Barrierefreiheit (WCAG 2.1 AA)? | Niedrig | UI-Design, Testing-Aufwand |
|
| 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-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 |
|
| Q-12 | Welche Maßeinheiten sollen unterstützt werden (metrisch, imperial, beides)? | Niedrig | Bemaßungs-Logic, UI |
|
||||||
|
| Q-13 | AGPL-3.0 oder MIT als Lizenz? | Niedrig | Lizenz-Datei, Copyleft vs. Permissive |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 8. Technologie-Recherche & Empfehlungen
|
## 9. Technologie-Recherche & Empfehlungen
|
||||||
|
|
||||||
### 8.1 Rendering-Technologie
|
### 9.1 Rendering-Technologie
|
||||||
|
|
||||||
**Recherche-Ergebnisse (Stand 2025/2026):**
|
**Recherche-Ergebnisse (Stand 2025/2026):**
|
||||||
|
|
||||||
@@ -266,18 +312,18 @@ Basierend auf Recherche (Stand 2025/2026):
|
|||||||
- Medium (@codetip.top): SVG vs Canvas vs WebGL for Diagram Viewers
|
- Medium (@codetip.top): SVG vs Canvas vs WebGL for Diagram Viewers
|
||||||
- PMC: Cross-Device Benchmark of Modern Web Animation Systems
|
- PMC: Cross-Device Benchmark of Modern Web Animation Systems
|
||||||
|
|
||||||
### 8.2 Multi-User Kollaboration
|
### 9.2 Multi-User Kollaboration
|
||||||
|
|
||||||
**Recherche-Ergebnisse (Stand 2025/2026):**
|
**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.
|
- **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.
|
- **Yjs (MIT):** Beliebteste CRDT-Bibliothek; unterstützt Text, Arrays, Maps, XML; WebSocket- und WebRTC-Bindings vorhanden.
|
||||||
- **Automerge:** Alternative CRDT-Bibliothek; ähnliche Features.
|
- **Automerge (MIT):** Alternative CRDT-Bibliothek; ähnliche Features.
|
||||||
- **OT (Operational Transformation):** Älterer Ansatz (Google Docs); komplexer korrekt zu implementieren; erfordert zentrale Server-Logik.
|
- **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).
|
- **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.
|
- **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.
|
**Empfehlung:** CRDT (Yjs, MIT) über WebSocket als primäre Kollaborations-Architektur.
|
||||||
|
|
||||||
**Quellen:**
|
**Quellen:**
|
||||||
- Medium (toonsquare.tech): Real-Time Collaborative Editor with CRDT and Durable Objects
|
- Medium (toonsquare.tech): Real-Time Collaborative Editor with CRDT and Durable Objects
|
||||||
@@ -285,28 +331,48 @@ Basierend auf Recherche (Stand 2025/2026):
|
|||||||
- Daydreamsoft: Real-Time Collaboration Using CRDTs and OT
|
- Daydreamsoft: Real-Time Collaboration Using CRDTs and OT
|
||||||
- Onshape: Cloud-native CAD Collaboration
|
- Onshape: Cloud-native CAD Collaboration
|
||||||
|
|
||||||
### 8.3 Architektur-Referenzen
|
### 9.3 Open-Source-Technologie-Stack (Empfehlung)
|
||||||
|
|
||||||
- **AutoCAD Web:** Browser-basierte CAD-Oberfläche mit Ribbon-UI, DWG-Viewing, Markup-Tools.
|
| Schicht | Empfehlung | Lizenz |
|
||||||
|
|---|---|---|
|
||||||
|
| **Frontend-Framework** | React (MIT) oder Vue.js (MIT) oder Svelte (MIT) | MIT |
|
||||||
|
| **Rendering** | Canvas 2D (native) + rbush (MIT) für räumliche Indexierung | MIT |
|
||||||
|
| **WebGL (optional)** | regl (MIT) oder Three.js (MIT) | MIT |
|
||||||
|
| **CRDT/Sync** | Yjs (MIT) + y-websocket (MIT) | MIT |
|
||||||
|
| **Backend-Framework** | Node.js (Express/Fastify) oder Python (FastAPI) | MIT |
|
||||||
|
| **WebSocket-Server** | ws (MIT) für Node.js oder websockets (BSD) für Python | MIT/BSD |
|
||||||
|
| **Datenbank** | PostgreSQL (PostgreSQL License, ähnlich BSD) oder SQLite (Public Domain) | Open Source |
|
||||||
|
| **DXF-Parser** | dxf-parser (MIT, JS) oder Rust-Port mit wasm-bindgen | MIT |
|
||||||
|
| **DWG-Parser (optional)** | libredwg (GPL) | GPL |
|
||||||
|
| **PDF-Generierung** | pdf-lib (MIT) oder jsPDF (MIT) | MIT |
|
||||||
|
| **SVG-Verarbeitung** | Native Browser-API oder svg.js (MIT) | MIT |
|
||||||
|
| **Auth** | bcrypt (Apache) oder argon2 (MIT/CDDL) | Open Source |
|
||||||
|
| **Containerisierung** | Docker (Apache 2.0) | Open Source |
|
||||||
|
| **Deployment** | Coolify (AGPL-3.0) | Open Source |
|
||||||
|
|
||||||
|
### 9.4 Architektur-Referenzen
|
||||||
|
|
||||||
|
- **AutoCAD Web:** Browser-basierte CAD-Oberfläche mit streamlined UI, Side-Panel, Command Line, Blocks/Layers-Tabs. Siehe Section 12 für detaillierte Feature-Referenz.
|
||||||
- **Onshape:** Cloud-native CAD mit echter Multi-User-Kollaboration; Single Source of Truth; keine Datei-Kopien.
|
- **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.
|
- **Figma:** Browser-basierte Design-Tool mit CRDT-basierter Kollaboration; inspirierend für UI und Sync-Architektur.
|
||||||
- **xDraftSight:** Cloud-basierter 2D-CAD; browser-basierte Architektur.
|
- **xDraftSight:** Cloud-basierter 2D-CAD; browser-basierte Architektur.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 9. Abhängigkeiten & Risiken
|
## 10. Abhängigkeiten & Risiken
|
||||||
|
|
||||||
| Risiko | Beschreibung | Mitigation |
|
| 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 |
|
| DXF/DWG-Kompatibilität | DXF-Parser muss verschiedene DXF-Versionen korrekt verarbeiten | Open-Source-Library (dxf-parser, MIT) 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 |
|
| Performance bei großen Zeichnungen | 50k+ Elemente können Browser überlasten | Canvas 2D mit räumlichem Index (rbush); 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 |
|
| 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 |
|
| Open-Source-DWG-Support | libredwg (GPL) hat eingeschränkte DWG-Version-Unterstützung | DWG als optional markieren; DXF als primäres Format |
|
||||||
| Browser-Speicherlimit | Sehr große Projekte können Browser-Speicherlimit überschreiten | Lazy-Loading; Kompression; IndexedDB für Persistenz |
|
| Browser-Speicherlimit | Sehr große Projekte können Browser-Speicherlimit überschreiten | Lazy-Loading; Kompression; IndexedDB für Persistenz |
|
||||||
|
| Plugin-System-Komplexität | Universelles Plugin-System kann Core-Stabilität gefährden | Plugin-Isolation (Sandbox/try-catch); Plugin-Manifest mit deklarativen Abhängigkeiten |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 10. Deployment-Erwartungen
|
## 11. Deployment-Erwartungen
|
||||||
|
|
||||||
| Aspekt | Erwartung |
|
| Aspekt | Erwartung |
|
||||||
|---|---|
|
|---|---|
|
||||||
@@ -321,22 +387,121 @@ Basierend auf Recherche (Stand 2025/2026):
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 11. Handoff
|
## 12. AutoCAD Web Feature-Referenz
|
||||||
|
|
||||||
|
Diese Sektion dokumentiert die recherchierten Features von AutoCAD Web App als Vergleichsbasis für web-cad.
|
||||||
|
|
||||||
|
### 12.1 CAD-Grundfunktionen in AutoCAD Web
|
||||||
|
|
||||||
|
Basierend auf Recherche (Scan2CAD Review, Autodesk Produktseiten, Softonic Review, Reddit/Diskussionen):
|
||||||
|
|
||||||
|
| Kategorie | Verfügbare Tools/Features in AutoCAD Web |
|
||||||
|
|---|---|
|
||||||
|
| **Zeichnen (Draw)** | Polyline (PLINE), Line, Circle, Arc, Rectangle, Polygon |
|
||||||
|
| **Bearbeiten (Modify)** | Move, Offset, Mirror, Rotate, Trim, Extend, Copy, Scale, Fillet |
|
||||||
|
| **Bemaßung (Dimensioning)** | DIM (Linear, Aligned, Radial), MLEADER (Multi-Leader) |
|
||||||
|
| **Annotation/Text** | MTEXT (Multiline Text), REVCLOUD (Revision Cloud), Text |
|
||||||
|
| **Raster & Fang (Snap)** | Object Snaps (Endpoint, Midpoint, Intersection), Snap Overrides, Polar Tracking, Ortho |
|
||||||
|
| **Auswahl (Selection)** | Einzelauswahl, Fenster-Auswahl, Kreuz-Auswahl |
|
||||||
|
| **Blocks** | Insert (aus Blocks-Tab), Create, Edit (via Command Line) |
|
||||||
|
| **Layers** | Layer-Verwaltung (On/Off, Lock/Unlock, Farbe, Linientyp) |
|
||||||
|
| **XREFs** | External References werden unterstützt (im selben Ordner wie Parent-File) |
|
||||||
|
| **Command Line** | Vollständige Command-Line-Eingabe wie Desktop-AutoCAD |
|
||||||
|
| **UI-Elemente** | Side Panel (Commands), Blocks Tab, Layers Tab, Command Line, Status Bar |
|
||||||
|
|
||||||
|
### 12.2 AutoCAD Web UI-Struktur
|
||||||
|
|
||||||
|
| UI-Element | Beschreibung |
|
||||||
|
|---|---|
|
||||||
|
| **Streamlined UI** | Reduzierte, fokussierte Oberfläche für 2D-Drafting – weniger überladen als Desktop |
|
||||||
|
| **Side Panel** | Seitliches Panel mit Befehls-Auswahl (Alternative zur Command Line) |
|
||||||
|
| **Command Line** | Befehlseingabe via Tastatur (wie Desktop-AutoCAD) |
|
||||||
|
| **Blocks Tab** | Tab im Side Panel zum Einfügen von Blöcken |
|
||||||
|
| **Layers Tab** | Tab im Side Panel für Layer-Verwaltung |
|
||||||
|
| **Canvas Area** | Haupt-Zeichenbereich mit Zoom/Pan |
|
||||||
|
| **Status Bar** | Status-Anzeige (Snap, Ortho, etc.) |
|
||||||
|
| **Ribbon** | Begrenzte Ribbon-Elemente (weniger als Desktop) |
|
||||||
|
|
||||||
|
### 12.3 AutoCAD Web Limitierungen (vs. Desktop AutoCAD)
|
||||||
|
|
||||||
|
| Limitierung | Beschreibung |
|
||||||
|
|---|---|
|
||||||
|
| **Kein Block Editor** | Kein vollständiger Block-Editor wie in Desktop; Block-Bearbeitung nur via Command Line |
|
||||||
|
| **Keine Tool Palettes** | Keine Tool-Paletten wie in Desktop-AutoCAD |
|
||||||
|
| **Kein LISP/AutoLISP** | Keine LISP- oder AutoLISP-Skripting-Unterstützung |
|
||||||
|
| **Keine Macros** | Keine Macro-Aufzeichnung oder -Wiedergabe |
|
||||||
|
| **Keine 3D-Bearbeitung** | Fokus auf 2D-Drafting; keine 3D-Modellierung oder -Bearbeitung |
|
||||||
|
| **Begrenzte 3D-Viewing** | DWG-3D-Viewing ist möglich, aber kein 3D-Editing |
|
||||||
|
| **Keine CAD Standards** | Keine DWS-Dateien oder Standards-Checking |
|
||||||
|
| **Keine erweiterten Plot-Konfigurationen** | Begrenzte Plot-/Druck-Optionen vs. Desktop |
|
||||||
|
| **Begrenzte Datei-Formate** | Primär DWG; DXF-Support begrenzt; keine direkten DGN/DWF-Exporte |
|
||||||
|
| **Keine Parametric Constraints** | Keine parametrischen Constraints (geometrische oder dimensionale) |
|
||||||
|
| **Keine Express Tools** | Keine Express-Tools-Sammlung wie in Desktop |
|
||||||
|
| **Begrenzte Anpassung** | Keine CUI-Anpassung (Custom User Interface) |
|
||||||
|
| **Freie Version limitiert** | Free-Version kann nur DWG-Dateien öffnen/anzeigen; Editieren erfordert Subscription |
|
||||||
|
| **Schwergewichtige Tasks** | Major drafting/editing-heavy lifting erfordert weiterhin Desktop |
|
||||||
|
|
||||||
|
### 12.4 AutoCAD Web Import/Export-Formate
|
||||||
|
|
||||||
|
| Format | Support | Bemerkung |
|
||||||
|
|---|---|---|
|
||||||
|
| **DWG** | ✅ Import & Export | Primäres Format; Vollunterstützung |
|
||||||
|
| **DXF** | ⚠️ Begrenzt | DXF-Support vorhanden aber weniger umfassend als Desktop |
|
||||||
|
| **PDF** | ✅ Export | PDF-Export unterstützt |
|
||||||
|
| **DGN** | ❌ Nicht unterstützt | Kein DGN-Import/Export in Web-Version |
|
||||||
|
| **DWF** | ❌ Begrenzt | Kein direkter DWF-Export in Web-Version |
|
||||||
|
| **SVG** | ❌ Nicht unterstützt | Kein SVG-Support in AutoCAD Web |
|
||||||
|
|
||||||
|
### 12.5 Vergleich: AutoCAD Web vs. web-cad (Target)
|
||||||
|
|
||||||
|
| Feature | AutoCAD Web | web-cad (Target) | Vorteil web-cad |
|
||||||
|
|---|---|---|---|
|
||||||
|
| **Rendering** | Proprietär (Autodesk) | Canvas 2D + rbush (Open Source) | Open Source, kontrollierbar |
|
||||||
|
| **Kollaboration** | Begrenzt (Autodesk Docs) | CRDT (Yjs) Echtzeit-Kollaboration | Echte Echtzeit-Kollaboration |
|
||||||
|
| **LISP/Scripting** | ❌ Nicht unterstützt | ❌ Non-Goal (initial) | – |
|
||||||
|
| **Plugin-System** | ❌ Nicht verfügbar | ✅ Vollständiges Plugin/Tool-System | Erweiterbar in jede Richtung |
|
||||||
|
| **SVG-Import** | ❌ Nicht unterstützt | ✅ Vollunterstützt | Bibliothek-Erweiterung |
|
||||||
|
| **DXF-Support** | ⚠️ Begrenzt | ✅ Vollunterstützt (Open Source) | Vollständiger DXF-Support |
|
||||||
|
| **DWG-Support** | ✅ Vollunterstützt | ⚠️ Optional (libredwg, GPL) | AutoCAD Web überlegen hier |
|
||||||
|
| **Bestuhlungs-Tools** | ❌ Nicht verfügbar | ✅ Reihen & Block-Bestuhlung | Branchen-spezifisch |
|
||||||
|
| **Lizenz** | Proprietär (Subscription) | Open Source (AGPL-3.0/MIT) | Frei nutzbar |
|
||||||
|
| **Deployment** | Autodesk Cloud | Docker/Coolify (self-hosted) | Self-hosted, volle Kontrolle |
|
||||||
|
| **UI** | Streamlined, Side Panel | AutoCAD Web-inspiriert + erweitert | Bekannte UI + mehr Features |
|
||||||
|
| **Mehrsprachigkeit** | ✅ Mehrere Sprachen | ⚠️ Deutsch first, i18n später | – |
|
||||||
|
|
||||||
|
### 12.6 Quellen AutoCAD Web Referenz
|
||||||
|
|
||||||
|
- Scan2CAD: AutoCAD Web App Review (https://www.scan2cad.com/blog/cad/autocad-web-app/)
|
||||||
|
- Autodesk: AutoCAD Web Features (https://www.autodesk.com/products/autocad-web/features)
|
||||||
|
- Autodesk: AutoCAD Web FAQ (https://help.autodesk.com/view/ACADWEB/ENU/)
|
||||||
|
- Interscale: What is AutoCAD Web App & How It Differs (https://interscale.com.au/blog/autocad-web-app/)
|
||||||
|
- Softonic: AutoCAD Web Download Review
|
||||||
|
- Reddit: r/AutoCAD Diskussionen über Web-Version Limitierungen
|
||||||
|
- Autodesk: AutoCAD Web Overview (https://www.autodesk.com/products/autocad-web/overview)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 13. Handoff
|
||||||
|
|
||||||
### Requirements Status
|
### Requirements Status
|
||||||
- **Draft erstellt:** Ja (2026-06-19)
|
- **Draft v2 erstellt:** Ja (2026-06-19)
|
||||||
|
- **Hoch-priorisierte Fragen geklärt:** Q-01 (Open Source) ✅, Q-02 (E-Mail/Passwort) ✅
|
||||||
- **Testbare Anforderungen:** Ja – alle funktionalen und nicht-funktionalen Anforderungen haben konkrete Akzeptanzkriterien
|
- **Testbare Anforderungen:** Ja – alle funktionalen und nicht-funktionalen Anforderungen haben konkrete Akzeptanzkriterien
|
||||||
- **Akzeptanzkriterien konkret:** Ja
|
- **Akzeptanzkriterien konkret:** Ja
|
||||||
- **Annahmen explizit:** Ja (10 Annahmen dokumentiert)
|
- **Annahmen explizit:** Ja (12 Annahmen dokumentiert)
|
||||||
- **Non-Goals dokumentiert:** Ja (12 Non-Goals)
|
- **Non-Goals dokumentiert:** Ja (16 Non-Goals, erweitert um AutoCAD-Web-Vergleich)
|
||||||
- **Offene Fragen:** 12 (davon 2 hoch, 3 mittel, 7 niedrig priorisiert)
|
- **Offene Fragen:** 10 (davon 0 hoch, 5 mittel, 5 niedrig priorisiert)
|
||||||
|
- **AutoCAD Web Referenz:** Vollständige Feature-Analyse inkl. Limitierungen und Vergleich
|
||||||
|
- **Open-Source-Stack:** Vollständiger Open-Source-Technologie-Stack mit Lizenzen dokumentiert
|
||||||
|
- **Plugin/Erweiterbarkeit:** 8 explizite Anforderungen für universelle Erweiterbarkeit
|
||||||
|
|
||||||
### Ready for Architecture
|
### Ready for Architecture
|
||||||
- **Bedingt bereit** – nach Beantwortung von Q-01 (Lizenz) und Q-02 (Authentifizierung) kann die Architektur-Phase starten
|
- **Ja** – die zwei hoch-priorisierten Fragen sind geklärt; Architektur-Phase kann starten
|
||||||
- Die technologischen Empfehlungen (Canvas 2D + CRDT/Yjs) sind bereits fundiert recherchiert und können als Architektur-Vorgaben dienen
|
- Verbleibende offene Fragen (Q-03 bis Q-13) sind mittel/niedrig priorisiert und können während oder nach der Architektur-Phase geklärt werden
|
||||||
|
- Technologie-Empfehlungen (Canvas 2D + Yjs + Open-Source-Stack) stehen als Architektur-Vorgaben bereit
|
||||||
|
|
||||||
### Empfohlene nächste Schritte
|
### Empfohlene nächste Schritte
|
||||||
1. User-Review der requirements.md
|
1. User-Review der aktualisierten requirements.md (v2)
|
||||||
2. Beantwortung der hoch-priorisierten offenen Fragen (Q-01, Q-02)
|
2. Optional: Beantwortung von Q-03 (Datenbank) und Q-13 (Lizenz: AGPL vs. MIT)
|
||||||
3. Freigabe für Architektur-Phase (Phase 2)
|
3. Freigabe für Architektur-Phase (Phase 2)
|
||||||
4. Delegation an Solution Architect
|
4. Delegation an Solution Architect mit Open-Source-Stack-Vorgaben
|
||||||
|
|||||||
@@ -0,0 +1,507 @@
|
|||||||
|
# Requirements Specification – web-cad
|
||||||
|
|
||||||
|
**Project:** web-cad – Web-basiertes 2D-CAD für Event-Bestuhlungspläne
|
||||||
|
**Phase:** 1 (Intake)
|
||||||
|
**Date:** 2026-06-19 (updated 2026-06-19)
|
||||||
|
**Status:** Draft v2 – 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 – in jede Richtung
|
||||||
|
- 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
|
||||||
|
- **ausschließlich Open-Source-Komponenten** verwendet und selbst als Open Source lizenziert wird
|
||||||
|
|
||||||
|
**Referenz-UI:** AutoCAD Web (siehe Section 12 – AutoCAD Web Feature-Referenz)
|
||||||
|
**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, Polylinie (PLINE) | Alle genannten Elemente können erstellt, ausgewählt, verschoben und gelöscht werden |
|
||||||
|
| F-CAD-02 | **Bearbeiten:** Verschieben (MOVE), Kopieren (COPY/CO), Rotieren (ROTATE/RO), Skalieren (SCALE/SC), Spiegeln (MIRROR/MI), Trimmen (TRIM), Verlängern (EXTEND), Abrunden (FILLET), Versatz (OFFSET) | Jede Operation verändert die Geometrie korrekt und kann rückgängig gemacht werden (Undo/Redo) |
|
||||||
|
| F-CAD-03 | **Bemaßung:** Lineare (DIM), 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, Polar Tracking | 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, "PL" für Polyline, "C" für Circle) | 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, Transparenz) | Eigenschaften können angezeigt und geändert werden; Änderungen sind sofort sichtbar |
|
||||||
|
| F-CAD-07 | **Auswahl-Methoden:** Einzelauswahl, Fenster-Auswahl, Kreuz-Auswahl, Selektion-Filter, Quick-Select (Eigenschafts-basierte Auswahl) | 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 |
|
||||||
|
| F-CAD-11 | **Annotation & Text:** Einzel- und Mehrzeilentext (TEXT/MTEXT), Revision Clouds (REVCLOUD), Leaders (MLEADER) | Text kann erstellt, formatiert und platziert werden; Leaders und Revisionswolken funktionieren |
|
||||||
|
| F-CAD-12 | **Muster-/Schraffurfunktion:** Flächen können mit Mustern/Schraffuren gefüllt werden (HATCH) | Muster können ausgewählt, skaliert und angewendet werden |
|
||||||
|
|
||||||
|
### 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, Transparenz | 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 |
|
||||||
|
| F-LAY-06 | **Ebenen-Filter:** Filter nach Eigenschaften (Farbe, Linientyp, Name) | Gefilterte Ebenen werden korrekt angezeigt; Filter können gespeichert werden |
|
||||||
|
|
||||||
|
### 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 |
|
||||||
|
| F-LIB-07 | **Block-Definition vs. Block-Referenz:** Blöcke werden als Definition gespeichert; Instanzen referenzieren die Definition (wie AutoCAD Blocks) | Änderung an der Block-Definition aktualisiert alle Instanzen; Instanzen können unabhängig transformiert werden |
|
||||||
|
|
||||||
|
### 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; Gesamtbestuhlung 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 (Open-Source-Library, z. B. libredwg) | 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, Blocks-Tab, Layers-Tab | 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, PL, H) | 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 |
|
||||||
|
| F-UI-07 | **Sidebar-Panels:** Tabs für Blocks, Layers, Eigenschaften (wie AutoCAD Web Side Panel) | Side-Panel-Tabs sind erreichbar und zeigen entsprechenden Inhalt |
|
||||||
|
| F-UI-08 | **Streamlined UI:** UI fokussiert auf 2D-Drafting – nicht überladen wie Desktop-CAD | Wesentliche Werkzeuge sichtbar; erweiterte Funktionen in Untermenüs oder ausblendbar |
|
||||||
|
|
||||||
|
### 3.9 Erweiterbarkeit & Plugin-System
|
||||||
|
|
||||||
|
| 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, UI) | 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 |
|
||||||
|
| F-EXT-04 | **Universelle Erweiterbarkeit:** Die Software soll später in jede Richtung erweiterbar sein – neue Branchen-Tools, neue Import/Export-Formate, neue UI-Komponenten | Architektur erlaubt Erweiterung in allen Bereichen ohne Core-Rewrite |
|
||||||
|
| F-EXT-05 | **Plugin-Isolation:** Plugins laufen isoliert und können den Core nicht crashen | Ein fehlerhaftes Plugin zeigt Fehlermeldung, aber die Anwendung stürzt nicht ab |
|
||||||
|
| F-EXT-06 | **Plugin-Registrierung:** Plugins können über ein Manifest registriert und zur Laufzeit geladen werden | Plugin-Manifest definiert Name, Version, Abhängigkeiten; Plugin wird zur Laufzeit geladen |
|
||||||
|
| F-EXT-07 | **Plugin-Lifecycle:** Plugins können aktiviert/deaktiviert werden ohne Neustart | Plugin kann in den Einstellungen aktiviert/deaktiviert werden; Änderung ist sofort wirksam |
|
||||||
|
| F-EXT-08 | **Plugin-UI-Integration:** Plugins können eigene UI-Elemente (Ribbon-Tabs, Panels, Dialoge) hinzufügen | Plugin-UI-Elemente erscheinen im Ribbon/Panel und sind funktional |
|
||||||
|
|
||||||
|
### 3.10 Authentifizierung & Benutzerverwaltung
|
||||||
|
|
||||||
|
| ID | Anforderung | Akzeptanzkriterium |
|
||||||
|
|---|---|---|
|
||||||
|
| F-AUTH-01 | **E-Mail/Passwort-Login:** Nutzer registrieren sich mit E-Mail und Passwort | Registrierung und Login funktionieren; Passwörter werden gehasht (bcrypt/argon2) gespeichert |
|
||||||
|
| F-AUTH-02 | **Passwort-Reset:** Passwort kann über E-Mail-Link zurückgesetzt werden | Reset-Link wird gesendet; Passwort kann nach Klick zurückgesetzt werden |
|
||||||
|
| F-AUTH-03 | **Session-Management:** Sichere Sessions mit HTTP-only Cookies | Sessions sind sicher; CSRF-Schutz aktiv; Session-Timeout konfigurierbar |
|
||||||
|
| F-AUTH-04 | **Benutzerverwaltung:** Admin kann Nutzer erstellen, bearbeiten, löschen, Rollen zuweisen | Alle Operationen funktionieren; Rollenänderungen sind sofort wirksam |
|
||||||
|
| F-AUTH-05 | **Gast-Zugang:** Admin kann temporäre Gast-Zugänge für spezifische Pläne erstellen | Gast-Link funktioniert; Gast hat nur Zugriff auf freigegebene Pläne; Link kann widerrufen 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 – Open Source)
|
||||||
|
|
||||||
|
Basierend auf Recherche (Stand 2025/2026). Alle Empfehlungen verwenden **ausschließlich Open-Source-Komponenten**.
|
||||||
|
|
||||||
|
| Technologie | Einsatzbereich | Begründung | Open-Source-Verfügbarkeit |
|
||||||
|
|---|---|---|---|
|
||||||
|
| **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 | Browser-Native API (keine Library nötig); rbush (R-Tree, MIT) für räumliche Indexierung |
|
||||||
|
| **WebGL (optional, Hybrid)** | Performance-Boost für sehr große Szenen (> 100k Elemente) | GPU-Beschleunigung; höhere Komplexität; erst bei Bedarf implementieren | regl (MIT) oder Three.js (MIT) als WebGL-Abstraktion |
|
||||||
|
| **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 | Rust + wasm-bindgen (MIT/Apache); dxf-parser in Rust portierbar |
|
||||||
|
|
||||||
|
**Empfehlung:** Canvas 2D mit räumlichem Index (rbush/R-Tree) und Layer-basiertem Rendering als primäre Technologie. WebGL (via regl oder Three.js) als optionale Hybrid-Schicht für extrem große Szenen reservieren.
|
||||||
|
|
||||||
|
### 4.3 Kollaborations-Architektur (Open Source)
|
||||||
|
|
||||||
|
| Aspekt | Empfehlung | Begründung | Open-Source-Verfügbarkeit |
|
||||||
|
|---|---|---|---|
|
||||||
|
| **Synchronisation** | CRDT (Yjs) über WebSocket | Konfliktfreie Synchronisation; bewährt in Figma und modernen kollaborativen Apps | Yjs (MIT), y-websocket (MIT) |
|
||||||
|
| **Transport** | WebSocket für Dokument-Daten; WebRTC optional für Cursor-Daten | WebSocket: zuverlässig, server-seitig kontrollierbar; WebRTC: niedrigere Latenz | ws (MIT), y-webrtc (MIT) |
|
||||||
|
| **Persistenz** | Server-seitige Persistenz der CRDT-Dokumente | Single Source of Truth; Versionshistorie; Offline-Sync bei Reconnect | y-leveldb (MIT), IndexedDB client-side |
|
||||||
|
| **Skalierung** | WebSocket-Server mit Pub/Sub pro Raum (Zeichnung) | Mehrere Zeichnungen parallel; isolierte Räume; horizontale Skalierung möglich | Redis Pub/Sub (BSD) für Multi-Server-Skalierung |
|
||||||
|
|
||||||
|
### 4.4 Open-Source-Lizenz & Komponenten
|
||||||
|
|
||||||
|
| ID | Anforderung | Akzeptanzkriterium |
|
||||||
|
|---|---|---|
|
||||||
|
| NF-OSS-01 | **Open-Source-Lizenz:** web-cad wird als Open Source veröffentlicht (Lizenz: AGPL-3.0 oder MIT, siehe Q-01) | Lizenz-Datei (LICENSE) im Repo; alle Quellen öffentlich |
|
||||||
|
| NF-OSS-02 | **Nur Open-Source-Komponenten:** Alle verwendeten Libraries, Tools und Frameworks müssen Open-Source-Lizenzen haben (MIT, Apache-2.0, BSD, ISC, LGPL, AGPL) | Keine proprietären Abhängigkeiten; Lizenz-Audit in CI/CD |
|
||||||
|
| NF-OSS-03 | **Lizenz-Kompatibilität:** Alle Abhängigkeiten sind untereinander lizenzkompatibel | Lizenz-Kompatibilitätsanalyse durchgeführt; keine Konflikte |
|
||||||
|
| NF-OSS-04 | **DXF-Bibliothek:** Open-Source DXF-Parser/Writer verwenden (z. B. dxf-parser, dxf-writer in JS oder Rust) | DXF-Import/Export funktioniert mit Open-Source-Library |
|
||||||
|
| NF-OSS-05 | **DWG-Bibliothek (Optional):** Falls DWG-Import unterstützt wird, Open-Source-Library verwenden (z. B. libredwg, GNU GPL) | DWG-Import funktioniert mit Open-Source-Library; keine kommerziellen Bibliotheken |
|
||||||
|
|
||||||
|
### 4.5 Sicherheit
|
||||||
|
|
||||||
|
| ID | Anforderung | Akzeptanzkriterium |
|
||||||
|
|---|---|---|
|
||||||
|
| NF-SEC-01 | **Authentifizierung:** E-Mail/Passwort-basierte Authentifizierung (entschieden, siehe Q-02) | Login funktioniert; Passwörter gehasht (bcrypt/argon2); Sessions 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) | Maliziöse Dateien werden abgewiesen; Schema-Validierung erfolgt vor Verarbeitung |
|
||||||
|
|
||||||
|
### 4.6 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.7 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 Open-Source-Library-Verfügbarkeit abhängig.
|
||||||
|
5. **CRDT als Synchronisations-Standard:** CRDT (Yjs) 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 (rbush) 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. **Open Source:** Alle Komponenten sind Open Source; web-cad selbst wird als Open Source lizenziert (AGPL-3.0 oder MIT).
|
||||||
|
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.
|
||||||
|
11. **E-Mail/Passwort-Auth:** E-Mail/Passwort ist die Authentifizierungsmethode; keine OAuth2/SSO in der initialen Version.
|
||||||
|
12. **Universelle Erweiterbarkeit:** Die Plugin-Architektur ist so konzipiert, dass die Software später in jede Richtung erweiterbar ist (neue Branchen, Formate, UI-Komponenten).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 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.
|
||||||
|
13. **Kein OAuth2/OIDC/SSO** – E-Mail/Passwort reicht; SSO kann später als Plugin nachgerüstet werden.
|
||||||
|
14. **Keine AutoCAD-Block-Editor-Äquivalenz** – Block-Definitionen können bearbeitet werden, aber kein vollständiger Block-Editor wie in Desktop-AutoCAD.
|
||||||
|
15. **Keine CAD-Standards-Verwaltung** – keine DWS-Dateien oder Standards-Checking wie in Desktop-AutoCAD.
|
||||||
|
16. **Keine 3D-Viewing** – anders als AutoCAD Web (das DWG-3D-Viewing bietet), ist web-cad rein 2D.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. Entschiedene Fragen (Resolved)
|
||||||
|
|
||||||
|
| # | Frage | Antwort | Entscheidung |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Q-01 | Soll die Anwendung Open Source oder Closed Source sein? Welche Lizenz? | Open Source | ✅ **Entschieden:** Software wird als Open Source lizenziert (AGPL-3.0 empfohlen für Copyleft-Schutz, MIT als Alternative). Nur komplett offene Komponenten werden verwendet. |
|
||||||
|
| Q-02 | Welche Authentifizierungsmethode wird bevorzugt? | E-Mail/Passwort | ✅ **Entschieden:** E-Mail/Passwort als Authentifizierung. Keine OAuth2/OIDC/SSO in der initialen Version. SSO kann später als Plugin nachgerüstet werden. |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 8. Offene Fragen
|
||||||
|
|
||||||
|
| # | Frage | Priorität | Auswirkung bei Nicht-Beantwortung |
|
||||||
|
|---|---|---|---|
|
||||||
|
| 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 (libredwg, GNU GPL) |
|
||||||
|
| 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 |
|
||||||
|
| Q-13 | AGPL-3.0 oder MIT als Lizenz? | Niedrig | Lizenz-Datei, Copyleft vs. Permissive |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 9. Technologie-Recherche & Empfehlungen
|
||||||
|
|
||||||
|
### 9.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
|
||||||
|
|
||||||
|
### 9.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 (MIT):** Beliebteste CRDT-Bibliothek; unterstützt Text, Arrays, Maps, XML; WebSocket- und WebRTC-Bindings vorhanden.
|
||||||
|
- **Automerge (MIT):** 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, MIT) ü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
|
||||||
|
|
||||||
|
### 9.3 Open-Source-Technologie-Stack (Empfehlung)
|
||||||
|
|
||||||
|
| Schicht | Empfehlung | Lizenz |
|
||||||
|
|---|---|---|
|
||||||
|
| **Frontend-Framework** | React (MIT) oder Vue.js (MIT) oder Svelte (MIT) | MIT |
|
||||||
|
| **Rendering** | Canvas 2D (native) + rbush (MIT) für räumliche Indexierung | MIT |
|
||||||
|
| **WebGL (optional)** | regl (MIT) oder Three.js (MIT) | MIT |
|
||||||
|
| **CRDT/Sync** | Yjs (MIT) + y-websocket (MIT) | MIT |
|
||||||
|
| **Backend-Framework** | Node.js (Express/Fastify) oder Python (FastAPI) | MIT |
|
||||||
|
| **WebSocket-Server** | ws (MIT) für Node.js oder websockets (BSD) für Python | MIT/BSD |
|
||||||
|
| **Datenbank** | PostgreSQL (PostgreSQL License, ähnlich BSD) oder SQLite (Public Domain) | Open Source |
|
||||||
|
| **DXF-Parser** | dxf-parser (MIT, JS) oder Rust-Port mit wasm-bindgen | MIT |
|
||||||
|
| **DWG-Parser (optional)** | libredwg (GPL) | GPL |
|
||||||
|
| **PDF-Generierung** | pdf-lib (MIT) oder jsPDF (MIT) | MIT |
|
||||||
|
| **SVG-Verarbeitung** | Native Browser-API oder svg.js (MIT) | MIT |
|
||||||
|
| **Auth** | bcrypt (Apache) oder argon2 (MIT/CDDL) | Open Source |
|
||||||
|
| **Containerisierung** | Docker (Apache 2.0) | Open Source |
|
||||||
|
| **Deployment** | Coolify (AGPL-3.0) | Open Source |
|
||||||
|
|
||||||
|
### 9.4 Architektur-Referenzen
|
||||||
|
|
||||||
|
- **AutoCAD Web:** Browser-basierte CAD-Oberfläche mit streamlined UI, Side-Panel, Command Line, Blocks/Layers-Tabs. Siehe Section 12 für detaillierte Feature-Referenz.
|
||||||
|
- **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.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 10. Abhängigkeiten & Risiken
|
||||||
|
|
||||||
|
| Risiko | Beschreibung | Mitigation |
|
||||||
|
|---|---|---|
|
||||||
|
| DXF/DWG-Kompatibilität | DXF-Parser muss verschiedene DXF-Versionen korrekt verarbeiten | Open-Source-Library (dxf-parser, MIT) verwenden; Tests mit realen DXF-Dateien |
|
||||||
|
| Performance bei großen Zeichnungen | 50k+ Elemente können Browser überlasten | Canvas 2D mit räumlichem Index (rbush); 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 |
|
||||||
|
| Open-Source-DWG-Support | libredwg (GPL) hat eingeschränkte DWG-Version-Unterstützung | DWG als optional markieren; DXF als primäres Format |
|
||||||
|
| Browser-Speicherlimit | Sehr große Projekte können Browser-Speicherlimit überschreiten | Lazy-Loading; Kompression; IndexedDB für Persistenz |
|
||||||
|
| Plugin-System-Komplexität | Universelles Plugin-System kann Core-Stabilität gefährden | Plugin-Isolation (Sandbox/try-catch); Plugin-Manifest mit deklarativen Abhängigkeiten |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 11. 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 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 12. AutoCAD Web Feature-Referenz
|
||||||
|
|
||||||
|
Diese Sektion dokumentiert die recherchierten Features von AutoCAD Web App als Vergleichsbasis für web-cad.
|
||||||
|
|
||||||
|
### 12.1 CAD-Grundfunktionen in AutoCAD Web
|
||||||
|
|
||||||
|
Basierend auf Recherche (Scan2CAD Review, Autodesk Produktseiten, Softonic Review, Reddit/Diskussionen):
|
||||||
|
|
||||||
|
| Kategorie | Verfügbare Tools/Features in AutoCAD Web |
|
||||||
|
|---|---|
|
||||||
|
| **Zeichnen (Draw)** | Polyline (PLINE), Line, Circle, Arc, Rectangle, Polygon |
|
||||||
|
| **Bearbeiten (Modify)** | Move, Offset, Mirror, Rotate, Trim, Extend, Copy, Scale, Fillet |
|
||||||
|
| **Bemaßung (Dimensioning)** | DIM (Linear, Aligned, Radial), MLEADER (Multi-Leader) |
|
||||||
|
| **Annotation/Text** | MTEXT (Multiline Text), REVCLOUD (Revision Cloud), Text |
|
||||||
|
| **Raster & Fang (Snap)** | Object Snaps (Endpoint, Midpoint, Intersection), Snap Overrides, Polar Tracking, Ortho |
|
||||||
|
| **Auswahl (Selection)** | Einzelauswahl, Fenster-Auswahl, Kreuz-Auswahl |
|
||||||
|
| **Blocks** | Insert (aus Blocks-Tab), Create, Edit (via Command Line) |
|
||||||
|
| **Layers** | Layer-Verwaltung (On/Off, Lock/Unlock, Farbe, Linientyp) |
|
||||||
|
| **XREFs** | External References werden unterstützt (im selben Ordner wie Parent-File) |
|
||||||
|
| **Command Line** | Vollständige Command-Line-Eingabe wie Desktop-AutoCAD |
|
||||||
|
| **UI-Elemente** | Side Panel (Commands), Blocks Tab, Layers Tab, Command Line, Status Bar |
|
||||||
|
|
||||||
|
### 12.2 AutoCAD Web UI-Struktur
|
||||||
|
|
||||||
|
| UI-Element | Beschreibung |
|
||||||
|
|---|---|
|
||||||
|
| **Streamlined UI** | Reduzierte, fokussierte Oberfläche für 2D-Drafting – weniger überladen als Desktop |
|
||||||
|
| **Side Panel** | Seitliches Panel mit Befehls-Auswahl (Alternative zur Command Line) |
|
||||||
|
| **Command Line** | Befehlseingabe via Tastatur (wie Desktop-AutoCAD) |
|
||||||
|
| **Blocks Tab** | Tab im Side Panel zum Einfügen von Blöcken |
|
||||||
|
| **Layers Tab** | Tab im Side Panel für Layer-Verwaltung |
|
||||||
|
| **Canvas Area** | Haupt-Zeichenbereich mit Zoom/Pan |
|
||||||
|
| **Status Bar** | Status-Anzeige (Snap, Ortho, etc.) |
|
||||||
|
| **Ribbon** | Begrenzte Ribbon-Elemente (weniger als Desktop) |
|
||||||
|
|
||||||
|
### 12.3 AutoCAD Web Limitierungen (vs. Desktop AutoCAD)
|
||||||
|
|
||||||
|
| Limitierung | Beschreibung |
|
||||||
|
|---|---|
|
||||||
|
| **Kein Block Editor** | Kein vollständiger Block-Editor wie in Desktop; Block-Bearbeitung nur via Command Line |
|
||||||
|
| **Keine Tool Palettes** | Keine Tool-Paletten wie in Desktop-AutoCAD |
|
||||||
|
| **Kein LISP/AutoLISP** | Keine LISP- oder AutoLISP-Skripting-Unterstützung |
|
||||||
|
| **Keine Macros** | Keine Macro-Aufzeichnung oder -Wiedergabe |
|
||||||
|
| **Keine 3D-Bearbeitung** | Fokus auf 2D-Drafting; keine 3D-Modellierung oder -Bearbeitung |
|
||||||
|
| **Begrenzte 3D-Viewing** | DWG-3D-Viewing ist möglich, aber kein 3D-Editing |
|
||||||
|
| **Keine CAD Standards** | Keine DWS-Dateien oder Standards-Checking |
|
||||||
|
| **Keine erweiterten Plot-Konfigurationen** | Begrenzte Plot-/Druck-Optionen vs. Desktop |
|
||||||
|
| **Begrenzte Datei-Formate** | Primär DWG; DXF-Support begrenzt; keine direkten DGN/DWF-Exporte |
|
||||||
|
| **Keine Parametric Constraints** | Keine parametrischen Constraints (geometrische oder dimensionale) |
|
||||||
|
| **Keine Express Tools** | Keine Express-Tools-Sammlung wie in Desktop |
|
||||||
|
| **Begrenzte Anpassung** | Keine CUI-Anpassung (Custom User Interface) |
|
||||||
|
| **Freie Version limitiert** | Free-Version kann nur DWG-Dateien öffnen/anzeigen; Editieren erfordert Subscription |
|
||||||
|
| **Schwergewichtige Tasks** | Major drafting/editing-heavy lifting erfordert weiterhin Desktop |
|
||||||
|
|
||||||
|
### 12.4 AutoCAD Web Import/Export-Formate
|
||||||
|
|
||||||
|
| Format | Support | Bemerkung |
|
||||||
|
|---|---|---|
|
||||||
|
| **DWG** | ✅ Import & Export | Primäres Format; Vollunterstützung |
|
||||||
|
| **DXF** | ⚠️ Begrenzt | DXF-Support vorhanden aber weniger umfassend als Desktop |
|
||||||
|
| **PDF** | ✅ Export | PDF-Export unterstützt |
|
||||||
|
| **DGN** | ❌ Nicht unterstützt | Kein DGN-Import/Export in Web-Version |
|
||||||
|
| **DWF** | ❌ Begrenzt | Kein direkter DWF-Export in Web-Version |
|
||||||
|
| **SVG** | ❌ Nicht unterstützt | Kein SVG-Support in AutoCAD Web |
|
||||||
|
|
||||||
|
### 12.5 Vergleich: AutoCAD Web vs. web-cad (Target)
|
||||||
|
|
||||||
|
| Feature | AutoCAD Web | web-cad (Target) | Vorteil web-cad |
|
||||||
|
|---|---|---|---|
|
||||||
|
| **Rendering** | Proprietär (Autodesk) | Canvas 2D + rbush (Open Source) | Open Source, kontrollierbar |
|
||||||
|
| **Kollaboration** | Begrenzt (Autodesk Docs) | CRDT (Yjs) Echtzeit-Kollaboration | Echte Echtzeit-Kollaboration |
|
||||||
|
| **LISP/Scripting** | ❌ Nicht unterstützt | ❌ Non-Goal (initial) | – |
|
||||||
|
| **Plugin-System** | ❌ Nicht verfügbar | ✅ Vollständiges Plugin/Tool-System | Erweiterbar in jede Richtung |
|
||||||
|
| **SVG-Import** | ❌ Nicht unterstützt | ✅ Vollunterstützt | Bibliothek-Erweiterung |
|
||||||
|
| **DXF-Support** | ⚠️ Begrenzt | ✅ Vollunterstützt (Open Source) | Vollständiger DXF-Support |
|
||||||
|
| **DWG-Support** | ✅ Vollunterstützt | ⚠️ Optional (libredwg, GPL) | AutoCAD Web überlegen hier |
|
||||||
|
| **Bestuhlungs-Tools** | ❌ Nicht verfügbar | ✅ Reihen & Block-Bestuhlung | Branchen-spezifisch |
|
||||||
|
| **Lizenz** | Proprietär (Subscription) | Open Source (AGPL-3.0/MIT) | Frei nutzbar |
|
||||||
|
| **Deployment** | Autodesk Cloud | Docker/Coolify (self-hosted) | Self-hosted, volle Kontrolle |
|
||||||
|
| **UI** | Streamlined, Side Panel | AutoCAD Web-inspiriert + erweitert | Bekannte UI + mehr Features |
|
||||||
|
| **Mehrsprachigkeit** | ✅ Mehrere Sprachen | ⚠️ Deutsch first, i18n später | – |
|
||||||
|
|
||||||
|
### 12.6 Quellen AutoCAD Web Referenz
|
||||||
|
|
||||||
|
- Scan2CAD: AutoCAD Web App Review (https://www.scan2cad.com/blog/cad/autocad-web-app/)
|
||||||
|
- Autodesk: AutoCAD Web Features (https://www.autodesk.com/products/autocad-web/features)
|
||||||
|
- Autodesk: AutoCAD Web FAQ (https://help.autodesk.com/view/ACADWEB/ENU/)
|
||||||
|
- Interscale: What is AutoCAD Web App & How It Differs (https://interscale.com.au/blog/autocad-web-app/)
|
||||||
|
- Softonic: AutoCAD Web Download Review
|
||||||
|
- Reddit: r/AutoCAD Diskussionen über Web-Version Limitierungen
|
||||||
|
- Autodesk: AutoCAD Web Overview (https://www.autodesk.com/products/autocad-web/overview)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 13. Handoff
|
||||||
|
|
||||||
|
### Requirements Status
|
||||||
|
- **Draft v2 erstellt:** Ja (2026-06-19)
|
||||||
|
- **Hoch-priorisierte Fragen geklärt:** Q-01 (Open Source) ✅, Q-02 (E-Mail/Passwort) ✅
|
||||||
|
- **Testbare Anforderungen:** Ja – alle funktionalen und nicht-funktionalen Anforderungen haben konkrete Akzeptanzkriterien
|
||||||
|
- **Akzeptanzkriterien konkret:** Ja
|
||||||
|
- **Annahmen explizit:** Ja (12 Annahmen dokumentiert)
|
||||||
|
- **Non-Goals dokumentiert:** Ja (16 Non-Goals, erweitert um AutoCAD-Web-Vergleich)
|
||||||
|
- **Offene Fragen:** 10 (davon 0 hoch, 5 mittel, 5 niedrig priorisiert)
|
||||||
|
- **AutoCAD Web Referenz:** Vollständige Feature-Analyse inkl. Limitierungen und Vergleich
|
||||||
|
- **Open-Source-Stack:** Vollständiger Open-Source-Technologie-Stack mit Lizenzen dokumentiert
|
||||||
|
- **Plugin/Erweiterbarkeit:** 8 explizite Anforderungen für universelle Erweiterbarkeit
|
||||||
|
|
||||||
|
### Ready for Architecture
|
||||||
|
- **Ja** – die zwei hoch-priorisierten Fragen sind geklärt; Architektur-Phase kann starten
|
||||||
|
- Verbleibende offene Fragen (Q-03 bis Q-13) sind mittel/niedrig priorisiert und können während oder nach der Architektur-Phase geklärt werden
|
||||||
|
- Technologie-Empfehlungen (Canvas 2D + Yjs + Open-Source-Stack) stehen als Architektur-Vorgaben bereit
|
||||||
|
|
||||||
|
### Empfohlene nächste Schritte
|
||||||
|
1. User-Review der aktualisierten requirements.md (v2)
|
||||||
|
2. Optional: Beantwortung von Q-03 (Datenbank) und Q-13 (Lizenz: AGPL vs. MIT)
|
||||||
|
3. Freigabe für Architektur-Phase (Phase 2)
|
||||||
|
4. Delegation an Solution Architect mit Open-Source-Stack-Vorgaben
|
||||||
Reference in New Issue
Block a user