⚠️ Hinweis: KanuControl befindet sich aktuell in aktiver Entwicklung und ist noch nicht produktiv einsetzbar.
KanuControl ist eine Webanwendung zur Beantragung, Verwaltung und Abrechnung von Zuschüssen aus dem Kinder-, Jugend- und Freizeitplan (KJFP) des Landessportbundes NRW (LSB NRW).
Die Anwendung richtet sich an:
- Kanuvereine
- Kanuverbände (z. B. KVNRW)
- Geschäftsstellen, die Förderanträge prüfen und abrechnen
Ziel ist es, die heute oft manuellen, fehleranfälligen und papierbasierten Prozesse durch eine strukturierte, digitale Lösung zu ersetzen.
- Anlegen eines Vereins (falls noch nicht vorhanden)
- Anlegen von Personen
- Zuordnung von Personen zu Vereinen (Mitgliedschaften)
- Anlegen einer Jugend-Veranstaltung
- Erfassen der relevanten Eckdaten
- Erzeugung von Antragsformularen (später als PDF)
- Erfassen der Teilnehmer
- Personen werden bei Bedarf automatisch angelegt
- Zuordnung zur Veranstaltung erfolgt direkt
- Pflege von Teilnehmerlisten
- Erfassen von:
- Einnahmen
- Ausgaben
- optional Reisekosten
- Automatische Berechnung relevanter Summen
- Ausgabe der Abrechnungsunterlagen als PDF:
- Deckblatt
- Erhebungsbogen
- Teilnehmerliste
- ggf. Reisekostenübersicht
Hinweis: PDF-Erzeugung ist ein späterer Ausbauschritt. Fokus liegt zunächst auf stabilen Datenmodellen und Prozessen.
KanuControl ist eine Client-Server-Webanwendung.
Browser (React)
|
v
Spring Boot REST API
|
Service Layer
|
Mapper (DTO <-> Entity)
|
Repository (JPA)
|
PostgreSQL (Schema-per-Tenant)
KanuControl ist mandantenfähig (Multi-Tenant) aufgebaut.
- Jeder Verein sieht ausschließlich seine eigenen Daten
- Trennung erfolgt strikt über Schema-per-Tenant
- Tenant-Ermittlung erfolgt über:
- JWT (Keycloak)
- HTTP-Header
- Ein neutrales Default-Schema (kanu) wird ausschließlich für Systemzwecke genutzt
Schemas werden lazy erzeugt.
- Das Baseline-Schema (
kanu) wird ausschließlich über Liquibase verwaltet - Neue Tenant-Schemas werden zur Laufzeit aus dieser Baseline abgeleitet
- Die Struktur der Tenant-Schemas ist damit garantiert identisch
- Schema-Initialisierung erfolgt kontrolliert und idempotent
Database: kanu
├── kanu (System / Default-Schema)
├── ekc_test
│ ├── person
│ ├── verein
│ ├── mitglied
│ └── …
├── tenant_verein_2
│ ├── person
│ ├── verein
│ ├── mitglied
│ └── …
- Das Schema
kanudient als technisches Baseline- und System-Schema - Tenant-Schemas enthalten ausschließlich fachliche Daten
- Änderungen an der Struktur erfolgen immer zuerst im Baseline-Schema
Zur Benutzerverwaltung wird Keycloak eingesetzt.
- Open-Source IAM
- OAuth2 / OpenID Connect
- Rollen- & Rechteverwaltung
- Saubere Trennung von Authentifizierung und Fachlogik
- Mandantenzuordnung über Gruppen / Claims
- Controller-Tests (@WebMvcTest)
- Integrationstests für:
- REST-Endpunkte
- Mandanten-Initialisierung
- Liquibase-Migrationen
- Smoke-Tests für Systemstart & Grundfunktionen
- Baseline-Migrationstests (Liquibase)
- Smoke-Tests für Tenant-Schema-Provisionierung
- Verifikation der Schema-Isolation
- Java 21
- Spring Boot 3.5.10
- Spring Data JPA (Hibernate 6)
- Liquibase
- PostgreSQL
- Maven
- Apache pdfbox V3.02
- Kein Business-Code im Controller
- Kein Datenbankzugriff im Controller
- DTO <-> Entity strikt getrennt
- Zentrale Fehlerbehandlung (@RestControllerAdvice)
- Mandantenlogik strikt außerhalb der Fachlogik
- React
- Vite
- node v22.x
- TypeScript
- Material UI ab V7.x
- VS Code
Das Frontend kommuniziert ausschließlich über die REST-API und enthält keine Businesslogik.
Stand: Release v0.4.0
Status: Core-System funktionsfähig – Übergang zu Business-Features
≈ 70 % bis v1.0
- 🟢 Architektur stabil
- 🟢 Stammdaten vollständig
- 🟢 Veranstaltungen & Teilnehmer nahezu komplett
- 🟡 Import & Datenqualität teilweise
- 🟡 Abrechnung begonnen
- ⚪ Stabilisierung & Produktion offen
Ziel: stabile Architektur & Stammdaten
Status: abgeschlossen
- Spring Boot 3 Basis
- Multi-Tenant (Schema-per-Tenant)
- Keycloak Integration
- Liquibase Migration
- Hibernate Runtime Schema Switching
- Verein CRUD
- Person CRUD
- Mitglied (Join Entity)
- Hauptverein-Logik
- Fachliche Validierungen
- Vereinsverwaltung
- Personenverwaltung
- Mitgliedszuordnung
- CSV Import Personen
- Mapping-Datei
- Dry-Run
- Fehleranzeige
- Upload-Infrastruktur
Ziel: komfortable Bedienung
- Navigation
- Pagination
- Sortierung
- Filter
- Keycloak UX verbessern
- Multipart Handling finalisieren
- Upload Limits
- Global Error Handling verbessern
Ziel: robuste Massendaten
- Upload
- Dry-Run
- Pflichtfeld Validierung
- Fachliche Regeln
- Dublettenprüfung
- Fehlerreport (Zeile + Ursache)
- Person ↔ Mitglied ↔ Verein
- Idempotenter Import
Ziel: Veranstaltungsmanagement vollständig
- CRUD
- Aktiv-Status
- Leiter Domain-Regel
- Join-Entity
- Rollen (L / M)
- Bulk Add / Remove
- Leiter immer Teilnehmer
- Sortierung (Leiter zuerst)
- Teilnehmerverwaltung
- Dual-List Auswahl
- Multi-Select stabil
- SelectAll stabil
- Filter Reset
- Mehrseitig
- Editierbares Formular
- Alter zum Veranstaltungsbeginn
- Header / Footer / Zeitraum
- Checkbox Mapping (JEM/FM/BM)
- Sortierung (Leiter → Verein → Name)
- Dynamischer Dateiname
- Download im FE
- Anmeldeformular PDF
- Abrechnungsdeckblatt PDF
- Erhebungsbogen PDF
Ziel: finanzielle Abwicklung
- Einnahmen
- Ausgaben
- Teilnehmergebühren
- Reisekosten
- Plausibilitätsprüfungen
- Summen & Reports
- Abschlusslogik Veranstaltung
Ziel: vollständige Verwaltungsdokumente
- Formular-basierte PDFs
- Mehrseitig
- Editierbar
- Template-System
- Teilnehmerliste
- Anmeldung
- Erhebungsbogen
- Abrechnung
- Reisekosten
- Performance
- Memory / PDF Optimierung
- Query Optimierung
- Rollen & Rechte
- Audit Logging
- Monitoring
- Backup & Restore
- Deployment
- Dokumentation
- Abrechnung starten
- Anmeldung PDF
- Erhebungsbogen PDF
- Import Validierung
- Fehlerreport CSV
- Alle Dokumente fertig
- Template System
- PDF Engine stabilisieren
- Stabilität
- Performance
- Security
- Produktivbetrieb
KanuControl ist jetzt ein funktionsfähiges Fachsystem.
Die nächsten Releases bringen Vollständigkeit, Stabilität und Produktionsreife.
KanuControl ist von Beginn an als Open-Source-Projekt gedacht.
Ziele:
- Nachvollziehbarer Code
- Klare Struktur
- Einsteigerfreundlich
- Fachlich verständlich (auch für Nicht-Informatiker)
Contributions sind willkommen:
- Bugfixes
- Refactorings
- Tests
- Dokumentation
- Feature-Vorschläge
Contribution-Guidelines folgen in einer späteren Version.
This project is licensed under the Apache License 2.0 – see the LICENSE file for details.
The name KanuControl, the KanuControl logo, and the KanuControl icon are not covered by the Apache License and remain the exclusive property of the project owner.
You may use, modify, and distribute the software under the terms of the Apache 2.0 license, but you may not use the KanuControl name, logo, or icon in redistributed or modified versions without explicit permission.
If you distribute a modified version of this software, you must remove all KanuControl branding.
For trademark permission requests contact: chris.schog@ekc-home.de
KanuControl entsteht aus der Praxis für die Praxis – mit dem Ziel, ehrenamtliche Arbeit zu entlasten und Verwaltungsprozesse einfacher, transparenter und sicherer zu machen.