Wiki source code of Schwarmspeicher Electrify

Version 8.1 by Patrizia Gurschka on 2026/09/10 07:14

Hide last authors
Patrizia Gurschka 6.1 1 = 🔋  Schwarmspeicher Electrify =
Dimitri Rupp 1.1 2
Patrizia Gurschka 6.1 3 |**ⓘ   Zweck: **Webbasiertes Projektmanagementsystem zur Verwaltung von Batterie-Großspeicherprojekten in Deutschland und Österreich — vom Standort über Genehmigungen bis zur Projektsteuerung und Dokumentation. Die aktuelle Anwendung enthält zusätzlich den eigenständigen Use-Case PV Co-Location.|(((
Patrizia Gurschka 5.1 4 **Auf dieser Seite**
5
Patrizia Gurschka 6.1 6 • 🔋 Schwarmspeicher Electrify
Patrizia Gurschka 5.1 7
Patrizia Gurschka 6.1 8 • Übersicht
Patrizia Gurschka 5.1 9
Patrizia Gurschka 6.1 10 • Technologie-Stack
Patrizia Gurschka 5.1 11
Patrizia Gurschka 6.1 12 • Projektstruktur
Patrizia Gurschka 5.1 13
Patrizia Gurschka 6.1 14 • Hauptfunktionen
Patrizia Gurschka 5.1 15
Patrizia Gurschka 6.1 16 ▪ Dashboard
Patrizia Gurschka 5.1 17
Patrizia Gurschka 6.1 18 ▪ Projektverwaltung
Dimitri Rupp 1.1 19
Patrizia Gurschka 6.1 20 ▪ Standortverwaltung
Dimitri Rupp 1.1 21
Patrizia Gurschka 6.1 22 ▪ Gemeinden
Patrizia Gurschka 5.1 23
Patrizia Gurschka 6.1 24 ▪ Kartenansicht
Patrizia Gurschka 5.1 25
Patrizia Gurschka 6.1 26 ▪ Potenzialanalyse
Patrizia Gurschka 5.1 27
Patrizia Gurschka 6.1 28 ▪ Pipeline
Dimitri Rupp 1.1 29
Patrizia Gurschka 6.1 30 ▪ Meilensteinverwaltung
Dimitri Rupp 1.1 31
Patrizia Gurschka 6.1 32 ▪ Aufgabenverwaltung
Dimitri Rupp 1.1 33
Patrizia Gurschka 6.1 34 ▪ Dokumentenverwaltung
Dimitri Rupp 1.1 35
Patrizia Gurschka 6.1 36 ▪ Standortpartner
Dimitri Rupp 1.1 37
Patrizia Gurschka 6.1 38 ▪ Stockende Projekte
Patrizia Gurschka 5.1 39
Patrizia Gurschka 6.1 40 ▪ Forecast
Dimitri Rupp 1.1 41
Patrizia Gurschka 6.1 42 ▪ PV Co-Location
Patrizia Gurschka 5.1 43
Patrizia Gurschka 6.1 44 ▪ Benutzerverwaltung
Dimitri Rupp 1.1 45
Patrizia Gurschka 6.1 46 ▪ Audit Log
47
48 • Routing
49
50 • Datenzugriff
51
52 • Supabase
53
54 • Architektur
55
56 • Server
57 )))
58
59
60
Patrizia Gurschka 7.1 61 == Übersicht ==
Patrizia Gurschka 6.1 62
63 **Schwarmspeicher Electrify** unterstützt den gesamten Projektlebenszyklus: Standortidentifikation, Pipeline, Genehmigungen, Projektsteuerung, Forecast, Aufgaben und Dokumentation. Über einen Use-Case-Switcher kann zwischen **Schwarmspeicher** und **PV Co-Location** gewechselt werden. Der aktive Use-Case wird aus dem URL-Pfad abgeleitet.
64
Patrizia Gurschka 7.1 65 == Technologie-Stack ==
Patrizia Gurschka 6.1 66
67 **Frontend: **React 18.3.1 · TypeScript 5.8.3 · Vite 5.4.19 · Tailwind CSS 3.4.17 · shadcn/ui / Radix UI · React Router DOM 6.30.1 · TanStack React Query 5.83.0 · React Hook Form 7.61.1 · Zod 3.25.76 · Leaflet 1.9.4 / React Leaflet 4.2.1 · Recharts 2.15.4 · xlsx 0.18.5
68
69 **Backend: **Supabase — PostgreSQL, Authentication, Storage, Edge Functions, Row Level Security (RLS)
70
71 **Tests: **Vitest 3.2.4 · Playwright 1.57.0
72
Patrizia Gurschka 7.1 73 == Projektstruktur ==
Patrizia Gurschka 6.1 74
75 |src/
76 ├── components/          UI-Komponenten und Fachkomponenten
77 ├── pages/               Seiten der Anwendung
78 ├── hooks/               Datenzugriffe und Business-Logik
79 ├── integrations/        Supabase Client und generierte Typen
80 ├── types/               TypeScript-Modelle, inkl. PV Co-Location
81 └── lib/                 Hilfsfunktionen
82 \\supabase/
Patrizia Gurschka 5.1 83 ├── migrations/
84 ├── functions/
85 └── config.toml
Dimitri Rupp 1.1 86
Patrizia Gurschka 5.1 87
Dimitri Rupp 1.1 88
Patrizia Gurschka 7.1 89 == Hauptfunktionen ==
Dimitri Rupp 1.1 90
Patrizia Gurschka 7.1 91 === Dashboard ===
Patrizia Gurschka 6.1 92
Patrizia Gurschka 5.1 93 Zentrale Übersicht über Projekte, Status, offene Aufgaben, Kennzahlen und Projektfortschritt. Für PV Co-Location existiert ein eigenes Dashboard mit Kennzahlen zu aktiven Standorten, Modulleistung, BESS-Leistung, Standortpartnern, Pipeline sowie Plan-/Ist-Werten.
Dimitri Rupp 1.1 94
Patrizia Gurschka 7.1 95 === Projektverwaltung ===
Dimitri Rupp 1.1 96
Patrizia Gurschka 5.1 97 Verwaltung aller Batteriespeicherprojekte: anzeigen, Detailansicht, bearbeiten, Projektstatus und Meilensteine. Komponenten: ProjectTable, ProjectDetail. PV Co-Location besitzt eine eigene Projektansicht mit CoLocationProjectTable und CoLocationStandortDetail.
Dimitri Rupp 1.1 98
Patrizia Gurschka 6.1 99 Standortverwaltung
Dimitri Rupp 1.1 100
Patrizia Gurschka 5.1 101 Standorte anlegen, bearbeiten, importieren, Historie und Dokumente. Komponenten: StandortDetail, CreateStandortForm, StandortImportDialog, StandortDokumente. PV Co-Location ergänzt eigene Formulare, Import, Bulk-Edit und Detailansichten.
Dimitri Rupp 1.1 102
Patrizia Gurschka 6.1 103 Gemeinden
Dimitri Rupp 1.1 104
Patrizia Gurschka 5.1 105 Verwaltung der Gemeinden (Komponente CreateGemeindeForm). Zusätzlich existiert eine Supabase Edge Function zum Abruf von NÖ-Gemeinden (supabase/functions/fetch-noe-gemeinden).
Dimitri Rupp 1.1 106
Patrizia Gurschka 6.1 107 Kartenansicht
Dimitri Rupp 1.1 108
Patrizia Gurschka 5.1 109 Darstellung aller Standorte auf einer interaktiven Karte mit Leaflet / React Leaflet. Komponenten: ProjectMap, LocationPickerMap. PV Co-Location besitzt eine eigene Karte mit Standortselektion, Partnerfilter und Übergabe ausgewählter Standort-IDs an die Projektansicht.
Dimitri Rupp 1.1 110
Patrizia Gurschka 6.1 111 Potenzialanalyse
Dimitri Rupp 1.1 112
Patrizia Gurschka 5.1 113 Bewertung möglicher Standorte. Komponenten: PotenzialTabelle, PotenzialPage. Die Potenzialanalyse ist aktuell dem Schwarmspeicher-Use-Case zugeordnet.
Dimitri Rupp 1.1 114
Patrizia Gurschka 6.1 115 Pipeline
Dimitri Rupp 1.1 116
Patrizia Gurschka 5.1 117 Verwaltung von Vorprojekten. Komponenten: VorprojektePipeline, VorprojektTimeline. PV Co-Location besitzt eine separate Pipeline für co_vorprojekte mit Standortpartner, Kontakt, Standort-/kWp-/BESS-Potenzial, Realisierungswahrscheinlichkeit, Follow-up und nächsten Schritten.
Dimitri Rupp 1.1 118
Patrizia Gurschka 6.1 119 Meilensteinverwaltung
Dimitri Rupp 1.1 120
Patrizia Gurschka 5.1 121 Projektfortschritt über Meilensteine. Komponenten: MeilensteinMatrix, MeilensteinQuickEdit. PV Co-Location verwendet eine eigene Meilensteinmatrix und Quick-Edit-Logik. Zu den dort abgebildeten Schritten gehören u. a. Grundstücksvertrag, Netzzugangsvertrag, Fertigstellungsmeldung, BESS-Bezugsleistung und Inbetriebnahme.
Dimitri Rupp 1.1 122
Patrizia Gurschka 6.1 123 Aufgabenverwaltung
Dimitri Rupp 1.1 124
Patrizia Gurschka 5.1 125 Projektbezogene Aufgaben. Komponenten: TaskManager, TasksPage. Hook: useTasks(). PV Co-Location verwendet mit CoTaskManager, CoLocationTasksPage und useCoTasks() eine eigene, vom Schwarmspeicher getrennte Aufgabenliste.
Dimitri Rupp 1.1 126
Patrizia Gurschka 6.1 127 Dokumentenverwaltung
Dimitri Rupp 1.1 128
Patrizia Gurschka 5.1 129 Zu jedem Standort können Dokumente verwaltet werden. Komponenten: StandortDokumente, PartnerDokumente. PV Co-Location besitzt eigene Standort- und Partnerdokumente sowie den separaten Frontend-Zugriff auf den Storage-Bucket co-dokumente; Downloads werden als Signed URLs erzeugt.
Dimitri Rupp 1.1 130
Patrizia Gurschka 6.1 131 Standortpartner
Dimitri Rupp 1.1 132
Patrizia Gurschka 5.1 133 Verwaltung von Projektpartnern. Komponenten: StandortpartnerManager, StandortpartnerTable. Für PV Co-Location existieren separate Komponenten und Datenzugriffe für Standortpartner.
Dimitri Rupp 1.1 134
Patrizia Gurschka 6.1 135 Stockende Projekte
Patrizia Gurschka 5.1 136
137 Erkennung von Projekten bzw. Standorten, deren definierte Lead Times zwischen Meilensteinen überschritten sind. Für PV Co-Location sind die Lead-Time-Regeln in der UI anpassbar und werden derzeit im Browser-localStorage gespeichert.
138
Patrizia Gurschka 6.1 139 Forecast
Patrizia Gurschka 5.1 140
141 Forecast auf Basis von Monatszielen und erreichten Meilensteinen. PV Co-Location enthält Plan-/Ist-Auswertungen für Netzzugangsvertrag, BESS beantragt, BESS bewilligt und BESS in Betrieb sowie eine Jahresauswahl und editierbare Monatsziele.
142
Patrizia Gurschka 6.1 143 PV Co-Location
Patrizia Gurschka 5.1 144
145 Zweiter fachlich getrennter Use-Case mit eigenen Routen, Seiten, Hooks und Datenobjekten. Enthalten sind Dashboard, Karte, Projekte, Pipeline, stockende Standorte, Forecast und Tasks. Die Use-Case-Umschaltung erfolgt über den Sidebar-Switcher; /pv-colocation/* aktiviert PV Co-Location, die übrigen Anwendungspfade den Schwarmspeicher.
146
Patrizia Gurschka 6.1 147 Benutzerverwaltung
Dimitri Rupp 1.1 148
Patrizia Gurschka 5.1 149 Anmeldung, Passwortänderung und Rollen. Komponenten: AuthProvider, ProtectedRoute, BenutzerPage, ChangePasswordDialog. Backend: Supabase Authentication. Die Anwendung unterstützt zudem eine verpflichtende Passwortänderung über useMustChangePassword().
Dimitri Rupp 1.1 150
Patrizia Gurschka 6.1 151 Audit Log
Dimitri Rupp 1.1 152
Patrizia Gurschka 5.1 153 Nachvollziehbarkeit von Änderungen über AuditLogPage und audit_log. Der Zugriff auf das Änderungsprotokoll ist über die vorhandenen Datenbankregeln auf Administratoren eingeschränkt.
Dimitri Rupp 1.1 154
Patrizia Gurschka 6.1 155 Routing
Dimitri Rupp 1.1 156
Patrizia Gurschka 6.1 157 |**Seite**|**Beschreibung**
Dimitri Rupp 1.1 158 |Dashboard|Startseite
159 |Projekte|Projektübersicht
160 |Pipeline|Vorprojekte
161 |Potenziale|Standortpotenziale
162 |Karte|Kartenansicht
Patrizia Gurschka 5.1 163 |Stockend|Stockende Projekte / Standorte
Dimitri Rupp 1.1 164 |Forecast|Forecast
165 |Aufgaben|Aufgabenverwaltung
166 |Audit Log|Änderungsprotokoll
167 |Benutzer|Benutzerverwaltung
168 |Login|Anmeldung
169
Patrizia Gurschka 5.1 170
171
Patrizia Gurschka 6.1 172 **Schwarmspeicher-Routen: **/ · /projekte · /pipeline · /potenzial · /karte · /stockend · /forecast · /tasks · /benutzer · /historie
Dimitri Rupp 1.1 173
Patrizia Gurschka 6.1 174 **PV-Co-Location-Routen: **/pv-colocation · /pv-colocation/projekte · /pv-colocation/pipeline · /pv-colocation/karte · /pv-colocation/stockend · /pv-colocation/forecast · /pv-colocation/tasks
175
176 Datenzugriff
177
Patrizia Gurschka 5.1 178 Der Zugriff erfolgt über Custom Hooks, die die Kommunikation mit Supabase kapseln. React Query übernimmt Laden, Mutationen und Cache-Invalidierung.
Dimitri Rupp 1.1 179
Patrizia Gurschka 6.1 180 |Schwarmspeicher:
Dimitri Rupp 1.1 181 useStandorte()
182 useGemeinden()
183 useVorprojekte()
184 useTasks()
185 usePotenzialDaten()
186 useStandortpartner()
187 useMonatsziele()
Patrizia Gurschka 5.1 188 useDokumente()
Patrizia Gurschka 6.1 189 \\PV Co-Location:
Patrizia Gurschka 5.1 190 useCoLocationStandorte()
191 useCoLocationStandortpartner()
192 useCoVorprojekte()
193 useCoTasks()
194 useCoMonatsziele()
195 useCoDokumente()
196
197
Dimitri Rupp 1.1 198
Patrizia Gurschka 6.1 199 Supabase
Dimitri Rupp 1.1 200
Patrizia Gurschka 6.1 201 **Authentication: **Login, Passwortänderung, Rollenverwaltung und geschützte Routen.
Dimitri Rupp 1.1 202
Patrizia Gurschka 6.1 203 **Datenbank: **Wird über SQL-Migrationen verwaltet (supabase/migrations/). Die Migrationen definieren Tabellen, Policies und Datenbankfunktionen.
Patrizia Gurschka 5.1 204
Patrizia Gurschka 6.1 205 **Storage: **Der bestehende Bucket dokumente ist laut Migration privat und auf authentifizierte Zugriffe beschränkt. Das PV-Co-Location-Frontend referenziert zusätzlich den Bucket co-dokumente.
Patrizia Gurschka 5.1 206
Patrizia Gurschka 6.1 207 **Audit: **Änderungen werden über audit_log und Datenbank-Trigger protokolliert; die Audit-Funktion ist gegen direkte Ausführung durch PUBLIC/anon/authenticated gehärtet.
208
Dimitri Rupp 1.1 209 **Edge Functions:**
210
Patrizia Gurschka 6.1 211 • fetch-noe-gemeinden — lädt Gemeinden aus Niederösterreich
Dimitri Rupp 1.1 212
Patrizia Gurschka 6.1 213 • manage-users — Benutzerverwaltung
Patrizia Gurschka 5.1 214
Patrizia Gurschka 6.1 215 |**ⓘ  Technischer Hinweis: **Die Frontend-Hooks referenzieren mehrere co_* Datenobjekte (u. a. co_standorte, co_prozessschritte, co_standortpartner, co_vorprojekte, co_tasks, co_monatsziele und co_dokumente) sowie den Storage-Bucket co-dokumente. Im bereitgestellten supabase/migrations-Verzeichnis und in den generierten Supabase-Typen sind diese Co-Location-Objekte nicht vollständig enthalten. Für ein reproduzierbares Deployment sollten die fehlenden Schema-, RLS- und Storage-Migrationen ergänzt und die Typen anschließend neu generiert werden.
Patrizia Gurschka 5.1 216
Patrizia Gurschka 6.1 217 Architektur
Patrizia Gurschka 5.1 218
Patrizia Gurschka 6.1 219 |flowchart TD
220 FE["React Frontend"] ~-~-> UC["UseCaseProvider / Router"]
221 UC ~-~-> SS["Schwarmspeicher Pages"]
222 UC ~-~-> CO["PV Co-Location Pages"]
223 SS ~-~-> RQ["React Query"]
224 CO ~-~-> RQ
225 RQ ~-~-> SC["Supabase Client"]
226 SC ~-~-> AUTH["Auth"]
227 SC ~-~-> DBS["Database / RLS"]
228 SC ~-~-> ST["Storage"]
229 DBS ~-~-> EF["Edge Functions"]
230 DBS ~-~-> AL["Audit Log / Trigger"]
Patrizia Gurschka 5.1 231
Dimitri Rupp 1.1 232
Patrizia Gurschka 5.1 233
Patrizia Gurschka 6.1 234 Server
Patrizia Gurschka 5.1 235
236 Für die lokale Entwicklung nennt die aktuelle README Node.js ≥ 18 oder Bun, Docker / Docker Compose und die Supabase CLI. Der Vite-Dev-Server läuft laut README auf Port 8200, Supabase Studio auf 127.0.0.1:54323.
Dimitri Rupp 1.1 237
Patrizia Gurschka 6.1 238 Die bisherige Dokumentation nennt zusätzlich den Betrieb unter /mnt/data/schwarmspeicher/schwarmspeicher-electrify_lokal in einem Docker-Compose-Stack sowie die Adresse http:~/~/schwarmspeicher.spl-tele.com:8200 im VPN und SPL-TELE-Netzwerk. Diese konkrete produktive Serverkonfiguration ist im bereitgestellten Quellpaket nicht enthalten und konnte daraus nicht erneut verifiziert werden.