Files
2026-09-08 10:00:28 +02:00

3.5 KiB
Raw Permalink Blame History

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:

Die PostgreSQL-Daten bleiben im Docker-Volume ticket_db erhalten.

Demo-Anmeldungen

Rolle E-Mail 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