Wiki source code of Schwarmspeicher Electrify
Version 2.1 by Dimitri Rupp on 2026/07/08 12:34
Show last authors
| author | version | line-number | content |
|---|---|---|---|
| 1 | {{box cssClass="floatinginfobox" title="**Auf dieser Seite**"}} | ||
| 2 | {{toc/}} | ||
| 3 | {{/box}} | ||
| 4 | |||
| 5 | = 🔋 Schwarmspeicher Electrify = | ||
| 6 | |||
| 7 | {{info}} | ||
| 8 | **Zweck:** Webbasiertes Projektmanagementsystem zur Verwaltung von Batterie-Großspeicherprojekten in Deutschland und Österreich — vom Standort über Genehmigungen bis zur Projektsteuerung und Dokumentation. | ||
| 9 | {{/info}} | ||
| 10 | |||
| 11 | == Ăśbersicht == | ||
| 12 | |||
| 13 | **Schwarmspeicher Electrify** unterstĂĽtzt den gesamten Projektlebenszyklus: Standortidentifikation, Genehmigungen, Projektsteuerung und Dokumentation. | ||
| 14 | |||
| 15 | == Technologie-Stack == | ||
| 16 | |||
| 17 | **Frontend:** React 18 · TypeScript · Vite · Tailwind CSS · shadcn/ui · React Router · React Query · React Hook Form · Leaflet (Kartendarstellung) · Recharts (Diagramme) | ||
| 18 | |||
| 19 | **Backend:** Supabase — PostgreSQL, Authentication, Storage, Edge Functions, Row Level Security (RLS) | ||
| 20 | |||
| 21 | == Projektstruktur == | ||
| 22 | |||
| 23 | {{code}} | ||
| 24 | src/ | ||
| 25 | ├── components/ UI-Komponenten | ||
| 26 | ├── pages/ Seiten der Anwendung | ||
| 27 | ├── hooks/ Datenzugriffe und Business-Logik | ||
| 28 | ├── integrations/ Supabase Client | ||
| 29 | ├── types/ TypeScript-Modelle | ||
| 30 | └── lib/ Hilfsfunktionen | ||
| 31 | |||
| 32 | supabase/ | ||
| 33 | ├── migrations/ | ||
| 34 | ├── functions/ | ||
| 35 | └── config.toml | ||
| 36 | {{/code}} | ||
| 37 | |||
| 38 | == Hauptfunktionen == | ||
| 39 | |||
| 40 | === Dashboard === | ||
| 41 | |||
| 42 | Zentrale Ăśbersicht ĂĽber Projekte, Status, offene Aufgaben, Kennzahlen und Projektfortschritt (Komponente ##Dashboard.tsx##). | ||
| 43 | |||
| 44 | === Projektverwaltung === | ||
| 45 | |||
| 46 | Verwaltung aller Batteriespeicherprojekte: anzeigen, Detailansicht, bearbeiten, Projektstatus, Meilensteine. Komponenten: ProjectTable, ProjectDetail. | ||
| 47 | |||
| 48 | === Standortverwaltung === | ||
| 49 | |||
| 50 | Standorte anlegen, bearbeiten, importieren, Historie, Dokumente. Komponenten: StandortDetail, CreateStandortForm, StandortImportDialog, StandortDokumente. | ||
| 51 | |||
| 52 | === Gemeinden === | ||
| 53 | |||
| 54 | Verwaltung der Gemeinden (Komponente CreateGemeindeForm). Zusätzlich existiert eine Supabase Edge Function zum Abruf von NÖ-Gemeinden (##supabase/functions/fetch-noe-gemeinden##). | ||
| 55 | |||
| 56 | === Kartenansicht === | ||
| 57 | |||
| 58 | Darstellung aller Standorte auf einer interaktiven Karte (Leaflet, React Leaflet). Komponenten: ProjectMap, LocationPickerMap. | ||
| 59 | |||
| 60 | === Potenzialanalyse === | ||
| 61 | |||
| 62 | Bewertung möglicher Standorte. Komponenten: PotenzialTabelle, PotenzialPage. | ||
| 63 | |||
| 64 | === Pipeline === | ||
| 65 | |||
| 66 | Verwaltung von Vorprojekten. Komponenten: VorprojektePipeline, VorprojektTimeline. | ||
| 67 | |||
| 68 | === Meilensteinverwaltung === | ||
| 69 | |||
| 70 | Projektfortschritt ĂĽber Meilensteine. Komponenten: MeilensteinMatrix, MeilensteinQuickEdit. | ||
| 71 | |||
| 72 | === Aufgabenverwaltung === | ||
| 73 | |||
| 74 | Projektbezogene Aufgaben. Komponenten: TaskManager, TasksPage. Hook: ##useTasks()##. | ||
| 75 | |||
| 76 | === Dokumentenverwaltung === | ||
| 77 | |||
| 78 | Zu jedem Standort können Dokumente verwaltet werden. Komponenten: StandortDokumente, PartnerDokumente. | ||
| 79 | |||
| 80 | === Standortpartner === | ||
| 81 | |||
| 82 | Verwaltung von Projektpartnern. Komponenten: StandortpartnerManager, StandortpartnerTable. | ||
| 83 | |||
| 84 | === Benutzerverwaltung === | ||
| 85 | |||
| 86 | Anmeldung, Passwortänderung, Rollen. Komponenten: AuthProvider, ProtectedRoute, BenutzerPage, ChangePasswordDialog. Backend: Supabase Authentication. | ||
| 87 | |||
| 88 | === Audit Log === | ||
| 89 | |||
| 90 | Nachvollziehbarkeit von Änderungen (Seite AuditLogPage). | ||
| 91 | |||
| 92 | == Routing == | ||
| 93 | |||
| 94 | |=Seite|=Beschreibung | ||
| 95 | |Dashboard|Startseite | ||
| 96 | |Projekte|ProjektĂĽbersicht | ||
| 97 | |Pipeline|Vorprojekte | ||
| 98 | |Potenziale|Standortpotenziale | ||
| 99 | |Karte|Kartenansicht | ||
| 100 | |Forecast|Forecast | ||
| 101 | |Aufgaben|Aufgabenverwaltung | ||
| 102 | |Audit Log|Änderungsprotokoll | ||
| 103 | |Benutzer|Benutzerverwaltung | ||
| 104 | |Login|Anmeldung | ||
| 105 | |||
| 106 | == Datenzugriff == | ||
| 107 | |||
| 108 | Der Zugriff erfolgt über Custom Hooks, die sämtliche Kommunikation mit Supabase kapseln: | ||
| 109 | |||
| 110 | {{code}} | ||
| 111 | useStandorte() | ||
| 112 | useGemeinden() | ||
| 113 | useVorprojekte() | ||
| 114 | useTasks() | ||
| 115 | usePotenzialDaten() | ||
| 116 | useStandortpartner() | ||
| 117 | useMonatsziele() | ||
| 118 | {{/code}} | ||
| 119 | |||
| 120 | == Supabase == | ||
| 121 | |||
| 122 | **Authentication:** Login, Passwortänderung, Rollenverwaltung. | ||
| 123 | |||
| 124 | **Datenbank:** Wird ĂĽber SQL-Migrationen verwaltet (##supabase/migrations/##). Die Migrationen definieren Tabellen, Policies und Datenbankfunktionen. | ||
| 125 | |||
| 126 | **Edge Functions:** | ||
| 127 | |||
| 128 | * ##fetch-noe-gemeinden## — lädt Gemeinden aus Niederösterreich | ||
| 129 | * ##manage-users## — Benutzerverwaltung | ||
| 130 | |||
| 131 | == Architektur == | ||
| 132 | |||
| 133 | {{mermaid}} | ||
| 134 | flowchart TD | ||
| 135 | FE["React Frontend"] --> RQ["React Query"] | ||
| 136 | RQ --> SC["Supabase Client"] | ||
| 137 | SC --> AUTH["Auth"] | ||
| 138 | SC --> DBS["Database"] | ||
| 139 | SC --> ST["Storage"] | ||
| 140 | DBS --> EF["Edge Functions"] | ||
| 141 | {{/mermaid}} | ||
| 142 | |||
| 143 | == Server == | ||
| 144 | |||
| 145 | Das Projekt liegt unter ##/mnt/data/schwarmspeicher/schwarmspeicher-electrify_lokal## und läuft in einem Docker-Compose-Stack (##schwarmspeicher-electrify_lokal##). | ||
| 146 | |||
| 147 | Erreichbar unter [[http://schwarmspeicher.spl-tele.com:8200>>http://schwarmspeicher.spl-tele.com:8200/]] — mit VPN und im SPL-TELE-Netzwerk. |