List the building structure, room areas, rough power balance and cable sizing in the README and documentation map, add an architecture section for the rough power balance, correct stale snapshot schema references and record the integrated contributor features in the backlog. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> |
||
|---|---|---|
| docs | ||
| scripts | ||
| src | ||
| tests | ||
| .dockerignore | ||
| .gitignore | ||
| AGENTS.md | ||
| compose.dev.yaml | ||
| compose.yaml | ||
| Dockerfile | ||
| drizzle.config.ts | ||
| next-env.d.ts | ||
| next.config.mjs | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
| tsconfig.next.json | ||
| tsconfig.scripts.json | ||
Leistungsbilanz
Leistungsbilanz ist eine Webanwendung für die elektrische Ausführungsplanung. Im Mittelpunkt steht ein tabellenähnlicher Stromkreislisten-Editor, der Stromkreise, Gerätezeilen und wiederverwendbare Projektgeräte fachlich getrennt behandelt.
Das Projekt befindet sich in aktiver Entwicklung. Für SQLite stehen ein Docker-Server-Stack mit gebautem Anwendungscode und ein separater Entwicklungsstack bereit. Ein vollständig unterstütztes Produktionsdeployment und Mehrbenutzerbetrieb fehlen weiterhin. Revit-CSV-Konfiguration, Vorschau und bestätigter Erstimport sind implementiert; die Editoroberfläche zur Objektzuordnung, Folgeimporte und Rückexport stehen noch aus. Die weitere Revit-Arbeit ist zurückgestellt und erfolgt später über den CSV-Export/-Import des Linear-Plugins in Revit.
Unterstützter Arbeitsablauf
- Projekte und Verteilungen verwalten; Gebäude, Etagen und Räume auf einer eigenen Seite pflegen, Räume optional mit Fläche und Summen je Etage und Gebäude
- pro Verteilung geschützte Stromkreisgruppen für Beleuchtung, 1-phasige und 3-phasige Stromkreise verwalten
- Hauptschalter, Überspannungsableiter, Gruppenschutz und zusätzliche Verteilergeräte in der Stromkreisliste abbilden
- Schutzgeräte je Stromkreis und optional je Gruppe konfigurieren
- Leitungsquerschnitte für einzelne Stromkreise auf Anforderung nach DIN VDE 0298-4 berechnen und ausdrücklich übernehmen
- leere, einzeilige und mehrzeilige Stromkreise abbilden
- Stromkreise und Gerätezeilen per Drag-and-drop umstrukturieren
- Projektgeräte einfügen, verknüpfen und kontrolliert synchronisieren
- komplette Stromkreisblöcke filtern und sortieren
- BMKs stabil halten und nur auf ausdrücklichen Befehl neu nummerieren
- Änderungen projektweit und auch nach einem Reload rückgängig machen und wiederholen
- benannte Sicherungspunkte anlegen, wiederherstellen und Revisionen einsehen
- automatische Sicherungspunkte mit begrenzter Aufbewahrung nutzen
- Seitenansicht mit Deckblatt, Verteilerübersicht und Verteilerplänen öffnen und über den Browser als PDF drucken; Büroangaben und Logo zentral pflegen
- grobe Leistungsbilanzen für LPH 2/3 nach Kostengruppen führen, mit der detaillierten Bilanz vergleichen und einzelne Zeilen als Projektgerät übernehmen
- Revit-CSV-Dateien konfigurieren, prüfen und nach expliziter Zuordnung von Räumen, Verteilungen und Projektgeräten erstmals importieren; dabei entstehen noch keine Stromkreise oder Gerätezeilen
Technik
- Next.js 16, React 19 und TypeScript für das Frontend
- Express 5 und Zod für die API
- SQLite,
better-sqlite3und Drizzle ORM für die Persistenz - eigener Spreadsheet-Grid statt eines Bootstrap-Tabellenframeworks
- Node.js-Test-Runner für Domain-, Grid- und SQLite-Integrationstests
Schnellstart mit Docker
Voraussetzungen:
- Git
- Docker Desktop mit Docker Compose
git clone <repository-url>
Set-Location leistungsbilanz-ts
docker compose up --build --detach
Danach:
- Frontend: http://localhost:3001
- API-Healthcheck: http://localhost:3001/health (über den Next.js-Rewrite)
Die Express-API ist nicht mehr auf dem Host veröffentlicht. Sie hat keine Authentifizierung und ist nur innerhalb des Compose-Netzes erreichbar; der Zugriff läuft über den Rewrite im Web-Dienst.
Der API-Container führt ausstehende Migrationen und die Schemaprüfung beim Start
automatisch aus. Die SQLite-Datei liegt auf dem Host unter
data/leistungsbilanz.db und bleibt beim Stoppen erhalten.
Das Laufzeit-Image läuft als Benutzer node (UID 1000), nicht als root. Ein
data/-Verzeichnis, das ein früherer root-Container angelegt hat, braucht
deshalb einmalig sudo chown -R 1000:1000 data auf dem Host.
docker compose ps
docker compose logs --follow
docker compose down
compose.yaml startet den Produktionsstand: gebautes dist/ und next start,
ohne Quellcode-Mounts und ohne Datei-Watcher, mit Speichergrenzen und ohne
root-Rechte im Container. Details stehen in
Deployment und Betrieb.
Für die Entwicklung mit Hot Reload gibt es einen eigenen Stack mit Quellcode-Mounts und Watchern:
docker compose -f compose.dev.yaml up --build --detach
docker compose -f compose.dev.yaml logs --follow
docker compose -f compose.dev.yaml down
Die Watcher darin laufen im Polling-Modus, weil Bind-Mounts unter Windows und macOS keine inotify-Events durchreichen. Das kostet dauerhaft CPU, auch wenn niemand die Anwendung benutzt — deshalb gehört dieser Stack nicht auf einen Server.
Direkte lokale Entwicklung
Voraussetzungen:
- Node.js 24
- npm
npm ci
npm run db:migrate
npm run db:verify:circuit-schema
npm run dev:api
In einem zweiten Terminal:
npm run dev:web
Frontend und API laufen anschließend auf denselben Ports wie im Docker-Setup.
Qualitätssicherung
npm test
npm run build:api
npm run build:web
npm run typecheck:scripts
npx tsc --noEmit -p tsconfig.next.json
Wichtige Datenbankbefehle:
npm run db:backup
npm run db:migrate
npm run db:verify:circuit-schema
npm run db:generate
db:backup verwendet die SQLite-Online-Backup-API und prüft das Ergebnis auf
Integrität und Fremdschlüsselverletzungen. Migration 0000 ist die
Release-Baseline für eine leere Datenbank; nachfolgende nummerierte Migrationen
entwickeln diese Baseline additiv weiter. Datenbanken aus Entwicklungsständen
vor der Baseline werden nicht unterstützt.
Dokumentation
- Dokumentationsübersicht
- Aktuelle Architektur
- Editor-Interaktionen
- API des Stromkreislisten-Editors
- Seitenansicht und PDF-Export
- Gebäudestruktur und Raumflächen
- Grobe Leistungsbilanz
- Leitungsberechnung
- Entwicklungs- und Contributor-Workflow
- Bekannte Einschränkungen
- Roadmap
Für LLM-gestützte Änderungen enthält AGENTS.md die verbindlichen Domänenregeln, unterstützten Einstiegspunkte und Architekturgrenzen.