Ein modernes, webbasiertes Strategiespiel inspiriert von Risiko, entwickelt mit einer robusten Fullstack-Architektur und einer automatisierten Deployment-Pipeline.
🌐 Live-Demo: caesars-gambit.knoep.de
- Framework: Next.js 16 (App Router)
- Sprache: TypeScript
- Styling: TailwindCSS
- State Management: React Query (TanStack Query)
- Kommunikation: REST API & SSE (Server-Sent Events) für Echtzeit-Updates
- Framework: Spring Boot 3
- Sprache: Java 25
- Datenbank: PostgreSQL 15
- Sicherheit: JWT-basierte Authentifizierung
- Build-Tool: Maven
Voraussetzung: Docker und Docker Compose.
-
Repository klonen:
git clone https://github.com/dhbw-softwareengineering/caesars-gambit.git cd caesars-gambit -
Infrastruktur starten:
docker compose up --build
- Frontend: http://localhost:3000
- Backend API: http://localhost:8080
- Adminer (DB Management): http://localhost:8081
Das Projekt nutzt eine vollautomatisierte CI/CD-Pipeline, um höchste Codequalität und nahtlose Updates zu gewährleisten.
Bei jedem Push auf den main-Branch löst ein Workflow folgende Schritte aus:
- Linting & Type-Checking: Validierung des Frontend-Codes.
- Testing: Ausführung von Unit- und Integrationstests (JUnit & Vitest).
- Docker Build: Erstellung optimierter Multi-Stage Docker-Images für Frontend und Backend.
- Push to GHCR: Die Images werden in die GitHub Container Registry gepusht.
Die produktive Umgebung auf caesars-gambit.knoep.de wird durch Portainer und Watchtower verwaltet:
- Portainer Stack: Das Deployment basiert auf der
docker-compose.prod.yml, welche die aktuellsten Images aus der GHCR nutzt. - Watchtower: Ein dedizierter Watchtower-Container überwacht die GitHub Container Registry auf neue Image-Versionen.
- Auto-Update: Sobald GitHub Actions ein neues Image mit dem Tag
:latestpusht, erkennt Watchtower die Änderung, zieht das neue Image und startet die betroffenen Container (Backend & Frontend) automatisch neu.
| Komponente | URL | Image |
|---|---|---|
| Frontend | caesars-gambit.knoep.de | ghcr.io/dhbw-softwareengineering/caesars-gambit-frontend:latest |
| Backend API | cg-api.knoep.de | ghcr.io/dhbw-softwareengineering/caesars-gambit-backend:latest |
caesars-gambit/
├── .github/workflows/ # CI/CD Definitionen
├── Backend/ # Spring Boot Anwendung
│ ├── src/ # Java Quellcode & Ressourcen
│ └── dockerfile # Multi-stage JRE Image
├── Frontend/ # Next.js Anwendung
│ ├── app/ # App Router (Seiten & Layouts)
│ ├── components/ # UI & API Komponenten
│ └── dockerfile # Optimierter Standalone Build
├── docker-compose.yml # Lokales Setup
└── docker-compose.prod.yml # Produktions-Konfiguration
Sowohl lokal als auch in Produktion werden sensible Daten über Umgebungsvariablen gesteuert:
JWT_SECRET: Schlüssel für die Token-Signierung.NEXT_PUBLIC_API_URL: Adresse der Backend-API für das Frontend.CORS_ALLOWED_ORIGINS: Erlaubte Origins für den API-Zugriff.
Entwickelt im Rahmen des Software Engineering Moduls an der DHBW.