Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,12 @@
"dependencies": {
"@splidejs/react-splide": "^0.7.12",
"@tanstack/react-router": "^1.170.15",
"i18next": "^26.1.0",
"lottie-react": "^2.4.1",
"lucide-react": "^1.18.0",
"react": "^19.2.7",
"react-dom": "^19.2.7",
"react-i18next": "^17.0.7",
"react-markdown": "^10.1.0",
"react-player": "^3.4.0"
},
Expand Down
64 changes: 64 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

16 changes: 8 additions & 8 deletions src/data/architectureSteps.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,26 +10,26 @@ interface ArchitectureStep {

export const architectureSteps: ArchitectureStep[] = [
{
label: 'Sensor',
description: 'Misst Bodenfeuchte am Baum',
label: 'data.architectureSteps.sensor.label',
description: 'data.architectureSteps.sensor.description',
icon: Radio,
color: 'green-dark',
},
{
label: 'Gateway',
description: 'LoRaWAN Übertragung',
label: 'data.architectureSteps.gateway.label',
description: 'data.architectureSteps.gateway.description',
icon: Wifi,
color: 'green-light',
},
{
label: 'Backend',
description: 'Datenverarbeitung & Analyse',
label: 'data.architectureSteps.backend.label',
description: 'data.architectureSteps.backend.description',
icon: Server,
color: 'green-middle',
},
{
label: 'Dashboard',
description: 'Visualisierung & Tourenplanung',
label: 'data.architectureSteps.dashboard.label',
description: 'data.architectureSteps.dashboard.description',
icon: LayoutDashboard,
color: 'green-dark',
},
Expand Down
21 changes: 9 additions & 12 deletions src/data/challengeFigures.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,18 @@ interface ChallengeFigure {

export const challengeFigures: ChallengeFigure[] = [
{
value: '50.000',
unit: 'Liter / Jahr',
description:
'Wasser werden pro mittelgroße Kommune jährlich ausgebracht, ohne Datengrundlage, ohne bedarfsgerechte Steuerung.',
value: 'data.challengeFigures.water.value',
unit: 'data.challengeFigures.water.unit',
description: 'data.challengeFigures.water.description',
},
{
value: '1.700 €',
unit: 'pro Baum',
description:
'kostet ein einzelner Straßenbaum. Ein vermeidbarer Totalverlust durch fehlende bedarfsgerechte Bewässerung finanziert Jahre Sensorbetrieb.',
value: 'data.challengeFigures.tree.value',
unit: 'data.challengeFigures.tree.unit',
description: 'data.challengeFigures.tree.description',
},
{
value: 'bis 60.000 €',
unit: 'pro Beet',
description:
'kann ein komplettes Straßenbeet kosten, inklusive Tiefbau, Substrat und Infrastruktur.',
value: 'data.challengeFigures.bed.value',
unit: 'data.challengeFigures.bed.unit',
description: 'data.challengeFigures.bed.description',
},
]
42 changes: 18 additions & 24 deletions src/data/governancePillars.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,45 +10,39 @@ interface GovernancePillar {

export const governancePillars: GovernancePillar[] = [
{
category: 'Lizenz',
title: 'AGPL-3.0-only',
description:
'Lizenziert unter der AGPL. Finanziert im Rahmen des Landesprogramms „Offene Innovation" des DigitalHub.SH Schleswig-Holstein.',
category: 'data.governancePillars.license.category',
title: 'data.governancePillars.license.title',
description: 'data.governancePillars.license.description',
icon: Shield,
},
{
category: 'Souveränität',
title: 'Digitale Souveränität',
description:
'Keine Abhängigkeit von proprietären Plattformen. Kommunen behalten die Kontrolle über ihre Daten und Infrastruktur. Kein Vendor-Lock-in.',
category: 'data.governancePillars.sovereignty.category',
title: 'data.governancePillars.sovereignty.title',
description: 'data.governancePillars.sovereignty.description',
icon: Lock,
},
{
category: 'Modularität',
title: 'Plugin-System',
description:
'Modulare Erweiterungen für kommunenspezifische Anpassungen ohne Änderung der Kernsoftware. Import-Plugins für Baumkataster, CSV, Datenbanken.',
category: 'data.governancePillars.modularity.category',
title: 'data.governancePillars.modularity.title',
description: 'data.governancePillars.modularity.description',
icon: Puzzle,
},
{
category: 'Integration',
title: 'API-first',
description:
'Offene Schnittstellen für Integration in kommunale IT-Landschaften. Anbindung an IoT-Hubs und Open-Data-Portale.',
category: 'data.governancePillars.integration.category',
title: 'data.governancePillars.integration.title',
description: 'data.governancePillars.integration.description',
icon: Plug,
},
{
category: 'Community',
title: 'Nachnutzung & Community',
description:
'Quellcode und Dokumentation öffentlich auf GitHub. Andere Kommunen können die Lösung nachnutzen und anpassen.',
category: 'data.governancePillars.community.category',
title: 'data.governancePillars.community.title',
description: 'data.governancePillars.community.description',
icon: Users,
},
{
category: 'Wirtschaftlichkeit',
title: 'Kosteneffizienz',
description:
'Keine Lizenzkosten. Geschäftsmodell basiert auf Dienstleistungen: Hosting, Anpassung, Sensorvertrieb. Regionale Wertschöpfung in SH.',
category: 'data.governancePillars.efficiency.category',
title: 'data.governancePillars.efficiency.title',
description: 'data.governancePillars.efficiency.description',
icon: PiggyBank,
},
]
35 changes: 15 additions & 20 deletions src/data/processSteps.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,42 +11,37 @@ interface ProcessStep {

export const steps: ProcessStep[] = [
{
label: 'Sensoren installieren',
shortName: 'Installation',
description:
'Bodenfeuchtesensoren werden an ausgewählten Bäumen angebracht – schnell, unkompliziert und wartungsarm.',
label: 'data.processSteps.installSensors.label',
shortName: 'data.processSteps.installSensors.shortName',
description: 'data.processSteps.installSensors.description',
icon: Radio,
color: 'green-dark',
},
{
label: 'Echtzeitdaten erfassen',
shortName: 'Daten',
description:
'Die Sensoren messen kontinuierlich die Bodenfeuchtigkeit und übertragen die Werte automatisch ins System.',
label: 'data.processSteps.collectRealtimeData.label',
shortName: 'data.processSteps.collectRealtimeData.shortName',
description: 'data.processSteps.collectRealtimeData.description',
icon: Activity,
color: 'green-light',
},
{
label: 'Bewässerungsbedarf erkennen',
shortName: 'Analyse',
description:
'Das Dashboard zeigt dir auf einen Blick, welche Bäume Wasser brauchen – priorisiert nach Dringlichkeit.',
label: 'data.processSteps.detectWateringNeed.label',
shortName: 'data.processSteps.detectWateringNeed.shortName',
description: 'data.processSteps.detectWateringNeed.description',
icon: LayoutDashboard,
color: 'green-middle',
},
{
label: 'Optimierte Routen planen',
shortName: 'Planung',
description:
'Green Ecolution berechnet die effizienteste Tour für dein Team – weniger Fahrzeit, mehr Bewässerung.',
label: 'data.processSteps.planOptimizedRoutes.label',
shortName: 'data.processSteps.planOptimizedRoutes.shortName',
description: 'data.processSteps.planOptimizedRoutes.description',
icon: Route,
color: 'green-light',
},
{
label: 'Bewässern und auswerten',
shortName: 'Umsetzung',
description:
'Dein Team fährt die optimierte Route. Danach siehst du genau, wie viel Wasser wo eingesetzt wurde.',
label: 'data.processSteps.waterAndEvaluate.label',
shortName: 'data.processSteps.waterAndEvaluate.shortName',
description: 'data.processSteps.waterAndEvaluate.description',
icon: Droplets,
color: 'green-dark',
},
Expand Down
21 changes: 10 additions & 11 deletions src/data/roadmapItems.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,29 +6,28 @@ interface RoadmapItem {

export const roadmapItems: RoadmapItem[] = [
{
title: 'Mobile App mit QR-Scan',
description: 'Sensor-Setup per QR-Code und GPS direkt vor Ort am Baum',
title: 'data.roadmapItems.mobileApp.title',
description: 'data.roadmapItems.mobileApp.description',
status: 'in-progress',
},
{
title: 'Eigene Sensor-Firmware',
description: 'Vollständig selbst entwickelte Firmware für maximale Kontrolle und Anpassbarkeit',
title: 'data.roadmapItems.sensorFirmware.title',
description: 'data.roadmapItems.sensorFirmware.description',
status: 'planned',
},
{
title: 'Benutzer- und Rollenkonzept',
description:
'Feingranulare Rechteverwaltung für Mitarbeitende, Dienstleister und Partnerkommunen',
title: 'data.roadmapItems.roles.title',
description: 'data.roadmapItems.roles.description',
status: 'planned',
},
{
title: 'Open-Data-Export',
description: 'Anbindung an das Open-Data-Portal des Landes Schleswig-Holstein',
title: 'data.roadmapItems.openData.title',
description: 'data.roadmapItems.openData.description',
status: 'planned',
},
{
title: 'Weitere Grünflächentypen',
description: 'Erweiterung auf Beete, Stauden und Parks über Bäume hinaus',
title: 'data.roadmapItems.greenSpaceTypes.title',
description: 'data.roadmapItems.greenSpaceTypes.description',
status: 'planned',
},
]
Loading