Klaro Ticketdesk
Ein vollständiges Ticketsystem mit Java-Backend und React-Frontend. Das MVP unterstützt Anmeldung, Selbstregistrierung, Benutzer- und Rechteverwaltung, persönliche Ticketbereiche, Suche, Filter, Statuswechsel, Prioritäten, Zuweisungen und Kommentare.
Stack
- Backend: Java 21, Spring Boot 4.1.1, Spring Web, Spring Data JPA, Validation
- Sicherheit: Spring Security, BCrypt-Passwörter, serverseitige Sessions und CSRF-Schutz
- Datenbank: H2 im lokalen Entwicklungsmodus, PostgreSQL mit Docker Compose
- Frontend: React 19, Vite 8, responsive Oberfläche
- Betrieb: Docker Compose mit PostgreSQL, Java-Backend und Nginx-Frontend
Schnellstart mit Docker
Voraussetzung: Docker mit Compose.
docker compose up --build
Danach öffnen:
- Weboberfläche: http://localhost:3000
- REST-API: http://localhost:8080/api/tickets
- Healthcheck: http://localhost:8080/actuator/health
Die PostgreSQL-Daten bleiben im Docker-Volume ticket_db erhalten.
Demo-Anmeldungen
| Rolle | Passwort | Sichtbarkeit | |
|---|---|---|---|
| Administrator | admin@klaro.de |
demo123 |
Alle Tickets, eigener Bereich und Nutzerverwaltung |
| Support | support@klaro.de |
demo123 |
„Alle Tickets“ und „Mein Bereich“ |
| Benutzer | user@klaro.de |
demo123 |
Nur „Mein Bereich“ mit eigenen Tickets |
Über „Registrieren“ können neue Benutzer selbst ein Konto anlegen. Neue Konten erhalten immer zunächst die Rolle USER. Ein Administrator kann anschließend in der Nutzerverwaltung die Rollen USER, SUPPORT oder ADMIN vergeben. Ticketzugehörigkeit und Rollenprüfung werden im Backend erzwungen.
Lokale Entwicklung
Backend
Voraussetzungen: Java 21 und Maven 3.9 oder neuer.
cd backend
mvn spring-boot:run
Standardmäßig verwendet das Backend eine persistente H2-Dateidatenbank unter backend/data/. Die H2-Konsole ist unter http://localhost:8080/h2-console erreichbar. JDBC-URL: jdbc:h2:file:./data/tickets.
Frontend
Voraussetzung: Node.js 24 oder neuer.
cd frontend
npm ci
npm run dev
Vite leitet /api im Entwicklungsmodus an http://localhost:8080 weiter. Die Oberfläche ist unter http://localhost:5173 erreichbar.
REST-API
| Methode | Pfad | Funktion |
|---|---|---|
POST |
/api/auth/register |
Benutzerkonto erstellen und anmelden |
GET |
/api/tickets?scope=MINE |
Eigene Tickets auflisten |
GET |
/api/tickets?scope=ALL |
Alle Tickets auflisten – Support und Administratoren |
GET |
/api/tickets/{id} |
Ticket inklusive Kommentaren laden |
POST |
/api/tickets |
Ticket erstellen |
PATCH |
/api/tickets/{id} |
Ticket bearbeiten |
POST |
/api/tickets/{id}/comments |
Kommentar hinzufügen |
GET |
/api/users |
Registrierte Benutzer auflisten – nur Administratoren |
PATCH |
/api/users/{id}/role |
Benutzerrolle ändern – nur Administratoren |
Beispiel für ein neues Ticket:
{
"subject": "Zugriff auf Projektordner fehlt",
"description": "Der Ordner ist seit heute nicht mehr erreichbar.",
"category": "IT & Zugriff",
"priority": "HIGH",
"assignee": "Jonas Weber"
}
Gültige Statuswerte: OPEN, IN_PROGRESS, WAITING, RESOLVED, CLOSED.
Gültige Prioritäten: LOW, MEDIUM, HIGH, URGENT.
Tests und Builds
cd backend && mvn test
cd frontend && npm run build
Nächste sinnvolle Ausbaustufen
- E-Mail-Benachrichtigungen und SLA-Regeln
- Anhänge, Tags und Wissensdatenbank
- Flyway-Migrationen statt automatischer Schema-Aktualisierung
- Audit-Log, Reporting und Export