- Add comprehensive tests for grid_detection_service.py (31 tests) - mm coordinate conversion tests - Deskew calculation tests - Column detection tests - Integration tests for vocabulary tables - Add OCR-Compare documentation (OCR-Compare.md) - mm coordinate system documentation - Deskew correction documentation - Worksheet Editor integration guide - API endpoints documentation - Add TypeScript tests for ocr-integration.ts - mm to pixel conversion tests - OCR export format tests - localStorage operations tests - Update SBOM to v1.5.0 - Add OCR Grid Detection System section - Document Fabric.js (MIT) for Worksheet Editor - Document NumPy and OpenCV usage Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1205 lines
49 KiB
Markdown
1205 lines
49 KiB
Markdown
# Software Bill of Materials (SBOM)
|
|
## BreakPilot PWA
|
|
|
|
**Version:** 1.5.0
|
|
**Letzte Aktualisierung:** 2026-02-08
|
|
**Verantwortlicher:** BreakPilot Development Team
|
|
|
|
---
|
|
|
|
## Übersicht
|
|
|
|
Diese SBOM dokumentiert alle Open-Source-Komponenten, die in BreakPilot verwendet werden, einschließlich ihrer Lizenzen und Nutzungsbedingungen für den kommerziellen Einsatz.
|
|
|
|
---
|
|
|
|
## 1. LibreChat (Chat-Interface)
|
|
|
|
| Eigenschaft | Wert |
|
|
|-------------|------|
|
|
| **Name** | LibreChat |
|
|
| **Version** | latest (dev) |
|
|
| **Repository** | https://github.com/danny-avila/LibreChat |
|
|
| **Lizenz** | MIT License |
|
|
| **Copyright** | Copyright (c) 2025 LibreChat |
|
|
| **Kommerzielle Nutzung** | Erlaubt |
|
|
| **Attribution erforderlich** | Ja (Lizenztext beibehalten) |
|
|
| **Verwendungszweck** | Chat/Prompt-Oberfläche für Nutzer |
|
|
|
|
### LibreChat Abhängigkeiten (Container)
|
|
|
|
| Komponente | Version | Lizenz | Kommerzielle Nutzung |
|
|
|------------|---------|--------|----------------------|
|
|
| MongoDB | latest | SSPL-1.0 | Ja (mit Einschränkungen*) |
|
|
| Meilisearch | v1.12.3 | MIT | Ja |
|
|
| PostgreSQL (pgvector) | 0.8.0-pg15 | PostgreSQL License | Ja |
|
|
| LibreChat RAG API | latest (dev-lite) | MIT | Ja |
|
|
|
|
> *MongoDB SSPL: Erlaubt kommerzielle Nutzung, solange MongoDB nicht als Service angeboten wird.
|
|
|
|
---
|
|
|
|
## 2. BreakPilot Backend (Python/FastAPI)
|
|
|
|
| Eigenschaft | Wert |
|
|
|-------------|------|
|
|
| **Framework** | FastAPI |
|
|
| **Lizenz** | MIT License |
|
|
| **Repository** | https://github.com/tiangolo/fastapi |
|
|
| **Kommerzielle Nutzung** | Erlaubt |
|
|
|
|
### Python Dependencies
|
|
|
|
| Paket | Version | Lizenz | Kommerzielle Nutzung |
|
|
|-------|---------|--------|----------------------|
|
|
| FastAPI | 0.123.9 | MIT | Ja |
|
|
| Uvicorn | 0.38.0 | BSD-3-Clause | Ja |
|
|
| Starlette | 0.49.3 | BSD-3-Clause | Ja |
|
|
| Pydantic | 2.12.5 | MIT | Ja |
|
|
| httpx | 0.28.1 | BSD-3-Clause | Ja |
|
|
| requests | 2.32.5 | Apache-2.0 | Ja |
|
|
| PyJWT | 2.10.1 | MIT | Ja |
|
|
| python-multipart | 0.0.20 | Apache-2.0 | Ja |
|
|
| Jinja2 | 3.1.6 | BSD-3-Clause | Ja |
|
|
| WeasyPrint | 66.0 | BSD-3-Clause | Ja |
|
|
| python-dateutil | 2.9.0 | Apache-2.0/BSD | Ja |
|
|
| python-docx | 1.2.0 | MIT | Ja |
|
|
| mammoth | 1.11.0 | BSD-2-Clause | Ja |
|
|
| Markdown | 3.9 | BSD-3-Clause | Ja |
|
|
| Pillow | 11.3.0 | HPND | Ja |
|
|
| opencv-python | 4.12.0 | Apache-2.0 | Ja |
|
|
| numpy | 2.0.2 | BSD-3-Clause | Ja |
|
|
| anthropic | 0.75.0 | MIT | Ja |
|
|
| email-validator | 2.3.0 | CC0-1.0 | Ja |
|
|
| PyJWKClient (PyJWT) | 2.10.1 | MIT | Ja | Keycloak JWKS Validierung |
|
|
| pytest | 8.4.2 | MIT | Ja |
|
|
| pytest-asyncio | 1.2.0 | Apache-2.0 | Ja |
|
|
| beautifulsoup4 | 4.12.3 | MIT | Ja |
|
|
|
|
---
|
|
|
|
## 3. Consent Service (Go)
|
|
|
|
| Eigenschaft | Wert |
|
|
|-------------|------|
|
|
| **Sprache** | Go 1.23+ |
|
|
| **Lizenz** | Proprietär (BreakPilot) |
|
|
|
|
### Go Dependencies (Direkt)
|
|
|
|
| Paket | Version | Lizenz | Kommerzielle Nutzung |
|
|
|-------|---------|--------|----------------------|
|
|
| gin-gonic/gin | 1.11.0 | MIT | Ja |
|
|
| golang-jwt/jwt/v5 | 5.3.0 | MIT | Ja |
|
|
| google/uuid | 1.6.0 | BSD-3-Clause | Ja |
|
|
| jackc/pgx/v5 | 5.7.6 | MIT | Ja |
|
|
| joho/godotenv | 1.5.1 | MIT | Ja |
|
|
| skip2/go-qrcode | 0.0.0 | MIT | Ja |
|
|
| golang.org/x/crypto | 0.40.0 | BSD-3-Clause | Ja |
|
|
|
|
### Go Dependencies (Indirekt/Transitiv)
|
|
|
|
| Paket | Version | Lizenz | Kommerzielle Nutzung |
|
|
|-------|---------|--------|----------------------|
|
|
| bytedance/sonic | 1.14.0 | Apache-2.0 | Ja |
|
|
| go-playground/validator/v10 | 10.27.0 | MIT | Ja |
|
|
| goccy/go-json | 0.10.2 | MIT | Ja |
|
|
| jackc/pgpassfile | 1.0.0 | MIT | Ja |
|
|
| jackc/pgservicefile | 1.0.0 | MIT | Ja |
|
|
| jackc/puddle/v2 | 2.2.2 | MIT | Ja |
|
|
| ugorji/go/codec | 1.3.0 | MIT | Ja |
|
|
| google.golang.org/protobuf | 1.36.9 | BSD-3-Clause | Ja |
|
|
|
|
---
|
|
|
|
## 4. Matrix Synapse (Schulkommunikation)
|
|
|
|
| Eigenschaft | Wert |
|
|
|-------------|------|
|
|
| **Name** | Matrix Synapse |
|
|
| **Version** | latest |
|
|
| **Repository** | https://github.com/element-hq/synapse |
|
|
| **Docker Image** | matrixdotorg/synapse:latest |
|
|
| **Lizenz** | AGPL-3.0 |
|
|
| **Copyright** | Copyright (c) 2014-2025 Element (formerly New Vector Ltd) |
|
|
| **Kommerzielle Nutzung** | Erlaubt (mit Bedingungen*) |
|
|
| **Attribution erforderlich** | Ja |
|
|
| **Verwendungszweck** | E2EE Messenger für Eltern-Lehrer-Kommunikation |
|
|
|
|
> *AGPL-3.0: Kommerzielle Nutzung erlaubt. Wenn Sie Synapse modifizieren und als Service anbieten, müssen die Änderungen unter AGPL veröffentlicht werden. Bei reiner Nutzung ohne Modifikation keine zusätzlichen Pflichten.
|
|
|
|
### Matrix Protocol
|
|
|
|
| Komponente | Lizenz | Beschreibung |
|
|
|------------|--------|--------------|
|
|
| Matrix Protocol | Apache-2.0 | Offenes Kommunikationsprotokoll |
|
|
| Megolm (E2EE) | Apache-2.0 | Ende-zu-Ende-Verschlüsselung |
|
|
|
|
### Matrix Service Dependencies (Go)
|
|
|
|
| Paket | Version | Lizenz | Kommerzielle Nutzung |
|
|
|-------|---------|--------|----------------------|
|
|
| google/uuid | 1.6.0 | BSD-3-Clause | Ja |
|
|
| net/http (stdlib) | Go 1.21+ | BSD-3-Clause | Ja |
|
|
| encoding/json (stdlib) | Go 1.21+ | BSD-3-Clause | Ja |
|
|
|
|
---
|
|
|
|
## 5. Jitsi Meet (Videokonferenzen)
|
|
|
|
| Eigenschaft | Wert |
|
|
|-------------|------|
|
|
| **Name** | Jitsi Meet |
|
|
| **Version** | stable-9823 |
|
|
| **Repository** | https://github.com/jitsi/jitsi-meet |
|
|
| **Docker Images** | jitsi/web, jitsi/prosody, jitsi/jicofo, jitsi/jvb |
|
|
| **Lizenz** | Apache-2.0 |
|
|
| **Copyright** | Copyright (c) 2013-2025 Atlassian Pty Ltd & Contributors |
|
|
| **Kommerzielle Nutzung** | Erlaubt |
|
|
| **Attribution erforderlich** | Ja (NOTICE-Datei beibehalten) |
|
|
| **Verwendungszweck** | Videokonferenzen für Schulungen, Elterngespräche |
|
|
|
|
### Jitsi Komponenten
|
|
|
|
| Komponente | Image | Lizenz | Beschreibung |
|
|
|------------|-------|--------|--------------|
|
|
| Jitsi Web | jitsi/web:stable-9823 | Apache-2.0 | Web-Frontend |
|
|
| Prosody | jitsi/prosody:stable-9823 | MIT | XMPP-Server |
|
|
| Jicofo | jitsi/jicofo:stable-9823 | Apache-2.0 | Conference Focus |
|
|
| Jitsi Videobridge | jitsi/jvb:stable-9823 | Apache-2.0 | WebRTC SFU |
|
|
|
|
### Jitsi Abhängigkeiten
|
|
|
|
| Komponente | Lizenz | Beschreibung |
|
|
|------------|--------|--------------|
|
|
| WebRTC | BSD-3-Clause | Echtzeit-Kommunikation |
|
|
| Olibs (Olm) | Apache-2.0 | Verschlüsselung |
|
|
| Ogg/Opus | BSD-3-Clause | Audio-Codec |
|
|
| VP8/VP9 | BSD-3-Clause | Video-Codec |
|
|
|
|
### Jitsi Service Dependencies (Go)
|
|
|
|
| Paket | Version | Lizenz | Kommerzielle Nutzung |
|
|
|-------|---------|--------|----------------------|
|
|
| google/uuid | 1.6.0 | BSD-3-Clause | Ja |
|
|
| crypto/hmac (stdlib) | Go 1.21+ | BSD-3-Clause | Ja |
|
|
| encoding/base64 (stdlib) | Go 1.21+ | BSD-3-Clause | Ja |
|
|
|
|
---
|
|
|
|
## 6. Datenbanken
|
|
|
|
| Datenbank | Version | Lizenz | Kommerzielle Nutzung | Verwendung |
|
|
|-----------|---------|--------|----------------------|------------|
|
|
| PostgreSQL | 16-alpine | PostgreSQL License | Ja | Hauptdatenbank |
|
|
| PostgreSQL (Synapse) | 16-alpine | PostgreSQL License | Ja | Matrix Datenbank |
|
|
| pgvector Extension | 0.8.0 | PostgreSQL License | Ja | LibreChat RAG |
|
|
| MongoDB | latest | SSPL-1.0 | Ja* | LibreChat |
|
|
| Meilisearch | 1.12.3 | MIT | Ja | LibreChat Suche |
|
|
|
|
---
|
|
|
|
## 7. Frontend (PWA)
|
|
|
|
| Komponente | Lizenz | Kommerzielle Nutzung |
|
|
|------------|--------|----------------------|
|
|
| HTML5/CSS3/JS | N/A | N/A |
|
|
| Service Worker API | N/A | N/A |
|
|
|
|
---
|
|
|
|
## 7a. Typografie & Schriftarten
|
|
|
|
Diese Sektion dokumentiert alle verwendeten Schriftarten für Website, Marketing und E-Mails, um sicherzustellen, dass nur lizenzfreie Schriften verwendet werden.
|
|
|
|
### Primäre Schriftart: Inter
|
|
|
|
| Eigenschaft | Wert |
|
|
|-------------|------|
|
|
| **Name** | Inter |
|
|
| **Designer** | Rasmus Andersson |
|
|
| **Version** | Variable Font |
|
|
| **Repository** | https://github.com/rsms/inter |
|
|
| **Lizenz** | SIL Open Font License 1.1 (OFL-1.1) |
|
|
| **Kommerzielle Nutzung** | Ja, uneingeschränkt |
|
|
| **Attribution erforderlich** | Nein |
|
|
| **Modifikation erlaubt** | Ja |
|
|
|
|
### Verwendete Font-Weights
|
|
|
|
| Weight | Name | Verwendung |
|
|
|--------|------|------------|
|
|
| 400 | Regular | Fließtext, Beschreibungen |
|
|
| 500 | Medium | Labels, Buttons |
|
|
| 600 | Semi-Bold | Überschriften H3-H6, Hervorhebungen |
|
|
| 700 | Bold | Überschriften H1-H2, CTAs |
|
|
|
|
### Einbindungsmethode
|
|
|
|
| Plattform | Methode | Datei |
|
|
|-----------|---------|-------|
|
|
| Website (Next.js) | Google Fonts CDN | `website/app/globals.css` |
|
|
| Admin Panel | Google Fonts CDN | `backend/frontend/static/css/studio.css` |
|
|
| Kundenportal | Google Fonts CDN | `backend/frontend/static/css/customer.css` |
|
|
| E-Mail Templates | System Font Fallback | Inline CSS |
|
|
|
|
### Google Fonts Import
|
|
|
|
```css
|
|
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');
|
|
```
|
|
|
|
### Font Stack (Fallback)
|
|
|
|
```css
|
|
font-family: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI', Roboto, sans-serif;
|
|
```
|
|
|
|
### System-Fallback-Schriften
|
|
|
|
| Betriebssystem | Fallback Font | Lizenz |
|
|
|----------------|---------------|--------|
|
|
| macOS/iOS | SF Pro Text | Apple Proprietary (vorinstalliert) |
|
|
| Windows | Segoe UI | Microsoft Proprietary (vorinstalliert) |
|
|
| Android | Roboto | Apache-2.0 (vorinstalliert) |
|
|
| Linux | Sans-Serif Default | Varies (system font) |
|
|
|
|
### E-Mail-sichere Schriftarten
|
|
|
|
Für E-Mail-Templates werden nur websichere Schriften verwendet:
|
|
|
|
| Font | Fallback für | Lizenz |
|
|
|------|--------------|--------|
|
|
| Arial | Sans-Serif Fließtext | Monotype (lizenzfrei für E-Mail) |
|
|
| Helvetica | macOS/iOS | Apple (vorinstalliert) |
|
|
| Georgia | Serif (optional) | Microsoft (lizenzfrei für E-Mail) |
|
|
|
|
### Icon-Fonts & Symbol-Sets
|
|
|
|
| Name | Quelle | Lizenz | Verwendung |
|
|
|------|--------|--------|------------|
|
|
| Heroicons | heroicons.com | MIT | Admin Panel SVG Icons |
|
|
| System Emojis | OS-nativ | N/A | Feature-Icons, Bundesland-Marker |
|
|
|
|
### Nicht verwendete / Ausgeschlossene Schriften
|
|
|
|
| Schriftart | Grund für Ausschluss |
|
|
|------------|----------------------|
|
|
| Adobe Fonts (Typekit) | Erfordert Adobe-Lizenz |
|
|
| Google Fonts (proprietäre) | Nur OFL/Apache-lizenzierte |
|
|
| MyFonts/Linotype | Kommerzielle Lizenz erforderlich |
|
|
| Custom Brand Fonts | Lizenzkosten, keine Notwendigkeit |
|
|
|
|
### Compliance-Checkliste (Typografie)
|
|
|
|
- [x] Inter ist OFL-1.1 lizenziert (vollständig frei für kommerzielle Nutzung)
|
|
- [x] Keine proprietären Schriften eingebunden
|
|
- [x] System-Fallbacks sind auf allen Plattformen lizenzfrei
|
|
- [x] E-Mail-Templates verwenden nur websichere Schriften
|
|
- [x] SVG-Icons (Heroicons) sind MIT-lizenziert
|
|
- [x] Keine Schrift-Dateien (.woff/.ttf) mit unklarer Lizenz im Repository
|
|
|
|
### Performance-Hinweis
|
|
|
|
Google Fonts werden mit `display=swap` geladen, um FOUT (Flash of Unstyled Text) zu minimieren. Für Produktion kann eine lokale Einbindung über `/public/fonts/` erwogen werden.
|
|
|
|
---
|
|
|
|
## Lizenz-Zusammenfassung
|
|
|
|
### Erlaubte Lizenzen für kommerzielle Nutzung:
|
|
|
|
| Lizenz | Bedingungen |
|
|
|--------|-------------|
|
|
| **MIT** | Copyright-Vermerk beibehalten |
|
|
| **BSD-2-Clause** | Copyright-Vermerk beibehalten |
|
|
| **BSD-3-Clause** | Copyright-Vermerk beibehalten, keine Endorsement-Nutzung |
|
|
| **Apache-2.0** | NOTICE-Datei beibehalten, Patent-Klausel beachten |
|
|
| **PostgreSQL License** | Copyright-Vermerk beibehalten |
|
|
| **SSPL-1.0** | Kein MongoDB-as-a-Service anbieten |
|
|
| **AGPL-3.0** | Bei Modifikation + Service: Quellcode veröffentlichen |
|
|
|
|
---
|
|
|
|
## Compliance-Checkliste
|
|
|
|
- [x] Alle Open-Source-Lizenzen erlauben kommerzielle Nutzung
|
|
- [x] MIT-Lizenztexte werden mit dem Produkt ausgeliefert
|
|
- [x] Copyright-Hinweise sind dokumentiert
|
|
- [x] SSPL-Einschränkungen für MongoDB werden eingehalten (kein DBaaS)
|
|
- [x] AGPL-3.0-Einschränkungen für Matrix Synapse beachtet (keine Modifikationen)
|
|
- [x] SBOM wird regelmäßig aktualisiert
|
|
|
|
---
|
|
|
|
## 8. LLM Platform (geplant)
|
|
|
|
| Eigenschaft | Wert |
|
|
|-------------|------|
|
|
| **Name** | BreakPilot LLM Platform |
|
|
| **Status** | In Planung |
|
|
| **Dokumentation** | [/docs/llm-platform/README.md](/docs/llm-platform/README.md) |
|
|
|
|
### LLM Inference Stack
|
|
|
|
| Komponente | Version | Lizenz | Kommerzielle Nutzung | Beschreibung |
|
|
|------------|---------|--------|----------------------|--------------|
|
|
| vLLM | latest | Apache-2.0 | Ja | OpenAI-kompatible Inference Engine |
|
|
| Ollama | latest | MIT | Ja | Lokale Entwicklung & Fallback |
|
|
|
|
### LLM Modelle
|
|
|
|
| Modell | Lizenz | Kommerzielle Nutzung | Einschränkungen |
|
|
|--------|--------|----------------------|-----------------|
|
|
| Llama 3.1 (8B/70B) | Llama 3.1 Community License | Ja | >700M MAU erfordert Meta-Lizenzvereinbarung |
|
|
| Mistral 7B | Apache-2.0 | Ja | Keine |
|
|
| Mixtral 8x7B | Apache-2.0 | Ja | Keine |
|
|
| Claude API | Proprietär (Anthropic) | Ja | Pay-per-use, API Terms |
|
|
|
|
> **Llama 3.1 License:** Die Llama 3.1 Community License erlaubt kommerzielle Nutzung. Bei mehr als 700 Millionen monatlich aktiven Nutzern ist eine separate Lizenzvereinbarung mit Meta erforderlich. Für BreakPilot (Schulkontext) ist dies nicht relevant.
|
|
|
|
### LLM Gateway Dependencies (Python)
|
|
|
|
| Paket | Version | Lizenz | Kommerzielle Nutzung |
|
|
|-------|---------|--------|----------------------|
|
|
| sse-starlette | 2.x | BSD-3-Clause | Ja |
|
|
| feedparser | 6.x | BSD-2-Clause | Ja |
|
|
| simhash | 2.x | MIT | Ja |
|
|
| tavily-python | latest | MIT | Ja |
|
|
|
|
### Hosting (Phase 1)
|
|
|
|
| Anbieter | Dienst | Datenschutz |
|
|
|----------|--------|-------------|
|
|
| vast.ai | GPU-Mietung | US-basiert, nur für Inference (keine PII) |
|
|
| Bestehende Infra | Gateway, DB | DE-hosted |
|
|
|
|
---
|
|
|
|
## 9. Education Search Service (edu-search-service)
|
|
|
|
| Eigenschaft | Wert |
|
|
|-------------|------|
|
|
| **Name** | BreakPilot Education Search Service |
|
|
| **Status** | In Entwicklung (Phase 0 PoC) |
|
|
| **Sprache** | Go 1.21+ |
|
|
| **Lizenz** | Proprietär (BreakPilot) |
|
|
| **Verwendungszweck** | EU-gehostete Bildungsquellen-Suche als Tavily-Alternative |
|
|
|
|
### Go Dependencies (Direkt)
|
|
|
|
| Paket | Version | Lizenz | Kommerzielle Nutzung | Beschreibung |
|
|
|-------|---------|--------|----------------------|--------------|
|
|
| gin-gonic/gin | 1.9.1 | MIT | Ja | HTTP Web Framework |
|
|
| opensearch-project/opensearch-go/v2 | 2.3.0 | Apache-2.0 | Ja | OpenSearch Client |
|
|
| google/uuid | 1.5.0 | BSD-3-Clause | Ja | UUID Generierung |
|
|
| gopkg.in/yaml.v3 | 3.0.1 | MIT | Ja | YAML Parser |
|
|
| PuerkitoBio/goquery | 1.8.1 | BSD-3-Clause | Ja | HTML Parsing/Scraping |
|
|
| ledongthuc/pdf | 0.0.0 | MIT | Ja | PDF Text Extraction |
|
|
| golang.org/x/net | 0.19.0 | BSD-3-Clause | Ja | Netzwerk-Utilities |
|
|
| golang.org/x/text | 0.14.0 | BSD-3-Clause | Ja | Text/Encoding |
|
|
|
|
### Infrastructure Dependencies
|
|
|
|
| Komponente | Version | Lizenz | Kommerzielle Nutzung | Beschreibung |
|
|
|------------|---------|--------|----------------------|--------------|
|
|
| OpenSearch | 2.x | Apache-2.0 | Ja | Such-Engine & Index |
|
|
|
|
> **Hinweis:** OpenSearch ist ein Fork von Elasticsearch unter Apache-2.0 Lizenz und damit uneingeschränkt kommerziell nutzbar.
|
|
|
|
---
|
|
|
|
## 10. Legal Crawler (Backend Module)
|
|
|
|
| Eigenschaft | Wert |
|
|
|-------------|------|
|
|
| **Name** | BreakPilot Legal Crawler |
|
|
| **Status** | Aktiv |
|
|
| **Sprache** | Python 3.10+ |
|
|
| **Lizenz** | Proprietär (BreakPilot) |
|
|
| **Verwendungszweck** | Crawlt Schulgesetze und rechtliche Inhalte aller 16 Bundesländer |
|
|
|
|
### Python Dependencies (Legal Crawler spezifisch)
|
|
|
|
| Paket | Version | Lizenz | Kommerzielle Nutzung | Beschreibung |
|
|
|-------|---------|--------|----------------------|--------------|
|
|
| beautifulsoup4 | 4.12.3 | MIT | Ja | HTML Parsing |
|
|
| httpx | 0.28.1 | BSD-3-Clause | Ja | Async HTTP Client |
|
|
|
|
### Gecrawlte Quellen (Legal Seeds)
|
|
|
|
| Bundesland | Quelle | Typ |
|
|
|------------|--------|-----|
|
|
| Baden-Württemberg | landesrecht-bw.de | Schulgesetz |
|
|
| Bayern | gesetze-bayern.de | BayEUG |
|
|
| Berlin | gesetze.berlin.de | Schulgesetz |
|
|
| Brandenburg | bravors.brandenburg.de | BbgSchulG |
|
|
| Bremen | transparenz.bremen.de | BremSchulG |
|
|
| Hamburg | landesrecht-hamburg.de | HmbSG |
|
|
| Hessen | rv.hessenrecht.hessen.de | HSchG |
|
|
| Mecklenburg-Vorpommern | landesrecht-mv.de | SchulG M-V |
|
|
| Niedersachsen | voris.niedersachsen.de | NSchG |
|
|
| Nordrhein-Westfalen | bass.schule.nrw | SchulG NRW |
|
|
| Rheinland-Pfalz | landesrecht.rlp.de | SchulG |
|
|
| Saarland | sl.juris.de | SchoG |
|
|
| Sachsen | revosax.sachsen.de | SächsSchulG |
|
|
| Sachsen-Anhalt | landesrecht.sachsen-anhalt.de | SchulG LSA |
|
|
| Schleswig-Holstein | gesetze-rechtsprechung.sh.juris.de | SchulG SH |
|
|
| Thüringen | landesrecht.thueringen.de | ThürSchulG |
|
|
|
|
> **Hinweis:** Alle gecrawlten Inhalte sind öffentlich zugängliche Rechtstexte. Der Crawler respektiert robots.txt und Rate-Limiting.
|
|
|
|
---
|
|
|
|
## 11. ERPNext (Enterprise Resource Planning)
|
|
|
|
| Eigenschaft | Wert |
|
|
|-------------|------|
|
|
| **Name** | ERPNext |
|
|
| **Version** | latest (v15+) |
|
|
| **Framework** | Frappe Framework |
|
|
| **Repository** | https://github.com/frappe/erpnext |
|
|
| **Docker Image** | frappe/erpnext:latest |
|
|
| **Lizenz** | GNU General Public License v3.0 (GPLv3) |
|
|
| **Copyright** | Copyright (c) 2013-2025 Frappe Technologies Pvt. Ltd. |
|
|
| **Kommerzielle Nutzung** | Erlaubt (mit Bedingungen*) |
|
|
| **Attribution erforderlich** | Ja |
|
|
| **Verwendungszweck** | Vollständiges ERP-System für Buchhaltung, HR, Billing & Projekte |
|
|
|
|
> *GPLv3: Kommerzielle Nutzung erlaubt. Wenn Sie ERPNext modifizieren und verteilen, müssen die Änderungen unter GPLv3 veröffentlicht werden. Bei reiner Nutzung ohne Modifikation keine zusätzlichen Pflichten.
|
|
|
|
### ERPNext Features
|
|
|
|
| Feature | Beschreibung | Verwendung in BreakPilot |
|
|
|---------|--------------|--------------------------|
|
|
| **Accounting** | Double-Entry Buchhaltung | Finanzmanagement für Schulen |
|
|
| **Invoicing** | Rechnungsstellung + Abos | Automatische Billing für Services |
|
|
| **HR & Payroll** | Personalverwaltung + Lohnabrechnung | Lehrerverträge (zukünftig) |
|
|
| **Project Management** | Projekte & Dienstleistungen | Bildungsprojekte verwalten |
|
|
| **Banking** | Payables, Receivables | Zahlungsverkehr |
|
|
| **Expenses** | Spesen & Reisekosten | Kostenverwaltung |
|
|
|
|
### Frappe Framework (ERPNext Basis)
|
|
|
|
| Eigenschaft | Wert |
|
|
|-------------|------|
|
|
| **Framework** | Frappe Framework |
|
|
| **Sprache** | Python 3.10+ |
|
|
| **Repository** | https://github.com/frappe/frappe |
|
|
| **Lizenz** | MIT License |
|
|
| **Kommerzielle Nutzung** | Ja |
|
|
|
|
### ERPNext Service Stack
|
|
|
|
| Service | Image/Version | Lizenz | Beschreibung |
|
|
|---------|--------------|--------|--------------|
|
|
| ERPNext Application | frappe/erpnext:latest | GPLv3 | Hauptanwendung |
|
|
| Frappe Framework | frappe/erpnext:latest | MIT | Python Framework |
|
|
| Nginx | (embedded) | BSD-2-Clause | Web Server |
|
|
| Node.js | (embedded) | MIT | WebSocket Server |
|
|
| MariaDB | 10.6 | GPL-2.0 | Datenbank |
|
|
| Redis | alpine | BSD-3-Clause | Cache & Queue |
|
|
|
|
### Python Dependencies (ERPNext/Frappe)
|
|
|
|
| Paket | Lizenz | Kommerzielle Nutzung | Beschreibung |
|
|
|-------|--------|----------------------|--------------|
|
|
| Werkzeug | BSD-3-Clause | Ja | WSGI Utilities |
|
|
| Jinja2 | BSD-3-Clause | Ja | Template Engine |
|
|
| SQLAlchemy | MIT | Ja | ORM |
|
|
| Babel | BSD-3-Clause | Ja | Internationalisierung |
|
|
| Pillow | HPND | Ja | Image Processing |
|
|
| PyMySQL | MIT | Ja | MySQL Client |
|
|
| gevent | MIT | Ja | Async Networking |
|
|
| gunicorn | MIT | Ja | WSGI Server |
|
|
|
|
### JavaScript Dependencies (ERPNext Frontend)
|
|
|
|
| Paket | Lizenz | Kommerzielle Nutzung | Beschreibung |
|
|
|-------|--------|----------------------|--------------|
|
|
| Vue.js | MIT | Ja | Frontend Framework |
|
|
| Chart.js | MIT | Ja | Visualisierung |
|
|
| Socket.IO | MIT | Ja | Real-time Communication |
|
|
| Frappe UI | MIT | Ja | UI Components |
|
|
|
|
### ERPNext Deployment
|
|
|
|
| Komponente | Container | Port | Beschreibung |
|
|
|------------|-----------|------|--------------|
|
|
| Frontend | breakpilot-pwa-erpnext-frontend | 8090 | Nginx Reverse Proxy |
|
|
| Backend | breakpilot-pwa-erpnext-backend | 8000 (intern) | Python/Frappe App |
|
|
| WebSocket | breakpilot-pwa-erpnext-websocket | 9000 (intern) | Real-time Updates |
|
|
| Scheduler | breakpilot-pwa-erpnext-scheduler | - | Background Jobs |
|
|
| Worker (Long) | breakpilot-pwa-erpnext-worker-long | - | Long-running Tasks |
|
|
| Worker (Short) | breakpilot-pwa-erpnext-worker-short | - | Short Tasks |
|
|
| MariaDB | breakpilot-pwa-erpnext-db | 3306 (intern) | Database |
|
|
| Redis Queue | breakpilot-pwa-erpnext-redis-queue | 6379 (intern) | Job Queue |
|
|
| Redis Cache | breakpilot-pwa-erpnext-redis-cache | 6379 (intern) | App Cache |
|
|
|
|
> **Lizenz-Compliance:** ERPNext steht unter GPLv3. BreakPilot nutzt ERPNext als eigenständigen Service ohne Modifikationen. Die GPLv3-Lizenz erlaubt dies ohne zusätzliche Verpflichtungen, solange ERPNext nicht modifiziert und redistribuiert wird.
|
|
|
|
---
|
|
|
|
## 12. Keycloak Integration (Authentifizierung)
|
|
|
|
| Eigenschaft | Wert |
|
|
|-------------|------|
|
|
| **Name** | Keycloak (Optional) |
|
|
| **Version** | 24.x+ |
|
|
| **Repository** | https://github.com/keycloak/keycloak |
|
|
| **Lizenz** | Apache-2.0 |
|
|
| **Copyright** | Copyright (c) Red Hat, Inc. |
|
|
| **Kommerzielle Nutzung** | Erlaubt |
|
|
| **Verwendungszweck** | Identity & Access Management (IAM) fuer Produktion |
|
|
| **Status** | Optional (Fallback: Lokales JWT) |
|
|
|
|
### Architektur: Hybrid-Authentifizierung
|
|
|
|
BreakPilot verwendet einen Hybrid-Ansatz:
|
|
|
|
| Modus | Beschreibung | Empfohlen fuer |
|
|
|-------|--------------|----------------|
|
|
| **Lokales JWT** | Eigene JWT-Tokens mit HS256 | Entwicklung, Tests |
|
|
| **Keycloak** | JWKS-validierte RS256-Tokens | Produktion |
|
|
|
|
### Keycloak Komponenten (wenn aktiviert)
|
|
|
|
| Komponente | Beschreibung | Lizenz |
|
|
|------------|--------------|--------|
|
|
| Keycloak Server | IAM Server | Apache-2.0 |
|
|
| JWKS Endpoint | Public Key Distribution | Apache-2.0 |
|
|
| Realm Configuration | Multi-Tenant Support | Apache-2.0 |
|
|
|
|
### Python Dependencies (Keycloak)
|
|
|
|
| Paket | Version | Lizenz | Kommerzielle Nutzung | Beschreibung |
|
|
|-------|---------|--------|----------------------|--------------|
|
|
| PyJWT | 2.10.1 | MIT | Ja | JWT Decoding & Validation |
|
|
| httpx | 0.28.1 | BSD-3-Clause | Ja | Async HTTP Client fuer JWKS |
|
|
| cryptography | latest | Apache-2.0/BSD | Ja | RSA Key Verification |
|
|
|
|
### Rollentrennung
|
|
|
|
| Schicht | Verantwortung | Implementierung |
|
|
|---------|---------------|-----------------|
|
|
| **Authentifizierung** | "Wer bist du?" | Keycloak (Produktion) oder lokales JWT |
|
|
| **Autorisierung** | "Was darfst du?" | Eigenes rbac.py (domaenenspezifisch) |
|
|
|
|
> **Compliance Note:** Keycloak steht unter Apache-2.0 Lizenz und ist vollstaendig fuer kommerzielle Nutzung freigegeben. Die Integration ist optional - ohne Keycloak-Konfiguration verwendet BreakPilot automatisch lokale JWT-Authentifizierung.
|
|
|
|
---
|
|
|
|
## 13. Tool-Integrationen (geplant)
|
|
|
|
| Tool | Anbieter | Lizenz/API | Kommerzielle Nutzung | Beschreibung |
|
|
|------|----------|------------|----------------------|--------------|
|
|
| Tavily Search | Tavily AI | Proprietär (API) | Ja (Pay-per-use) | Web Search für LLM Tool-Calling |
|
|
|
|
> **Datenschutz-Hinweis:** Alle Anfragen an externe Tools (Tavily) durchlaufen einen PII-Redaction-Filter. Keine personenbezogenen Daten werden an externe Dienste übermittelt.
|
|
|
|
---
|
|
|
|
## 13. Content Service (Educational Content Platform)
|
|
|
|
| Eigenschaft | Wert |
|
|
|-------------|------|
|
|
| **Name** | BreakPilot Content Service |
|
|
| **Version** | 1.0.0 |
|
|
| **Status** | Produktionsbereit |
|
|
| **Sprache** | Python 3.11 + Node.js 20 |
|
|
| **Lizenz** | Proprietär (BreakPilot) |
|
|
| **Verwendungszweck** | Educational Content Management mit Creative Commons Licensing |
|
|
|
|
### Content Service Stack
|
|
|
|
| Service | Port | Framework | Beschreibung |
|
|
|---------|------|-----------|--------------|
|
|
| Content Service API | 8002 | FastAPI | Content CRUD, Rating, Analytics |
|
|
| H5P Service | 8003 | Express | Interactive Content Editor & Player |
|
|
| AI Content Generator | 8004 | FastAPI | KI-gestützte H5P Content-Generierung |
|
|
| MinIO Storage | 9000-9001 | MinIO | S3-compatible Object Storage |
|
|
| Content Database | 5433 | PostgreSQL 16 | Metadata Storage |
|
|
|
|
### 13.1 Content Service API (FastAPI)
|
|
|
|
| Eigenschaft | Wert |
|
|
|-------------|------|
|
|
| **Framework** | FastAPI |
|
|
| **Base Image** | python:3.11-slim |
|
|
| **Lizenz** | MIT License |
|
|
| **Port** | 8002 |
|
|
|
|
#### Python Dependencies (Content Service)
|
|
|
|
| Paket | Version | Lizenz | Kommerzielle Nutzung | Beschreibung |
|
|
|-------|---------|--------|----------------------|--------------|
|
|
| fastapi | ^0.109.0 | MIT | Ja | Web Framework |
|
|
| uvicorn[standard] | ^0.27.0 | BSD-3-Clause | Ja | ASGI Server |
|
|
| sqlalchemy | ^2.0.25 | MIT | Ja | Database ORM |
|
|
| psycopg2-binary | ^2.9.9 | LGPL-3.0 | Ja | PostgreSQL Driver |
|
|
| pydantic | ^2.5.3 | MIT | Ja | Data Validation |
|
|
| minio | ^7.2.3 | Apache-2.0 | Ja | S3 Storage Client |
|
|
| python-multipart | ^0.0.6 | Apache-2.0 | Ja | Form Data Parsing |
|
|
| python-jose[cryptography] | ^3.3.0 | MIT | Ja | JWT Handling |
|
|
| passlib[bcrypt] | ^1.7.4 | BSD | Ja | Password Hashing |
|
|
| matrix-nio | ^0.24.0 | ISC | Ja | Matrix Client for Feed Publishing |
|
|
|
|
### 13.2 H5P Service (Node.js) - Simplified Implementation
|
|
|
|
| Eigenschaft | Wert |
|
|
|-------------|------|
|
|
| **Framework** | Express (Simplified) |
|
|
| **Base Image** | node:20-alpine |
|
|
| **Lizenz** | MIT (Proprietäre Editoren) |
|
|
| **Port** | 8003 (8080 internal) |
|
|
| **Status** | Produktionsbereit (8 Content-Typen) |
|
|
|
|
#### Node.js Dependencies (H5P Service)
|
|
|
|
| Paket | Version | Lizenz | Kommerzielle Nutzung | Beschreibung |
|
|
|-------|---------|--------|----------------------|--------------|
|
|
| express | ^4.18.2 | MIT | Ja | Web Framework |
|
|
| cors | ^2.8.5 | MIT | Ja | CORS Middleware |
|
|
|
|
> **Implementation Note:** Vereinfachter H5P Service ohne externe GPL-3.0 Libraries. Alle Editoren und Player sind proprietäre HTML/CSS/JS Implementierungen unter MIT-kompatibler Lizenz.
|
|
|
|
#### H5P Content Types (Proprietäre Implementation)
|
|
|
|
| Content Type | Status | Beschreibung |
|
|
|--------------|--------|--------------|
|
|
| Quiz (Question Set) | ✅ | Multiple-Choice Tests mit Feedback |
|
|
| Interactive Video | ✅ | Videos mit zeitbasierten Interaktionen (YouTube, Vimeo, MP4) |
|
|
| Course Presentation | ✅ | Multi-Slide Präsentationen mit Navigation |
|
|
| Flashcards | ✅ | Lernkarten zum Wiederholen |
|
|
| Timeline | ✅ | Chronologische Zeitstrahle |
|
|
| Drag and Drop | ✅ | Zuordnungsaufgaben mit HTML5 Drag API |
|
|
| Fill in the Blanks | ✅ | Lückentexte mit automatischer Korrektur |
|
|
| Memory Game | ✅ | Klassisches Memory-Spiel |
|
|
|
|
#### H5P Service Architecture
|
|
|
|
| Komponente | Technologie | Lizenz |
|
|
|------------|-------------|--------|
|
|
| Server | Express.js | MIT |
|
|
| Editors | HTML5/CSS3/Vanilla JS | Proprietär (BreakPilot) |
|
|
| Players | HTML5/CSS3/Vanilla JS | Proprietär (BreakPilot) |
|
|
| Storage | LocalStorage (Browser) | N/A |
|
|
| Video Integration | YouTube/Vimeo iFrame API | Proprietär (API Terms) |
|
|
|
|
> **Compliance Note:** Keine GPL-3.0 Dependencies. Vollständig kommerziell nutzbar ohne Copyleft-Verpflichtungen.
|
|
|
|
### 13.3 AI Content Generator (Python/FastAPI)
|
|
|
|
| Eigenschaft | Wert |
|
|
|-------------|------|
|
|
| **Framework** | FastAPI |
|
|
| **Base Image** | python:3.11-slim |
|
|
| **Lizenz** | MIT License (Dependencies) / Proprietär (Code) |
|
|
| **Port** | 8004 |
|
|
| **Status** | Produktionsbereit |
|
|
|
|
#### Hauptfunktion
|
|
Automatische Generierung aller 8 H5P Content-Typen aus hochgeladenen Lernmaterialien mittels Claude AI und YouTube-Integration.
|
|
|
|
#### Python Dependencies (AI Content Generator)
|
|
|
|
| Paket | Version | Lizenz | Kommerzielle Nutzung | Beschreibung |
|
|
|-------|---------|--------|----------------------|--------------|
|
|
| fastapi | ^0.115.6 | MIT | Ja | Web Framework |
|
|
| uvicorn | ^0.34.0 | BSD-3-Clause | Ja | ASGI Server |
|
|
| anthropic | ^0.42.0 | MIT | Ja | Claude API Client |
|
|
| youtube-transcript-api | ^0.6.3 | MIT | Ja | YouTube Transkript-Extraktion |
|
|
| PyPDF2 | ^3.0.1 | BSD-3-Clause | Ja | PDF Text-Extraktion |
|
|
| Pillow | ^11.0.0 | HPND | Ja | Image Processing |
|
|
| pytesseract | ^0.3.14 | Apache-2.0 | Ja | OCR Text Recognition |
|
|
| python-docx | ^1.1.2 | MIT | Ja | Word Document Processing |
|
|
| mammoth | ^1.8.0 | BSD-2-Clause | Ja | DOCX to Text Conversion |
|
|
| python-multipart | ^0.0.20 | Apache-2.0 | Ja | File Upload Handling |
|
|
|
|
#### System Dependencies
|
|
|
|
| Komponente | Lizenz | Kommerzielle Nutzung | Beschreibung |
|
|
|------------|--------|----------------------|--------------|
|
|
| Tesseract OCR | Apache-2.0 | Ja | Optical Character Recognition Engine |
|
|
| Poppler Utils | GPL-2.0 | Ja (nicht modifiziert) | PDF Rendering Library |
|
|
|
|
#### Externe APIs (Cloud Services)
|
|
|
|
| Service | Verwendung | Kosten | Lizenz/Terms |
|
|
|---------|------------|--------|--------------|
|
|
| Anthropic Claude API | Content-Generierung | Pay-per-use | [Anthropic Terms](https://www.anthropic.com/legal/commercial-terms) |
|
|
| YouTube Data API (optional) | Video-Suche | Kostenlos (Quota) | [YouTube API Terms](https://developers.google.com/youtube/terms) |
|
|
| YouTube Transcript API | Transkript-Abruf | Kostenlos | Public API |
|
|
|
|
#### Generierte Content-Typen
|
|
|
|
| Content Type | Input | AI-Technologie |
|
|
|--------------|-------|----------------|
|
|
| Quiz | Lernmaterialien | Claude (Sonnet 4.5) |
|
|
| Interactive Video | YouTube URL + Transkript | Claude + Transcript API |
|
|
| Course Presentation | Lernmaterialien | Claude (Sonnet 4.5) |
|
|
| Flashcards | Lernmaterialien | Claude (Sonnet 4.5) |
|
|
| Timeline | Lernmaterialien | Claude (Sonnet 4.5) |
|
|
| Drag and Drop | Lernmaterialien | Claude (Sonnet 4.5) |
|
|
| Fill in the Blanks | Lernmaterialien | Claude (Sonnet 4.5) |
|
|
| Memory Game | Lernmaterialien | Claude (Sonnet 4.5) |
|
|
|
|
#### Material-Analyse Capabilities
|
|
|
|
| Dateityp | Processing Library | Extraction Method |
|
|
|----------|-------------------|-------------------|
|
|
| PDF | PyPDF2 | Text Extraction |
|
|
| PNG/JPG | Pillow + Tesseract | OCR (Optical Character Recognition) |
|
|
| DOCX | python-docx / mammoth | Document Parsing |
|
|
| TXT | Python stdlib | Plain Text Reading |
|
|
|
|
> **Compliance Note:** Alle Dependencies sind MIT, BSD oder Apache-2.0 lizenziert. Tesseract und Poppler werden als unveränderter Binary verwendet (GPL-Compliance gegeben). Anthropic Claude API erfordert kommerzielle Lizenz.
|
|
|
|
> **Cost Note:** Anthropic Claude API ist kostenpflichtig (Pay-per-token). YouTube Data API hat kostenlose Quota-Limits.
|
|
|
|
### 13.4 MinIO S3 Storage
|
|
|
|
| Eigenschaft | Wert |
|
|
|-------------|------|
|
|
| **Image** | minio/minio:latest |
|
|
| **Ports** | 9000 (API), 9001 (Console) |
|
|
| **Lizenz** | AGPL-3.0 |
|
|
| **Verwendung** | Media File Storage (Videos, PDFs, Images) |
|
|
|
|
> **AGPL-3.0**: Kommerzielle Nutzung erlaubt. Wenn MinIO modifiziert und als Service angeboten wird, müssen Änderungen unter AGPL veröffentlicht werden.
|
|
|
|
### 13.5 Content Database (PostgreSQL)
|
|
|
|
| Eigenschaft | Wert |
|
|
|-------------|------|
|
|
| **Image** | postgres:16-alpine |
|
|
| **Port** | 5433 (external), 5432 (internal) |
|
|
| **Lizenz** | PostgreSQL License |
|
|
| **Database** | breakpilot_content |
|
|
|
|
### Content Platform Features
|
|
|
|
| Feature | Status | Beschreibung |
|
|
|---------|--------|--------------|
|
|
| **Content CRUD** | ✅ | Create, Read, Update, Delete für Educational Content |
|
|
| **Creative Commons Licensing** | ✅ | CC-BY, CC-BY-SA, CC-BY-NC, CC-BY-NC-SA, CC0 |
|
|
| **H5P Interactive Content** | ✅ | Self-hosted H5P Editor & Player |
|
|
| **Matrix Feed Integration** | ✅ | Automatisches Publishing zu Matrix Spaces |
|
|
| **Rating System** | ✅ | 5-Star Ratings mit Kommentaren |
|
|
| **Download Tracking** | ✅ | Analytics & Impact Scoring |
|
|
| **DSGVO Compliance** | ✅ | Data Minimization, IP Anonymization |
|
|
| **S3 File Storage** | ✅ | MinIO für Videos, PDFs, Bilder |
|
|
|
|
### Supported Content Types
|
|
|
|
| Content Type | Format | Beschreibung |
|
|
|--------------|--------|--------------|
|
|
| VIDEO | MP4, WebM | Video Content |
|
|
| PDF | PDF | PDF Documents |
|
|
| IMAGE_GALLERY | JPG, PNG, WebP | Image Collections |
|
|
| MARKDOWN | .md | Markdown Documents |
|
|
| AUDIO | MP3, OGG, WebM | Audio Files |
|
|
| H5P | .h5p | Interactive H5P Packages |
|
|
|
|
### Creative Commons Licenses
|
|
|
|
| License | Beschreibung | Commercial Use |
|
|
|---------|--------------|----------------|
|
|
| CC-BY-4.0 | Attribution | ✅ |
|
|
| CC-BY-SA-4.0 | Attribution + ShareAlike | ✅ (Recommended) |
|
|
| CC-BY-NC-4.0 | Attribution + NonCommercial | ⚠️ |
|
|
| CC-BY-NC-SA-4.0 | Attribution + NonCommercial + ShareAlike | ⚠️ |
|
|
| CC0-1.0 | Public Domain | ✅ |
|
|
|
|
### Content Categories
|
|
|
|
| Category | Beschreibung |
|
|
|----------|--------------|
|
|
| MOVEMENT | Bewegungspausen & Physical Activities |
|
|
| MATH | Mathematik-Übungen |
|
|
| STEAM | Science, Technology, Engineering, Arts, Math |
|
|
| LANGUAGE | Sprachlernen |
|
|
| ARTS | Kreative Künste |
|
|
| SOCIAL | Social-Emotional Learning |
|
|
| MINDFULNESS | Achtsamkeit & Meditation |
|
|
|
|
### Security & Privacy (Content Service)
|
|
|
|
| Feature | Status | Beschreibung |
|
|
|---------|--------|--------------|
|
|
| **Data Minimization** | ✅ | Nur notwendige Metadaten gespeichert |
|
|
| **IP Anonymization** | ✅ | IP-Adressen nach 7 Tagen anonymisiert |
|
|
| **User Data Export** | ✅ | DSGVO-konformer Datenexport |
|
|
| **Account Deletion** | ✅ | Vollständige Datenlöschung möglich |
|
|
| **No Student Data** | ✅ | Keine Schülerdaten erfasst |
|
|
| **JWT Authentication** | 🔜 | OAuth2 via consent-service (pending) |
|
|
| **HTTPS/TLS** | 🔜 | Production requirement |
|
|
|
|
### Docker Volumes
|
|
|
|
| Volume | Verwendung |
|
|
|--------|------------|
|
|
| minio_data | Object Storage für Media Files |
|
|
| content_db_data | PostgreSQL Database |
|
|
| h5p_content | H5P Content Files |
|
|
|
|
> **Lizenz-Compliance:** Die Content Service Plattform nutzt hauptsächlich MIT/Apache-2.0 lizenzierte Komponenten. H5P Libraries sind unter GPL-3.0, was kommerzielle Nutzung erlaubt.
|
|
|
|
---
|
|
|
|
## Aktualisierungsprotokoll
|
|
|
|
| Datum | Änderung | Verantwortlich |
|
|
|-------|----------|----------------|
|
|
| 2025-12-14 | Initiale SBOM erstellt | Claude Code |
|
|
| 2025-12-14 | LibreChat hinzugefügt | Claude Code |
|
|
| 2025-12-15 | Matrix Synapse hinzugefügt (AGPL-3.0) | Claude Code |
|
|
| 2025-12-15 | PostgreSQL für Synapse-DB hinzugefügt | Claude Code |
|
|
| 2025-12-15 | Jitsi Meet hinzugefügt (Apache-2.0) | Claude Code |
|
|
| 2025-12-15 | Go Dependencies aktualisiert (gin-gonic/gin, jackc/pgx) | Claude Code |
|
|
| 2025-12-15 | Python Dependencies aktualisiert (mammoth, python-docx für DSR) | Claude Code |
|
|
| 2025-12-15 | LLM Platform Komponenten hinzugefügt (vLLM, Ollama, Llama 3.1, Mistral) | Claude Code |
|
|
| 2025-12-15 | Tool-Integrationen Sektion hinzugefügt (Tavily) | Claude Code |
|
|
| 2025-12-16 | Education Search Service hinzugefügt (OpenSearch, goquery, pdf) | Claude Code |
|
|
| 2025-12-17 | Legal Crawler Modul hinzugefügt (beautifulsoup4) | Claude Code |
|
|
| 2025-12-17 | Alle 16 Bundesländer Schulgesetz-Quellen dokumentiert | Claude Code |
|
|
| 2025-12-29 | ERPNext hinzugefügt (GPLv3, Frappe Framework) | Claude Code |
|
|
| 2025-12-29 | MariaDB 10.6 für ERPNext hinzugefügt (GPL-2.0) | Claude Code |
|
|
| 2025-12-29 | Redis Cache & Queue für ERPNext hinzugefügt | Claude Code |
|
|
| 2025-12-30 | Content Service hinzugefügt (FastAPI, H5P, MinIO) | Claude Code |
|
|
| 2025-12-30 | H5P Service vereinfacht: Proprietäre Editoren/Players ohne GPL-3.0 | Claude Code |
|
|
| 2025-12-30 | Alle 8 H5P Content-Typen implementiert (Quiz, Video, Presentation, etc.) | Claude Code |
|
|
| 2025-12-30 | Creative Commons Licensing System dokumentiert | Claude Code |
|
|
| 2025-12-30 | Matrix Feed Integration für Content Publishing | Claude Code |
|
|
| 2025-12-30 | AI Content Generator Service hinzugefügt (Claude API, YouTube Transcript) | Claude Code |
|
|
| 2025-12-30 | Material-Analyse implementiert (PDF, DOCX, Images mit OCR) | Claude Code |
|
|
| 2025-12-30 | Automatische H5P-Generierung für alle 8 Content-Typen | Claude Code |
|
|
| 2026-01-09 | Keycloak-Integration (Hybrid-Auth) hinzugefügt | Claude Code |
|
|
| 2026-01-09 | PyJWKClient für JWKS-Validierung dokumentiert | Claude Code |
|
|
| 2026-01-09 | HashiCorp Vault für Secrets-Management hinzugefügt | Claude Code |
|
|
| 2026-01-09 | Sicherheitsaudit: Hardcodierte Secrets entfernt | Claude Code |
|
|
| 2026-01-09 | DevSecOps-Stack integriert (Gitleaks, Semgrep, Trivy, Syft/Grype) | Claude Code |
|
|
| 2026-01-09 | Pre-Commit Security Hooks aktualisiert (Bandit, Semgrep) | Claude Code |
|
|
| 2026-01-10 | Sektion 7a: Typografie & Schriftarten hinzugefügt | Claude Code |
|
|
| 2026-01-10 | Inter Font (OFL-1.1) als primäre Schrift dokumentiert | Claude Code |
|
|
| 2026-01-10 | E-Mail-sichere Schriften und Icon-Fonts dokumentiert | Claude Code |
|
|
| 2026-01-10 | Compliance-Checkliste für Typografie erstellt | Claude Code |
|
|
| 2026-02-08 | Sektion 15: Klausur-Service RAG System hinzugefügt | Claude Code |
|
|
| 2026-02-08 | Model Cards für BAAI/bge-m3 und bge-reranker-v2-m3 dokumentiert | Claude Code |
|
|
| 2026-02-08 | MS MARCO Modelle als nicht empfohlen markiert (Lizenzproblem) | Claude Code |
|
|
| 2026-02-08 | PyMuPDF aus Default-Build entfernt (AGPL-3.0) | Claude Code |
|
|
| 2026-02-08 | HyDE/Self-RAG Datenschutz-Warnungen dokumentiert | Claude Code |
|
|
| 2026-02-08 | RAG Feature-Status-Tabelle hinzugefügt (implementiert vs. aktiv vs. extern) | Claude Code |
|
|
|
|
---
|
|
|
|
## 13. HashiCorp Vault (Secrets Management)
|
|
|
|
### Vault Server
|
|
|
|
| Komponente | Version | Lizenz | Verwendung |
|
|
|------------|---------|--------|------------|
|
|
| **HashiCorp Vault** | 1.15 | [BSL 1.1](https://github.com/hashicorp/vault/blob/main/LICENSE) | Secrets-Management |
|
|
| **hvac** (Python Client) | 2.1.0 | [Apache-2.0](https://github.com/hvac/hvac/blob/main/LICENSE.txt) | Python Vault Client |
|
|
|
|
### Lizenz-Hinweis
|
|
|
|
HashiCorp Vault ist unter der **Business Source License 1.1 (BSL 1.1)** lizenziert:
|
|
- **Kostenlose Nutzung** für alle Zwecke (einschließlich kommerzielle) erlaubt
|
|
- **Einzige Einschränkung**: Vault darf nicht als Hosted/Managed Service angeboten werden
|
|
- Nach 4 Jahren wechselt die Lizenz automatisch zu Open Source (MPL 2.0)
|
|
|
|
Für BreakPilot ist die Nutzung vollständig konform, da Vault nur intern verwendet wird.
|
|
|
|
### Konfiguration
|
|
|
|
| Feature | Status | Beschreibung |
|
|
|---------|--------|--------------|
|
|
| **KV v2 Engine** | ✅ | Key-Value Secrets mit Versionierung |
|
|
| **AppRole Auth** | ✅ | Service-to-Service Authentication |
|
|
| **Token Auth** | ✅ | Development Mode |
|
|
| **Kubernetes Auth** | 🔜 | Für K8s Deployments |
|
|
| **TLS/mTLS** | 🔜 | Production Requirement |
|
|
|
|
### Gespeicherte Secrets
|
|
|
|
| Pfad | Typ | Beschreibung |
|
|
|------|-----|--------------|
|
|
| `secret/breakpilot/api_keys/anthropic` | API Key | Anthropic Claude API |
|
|
| `secret/breakpilot/api_keys/vast` | API Key | vast.ai GPU |
|
|
| `secret/breakpilot/api_keys/stripe` | API Key | Stripe Payments |
|
|
| `secret/breakpilot/database/postgres` | Credentials | PostgreSQL |
|
|
| `secret/breakpilot/auth/jwt` | Secret | JWT Signing Keys |
|
|
| `secret/breakpilot/auth/keycloak` | Secret | Keycloak Client |
|
|
| `secret/breakpilot/communication/matrix` | Token | Matrix Access Token |
|
|
| `secret/breakpilot/communication/jitsi` | Secret | Jitsi Auth Secrets |
|
|
| `secret/breakpilot/storage/minio` | Credentials | MinIO Object Storage |
|
|
|
|
### Docker Volumes
|
|
|
|
| Volume | Verwendung |
|
|
|--------|------------|
|
|
| vault_data | Vault Storage Backend |
|
|
| vault_logs | Audit Logs |
|
|
|
|
### Sicherheitsfeatures
|
|
|
|
| Feature | Status | Beschreibung |
|
|
|---------|--------|--------------|
|
|
| **Audit Logging** | ✅ | Alle Zugriffe werden geloggt |
|
|
| **Secret Rotation** | 🔜 | Automatische Key-Rotation |
|
|
| **Dynamic Secrets** | 🔜 | Kurzlebige Database Credentials |
|
|
| **Seal/Unseal** | ✅ | Verschlüsselung im Ruhezustand |
|
|
|
|
> **Wichtig**: In Produktion müssen alle Placeholder-Secrets durch echte Werte ersetzt werden!
|
|
> Secrets niemals in Git committen!
|
|
|
|
---
|
|
|
|
## 14. DevSecOps Tools (Security Scanning)
|
|
|
|
BreakPilot verwendet einen umfassenden DevSecOps-Stack fuer kontinuierliche Security-Pruefungen.
|
|
|
|
### Secrets Detection
|
|
|
|
| Tool | Version | Lizenz | Verwendung |
|
|
|------|---------|--------|------------|
|
|
| **Gitleaks** | 8.18.x | [MIT](https://github.com/gitleaks/gitleaks/blob/master/LICENSE) | Pre-commit, CI/CD Secrets Detection |
|
|
| **detect-secrets** | 1.4.x | [Apache-2.0](https://github.com/Yelp/detect-secrets/blob/master/LICENSE) | Baseline Secrets Detection |
|
|
|
|
### Static Application Security Testing (SAST)
|
|
|
|
| Tool | Version | Lizenz | Verwendung |
|
|
|------|---------|--------|------------|
|
|
| **Semgrep** | 1.52.x | [LGPL-2.1](https://github.com/returntocorp/semgrep/blob/develop/LICENSE) | Multi-Language SAST |
|
|
| **Bandit** | 1.7.x | [Apache-2.0](https://github.com/PyCQA/bandit/blob/main/LICENSE) | Python Security Linting |
|
|
|
|
### Software Composition Analysis (SCA)
|
|
|
|
| Tool | Version | Lizenz | Verwendung |
|
|
|------|---------|--------|------------|
|
|
| **Trivy** | 0.48.x | [Apache-2.0](https://github.com/aquasecurity/trivy/blob/main/LICENSE) | Vulnerability & Misconfiguration Scanning |
|
|
| **Grype** | 0.74.x | [Apache-2.0](https://github.com/anchore/grype/blob/main/LICENSE) | Vulnerability Scanner |
|
|
| **OWASP Dependency-Check** | 9.x | [Apache-2.0](https://github.com/jeremylong/DependencyCheck/blob/main/LICENSE.txt) | CVE/NVD Dependency Check |
|
|
|
|
### SBOM Generation
|
|
|
|
| Tool | Version | Lizenz | Verwendung |
|
|
|------|---------|--------|------------|
|
|
| **Syft** | 0.100.x | [Apache-2.0](https://github.com/anchore/syft/blob/main/LICENSE) | SBOM Generation (CycloneDX, SPDX) |
|
|
|
|
### Dynamic Application Security Testing (DAST)
|
|
|
|
| Tool | Version | Lizenz | Verwendung |
|
|
|------|---------|--------|------------|
|
|
| **OWASP ZAP** | 2.14.x | [Apache-2.0](https://github.com/zaproxy/zaproxy/blob/main/LICENSE) | Web Application Scanner |
|
|
|
|
### Lizenz-Compliance
|
|
|
|
Alle DevSecOps-Tools sind unter permissiven Open-Source-Lizenzen veroeffentlicht:
|
|
|
|
| Lizenz | Tools | Verpflichtungen |
|
|
|--------|-------|-----------------|
|
|
| **MIT** | Gitleaks | Copyright-Hinweis beibehalten |
|
|
| **Apache-2.0** | Trivy, Grype, Syft, Bandit, ZAP, Dependency-Check, detect-secrets | Lizenz/Copyright beibehalten, Aenderungen dokumentieren |
|
|
| **LGPL-2.1** | Semgrep | Bei Aenderungen am Semgrep-Code: Source bereitstellen |
|
|
|
|
### Konfigurationsdateien
|
|
|
|
| Datei | Beschreibung |
|
|
|-------|--------------|
|
|
| `.gitleaks.toml` | Gitleaks Regeln & Allowlists |
|
|
| `.semgrep.yml` | Custom SAST Rules |
|
|
| `.trivy.yaml` | Trivy Scan-Konfiguration |
|
|
| `.trivyignore` | Akzeptierte Vulnerabilities |
|
|
| `.pre-commit-config.yaml` | Pre-Commit Hook Definitionen |
|
|
| `scripts/security-scan.sh` | Manuelles Security-Scan Script |
|
|
|
|
### Dokumentation
|
|
|
|
Siehe: [docs/architecture/devsecops.md](docs/architecture/devsecops.md)
|
|
|
|
---
|
|
|
|
## 15. Klausur-Service RAG System (Educational Document Retrieval)
|
|
|
|
| Eigenschaft | Wert |
|
|
|-------------|------|
|
|
| **Name** | BreakPilot Klausur-Service RAG |
|
|
| **Version** | 2.1.0 |
|
|
| **Status** | Produktionsbereit |
|
|
| **Sprache** | Python 3.11+ |
|
|
| **Lizenz** | Proprietär (BreakPilot) |
|
|
| **Verwendungszweck** | RAG für Abitur-Erwartungshorizonte (Niedersachsen) |
|
|
|
|
### 15.1 ML Models (Model Cards)
|
|
|
|
> **Wichtig:** Alle Standard-ML-Modelle sind für kommerzielle Nutzung freigegeben.
|
|
|
|
#### Embedding Model
|
|
|
|
| Eigenschaft | Wert |
|
|
|-------------|------|
|
|
| **Name** | BAAI/bge-m3 |
|
|
| **Repository** | https://huggingface.co/BAAI/bge-m3 |
|
|
| **Lizenz** | MIT |
|
|
| **Dimensionen** | 1024 |
|
|
| **Max Token** | 8192 |
|
|
| **Sprachen** | Multilingual (inkl. Deutsch) |
|
|
| **Kommerzielle Nutzung** | ✅ Ja |
|
|
| **Status** | Default (aktiv) |
|
|
|
|
#### Re-Ranking Model
|
|
|
|
| Eigenschaft | Wert |
|
|
|-------------|------|
|
|
| **Name** | BAAI/bge-reranker-v2-m3 |
|
|
| **Repository** | https://huggingface.co/BAAI/bge-reranker-v2-m3 |
|
|
| **Lizenz** | Apache-2.0 |
|
|
| **Kommerzielle Nutzung** | ✅ Ja |
|
|
| **Status** | Default (aktiv) |
|
|
|
|
#### Alternatve Embedding Models (Optional)
|
|
|
|
| Modell | Lizenz | Dimensionen | Empfehlung |
|
|
|--------|--------|-------------|------------|
|
|
| all-MiniLM-L6-v2 | Apache-2.0 | 384 | ✅ Fallback/Development |
|
|
| deepset/mxbai-embed-de-large-v1 | Apache-2.0 | 1024 | ✅ German-only deployments |
|
|
| jinaai/jina-embeddings-v2-base-de | Apache-2.0 | 768 | ✅ German/English |
|
|
| intfloat/multilingual-e5-large | MIT | 1024 | ✅ Multilingual |
|
|
|
|
#### Nicht empfohlene Modelle (Lizenzprobleme)
|
|
|
|
| Modell | Lizenz | Problem |
|
|
|--------|--------|---------|
|
|
| cross-encoder/ms-marco-* | Apache-2.0 | ⚠️ MS MARCO Trainingsdaten sind nur für nicht-kommerzielle Nutzung freigegeben |
|
|
| PyMuPDF/fitz | AGPL-3.0 | ⚠️ AGPL erfordert Open-Source-Veröffentlichung oder kommerzielle Lizenz |
|
|
|
|
### 15.2 Python Dependencies (Klausur-Service)
|
|
|
|
| Paket | Version | Lizenz | Kommerzielle Nutzung | Beschreibung |
|
|
|-------|---------|--------|----------------------|--------------|
|
|
| sentence-transformers | >=2.2.0 | Apache-2.0 | Ja | Embedding & Re-Ranking |
|
|
| torch | >=2.0.0 | BSD-3-Clause | Ja | ML Framework (CPU-only) |
|
|
| pypdf | >=4.0.0 | BSD-3-Clause | Ja | PDF-Extraktion (Default) |
|
|
| unstructured | >=0.12.0 | Apache-2.0 | Ja | PDF-Extraktion (Tabellen) |
|
|
| qdrant-client | >=1.7.0 | Apache-2.0 | Ja | Vector Database Client |
|
|
| httpx | >=0.26.0 | BSD-3-Clause | Ja | Async HTTP Client |
|
|
| FastAPI | >=0.109.0 | MIT | Ja | Web Framework |
|
|
| cryptography | >=41.0.0 | Apache-2.0/BSD | Ja | AES-256-GCM Verschlüsselung |
|
|
|
|
> **Hinweis:** PyMuPDF ist NICHT im Default-Build enthalten (AGPL-3.0). Falls benötigt, separat installieren und AGPL-Compliance sicherstellen.
|
|
|
|
### 15.3 RAG Feature Status
|
|
|
|
| Feature | Implementiert | Standardmäßig Aktiv | Sendet Daten extern |
|
|
|---------|--------------|---------------------|---------------------|
|
|
| **Local Embeddings** | ✅ | ✅ | ❌ Nein |
|
|
| **Local Re-Ranking** | ✅ | ✅ | ❌ Nein |
|
|
| **Semantic Chunking** | ✅ | ✅ | ❌ Nein |
|
|
| **Hybrid Search (BM25)** | ✅ | ✅ | ❌ Nein |
|
|
| **HyDE** | ✅ | ❌ | ⚠️ Ja (LLM APIs) |
|
|
| **Self-RAG** | ✅ | ❌ | ⚠️ Ja (OpenAI API) |
|
|
| **RAG Evaluation** | ✅ | ⚠️ Teilweise | ⚠️ Optional (LLM) |
|
|
|
|
### 15.4 Datenschutz-Hinweise (Privacy Notes)
|
|
|
|
| Kategorie | Status | Beschreibung |
|
|
|-----------|--------|--------------|
|
|
| **Embeddings** | ✅ Lokal | Keine Daten werden an externe Server gesendet |
|
|
| **Re-Ranking** | ✅ Lokal | Cross-Encoder läuft komplett lokal |
|
|
| **PDF-Extraktion** | ✅ Lokal | pypdf/unstructured laufen lokal |
|
|
| **Hybrid Search** | ✅ Lokal | BM25 läuft komplett lokal |
|
|
| **HyDE** | ⚠️ Opt-in | Bei Aktivierung: Queries an LLM APIs (OpenAI/Anthropic) |
|
|
| **Self-RAG** | ⚠️ Opt-in | Bei Aktivierung: Dokumente + Queries an OpenAI |
|
|
| **Indexierte Daten** | ✅ | Nur Erwartungshorizonte, keine Schülerdaten |
|
|
|
|
### 15.5 Konfiguration (Environment Variables)
|
|
|
|
| Variable | Default | Beschreibung |
|
|
|----------|---------|--------------|
|
|
| `EMBEDDING_BACKEND` | `local` | Embedding-Backend (local/openai) |
|
|
| `LOCAL_EMBEDDING_MODEL` | `BAAI/bge-m3` | Lokales Embedding-Modell |
|
|
| `RERANKER_BACKEND` | `local` | Re-Ranking Backend (local/cohere) |
|
|
| `LOCAL_RERANKER_MODEL` | `BAAI/bge-reranker-v2-m3` | Lokales Re-Ranking Modell |
|
|
| `PDF_EXTRACTION_BACKEND` | `auto` | PDF-Backend (auto/unstructured/pypdf) |
|
|
| `HYDE_ENABLED` | `false` | HyDE aktivieren (⚠️ sendet Daten extern) |
|
|
| `SELF_RAG_ENABLED` | `false` | Self-RAG aktivieren (⚠️ sendet Daten extern) |
|
|
| `HYBRID_SEARCH_ENABLED` | `true` | Hybrid Search aktivieren |
|
|
| `CHUNKING_STRATEGY` | `semantic` | Chunking-Strategie (semantic/recursive) |
|
|
|
|
### 15.6 API Endpoints
|
|
|
|
| Endpoint | Methode | Beschreibung |
|
|
|----------|---------|--------------|
|
|
| `/api/v1/admin/rag/system-info` | GET | System-Info mit Lizenzen und Feature-Status |
|
|
| `/api/v1/admin/nibis/search` | POST | RAG-Suche mit optionalem Re-Ranking |
|
|
| `/api/v1/admin/rag/collections` | GET | Liste aller RAG Collections |
|
|
| `/api/v1/admin/nibis/ingest` | POST | Dokument-Indexierung starten |
|
|
| `/api/v1/admin/rag/metrics` | GET | RAG-Qualitätsmetriken |
|
|
|
|
### 15.7 Compliance-Checkliste (Klausur-Service RAG)
|
|
|
|
- [x] Alle Standard-ML-Modelle sind MIT/Apache-2.0 lizenziert
|
|
- [x] MS MARCO-basierte Modelle wurden durch bge-reranker-v2-m3 ersetzt
|
|
- [x] PyMuPDF (AGPL) ist nicht im Default-Build enthalten
|
|
- [x] HyDE/Self-RAG sind standardmäßig deaktiviert (Datenschutz)
|
|
- [x] Alle Embedding-/Re-Ranking-Operationen laufen lokal
|
|
- [x] System-Info Endpoint dokumentiert Lizenzen und Feature-Status
|
|
- [x] Keine Schülerdaten werden indexiert
|
|
|
|
---
|
|
|
|
## Kontakt
|
|
|
|
Bei Fragen zur Lizenz-Compliance:
|
|
- E-Mail: legal@breakpilot.app
|
|
- Repository: https://github.com/breakpilot/breakpilot-pwa
|
|
|
|
---
|
|
|
|
## 16. OCR Grid Detection System (klausur-service)
|
|
|
|
| Eigenschaft | Wert |
|
|
|-------------|------|
|
|
| **Name** | BreakPilot OCR Grid Detection |
|
|
| **Version** | 4.0 |
|
|
| **Status** | Produktiv |
|
|
| **Sprache** | Python 3.11+ / TypeScript |
|
|
| **Lizenz** | Proprietär (BreakPilot) |
|
|
| **Verwendungszweck** | OCR-Analyse von Vokabeltabellen mit mm-Koordinaten |
|
|
|
|
### Python Dependencies (Grid Detection)
|
|
|
|
| Paket | Version | Lizenz | Kommerzielle Nutzung | Beschreibung |
|
|
|-------|---------|--------|----------------------|--------------|
|
|
| NumPy | ≥2.0.0 | BSD-3-Clause | Ja | Deskew-Berechnung (polyfit/lineare Regression) |
|
|
| OpenCV | ≥4.8.0 | Apache-2.0 | Ja | Bildverarbeitung (optional) |
|
|
|
|
### Frontend Dependencies (Worksheet Editor Integration)
|
|
|
|
| Paket | Version | Lizenz | Kommerzielle Nutzung | Beschreibung |
|
|
|-------|---------|--------|----------------------|--------------|
|
|
| Fabric.js | 6.x | MIT | Ja | Canvas-Rendering für Wortpositionierung |
|
|
|
|
### Features
|
|
|
|
| Feature | Status | Beschreibung |
|
|
|---------|--------|--------------|
|
|
| **mm-Koordinatensystem** | ✅ | A4-Format (210x297mm) |
|
|
| **Deskew-Korrektur** | ✅ | Automatische Ausrichtung schiefer Scans |
|
|
| **1mm Column Margin** | ✅ | Spalten beginnen 1mm vor erstem Wort |
|
|
| **Spalten-Erkennung** | ✅ | Englisch/Deutsch/Beispiel automatisch erkannt |
|
|
| **Editor-Integration** | ✅ | Export/Import via localStorage |
|
|
|
|
### Lizenz-Compliance
|
|
|
|
- [x] NumPy ist BSD-3-Clause lizenziert (kommerziell nutzbar)
|
|
- [x] OpenCV ist Apache-2.0 lizenziert (kommerziell nutzbar)
|
|
- [x] Fabric.js ist MIT lizenziert (kommerziell nutzbar)
|
|
- [x] Alle Verarbeitung erfolgt lokal (keine Daten an externe Server)
|
|
|
|
| 2026-02-08 | OCR Grid Detection System (v4) hinzugefügt | Claude Code |
|
|
| 2026-02-08 | Fabric.js für Worksheet Editor Integration dokumentiert | Claude Code |
|
|
| 2026-02-08 | Deskew-Korrektur und mm-Koordinatensystem dokumentiert | Claude Code |
|