Skip to content

dhbw-softwareengineering/caesars-gambit

Repository files navigation

🏛️ Caesar's Gambit

CI/CD Java Next.js Docker

Ein modernes, webbasiertes Strategiespiel inspiriert von Risiko, entwickelt mit einer robusten Fullstack-Architektur und einer automatisierten Deployment-Pipeline.

🌐 Live-Demo: caesars-gambit.knoep.de


🚀 Technologie-Stack

Frontend

  • 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

Backend

  • Framework: Spring Boot 3
  • Sprache: Java 25
  • Datenbank: PostgreSQL 15
  • Sicherheit: JWT-basierte Authentifizierung
  • Build-Tool: Maven

🛠️ Entwicklung & Lokaler Start

Voraussetzung: Docker und Docker Compose.

  1. Repository klonen:

    git clone https://github.com/dhbw-softwareengineering/caesars-gambit.git
    cd caesars-gambit
  2. Infrastruktur starten:

    docker compose up --build

🏗️ CI/CD & Deployment

Das Projekt nutzt eine vollautomatisierte CI/CD-Pipeline, um höchste Codequalität und nahtlose Updates zu gewährleisten.

1. GitHub Actions (Continuous Integration & Delivery)

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.

2. Automatisches Deployment (CD)

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 :latest pusht, erkennt Watchtower die Änderung, zieht das neue Image und startet die betroffenen Container (Backend & Frontend) automatisch neu.

Deployment-Übersicht

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

📂 Projektstruktur

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

🛡️ Sicherheit & Umgebung

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.

Releases

No releases published

Packages

 
 
 

Contributors