Files
web-cad/specs/current/requirements.md
T

40 KiB
Raw Blame History

Requirements Specification web-cad

Project: web-cad Web-basiertes 2D-CAD für Event-Bestuhlungspläne
Phase: 1 (Intake)
Date: 2026-06-19 (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


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