Volle Mindflux-App ins Deploy-Repo übernehmen

Ersetzt das Hello-World-Gerüst durch die vollständige Anwendung
(com.example.mindflux: 64 Klassen, Thymeleaf-Templates, Static-Assets,
Flyway V1–V6). Deploy-Infrastruktur (.gitea, Dockerfile) bleibt erhalten.

- pom: volle Abhängigkeiten (Security, Thymeleaf, JPA, Flyway), Spring Boot 3.4.4 / Java 17
- docker-compose: SPRING_DATASOURCE_* unverändert; App lauscht auf 8080
  (nginx -> mindflux:8080); Uploads-Volume; Admin-Passwörter via Gitea-Secrets
- Workflow: Deploy-Step injiziert MINDFLUX_ADMIN*_PASSWORD aus Secrets
- .dockerignore ergänzt; Hello-World (com.mindflux) und Test-Datei 'main' entfernt

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
AliceDarkest
2026-06-26 14:51:30 +02:00
parent f3309c1574
commit 9022961762
185 changed files with 22772 additions and 142 deletions
@@ -0,0 +1,67 @@
<!DOCTYPE html>
<html lang="de" data-theme="dark" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MindMatch – Mindflux</title>
<link rel="stylesheet" href="/css/theme.css">
<script src="/js/theme.js"></script>
<link rel="stylesheet" href="/css/mindmatch.css?v=4">
</head>
<body class="mm-body">
<!-- Feste Viewport-Höhe, kein Scrollen: Kopf + Leiste oben, Brett füllt den Rest. -->
<div class="mm-shell">
<header class="mm-header">
<a href="/dashboard" class="mm-back">⟵ Dashboard</a>
<h1 class="mm-title">MindMatch</h1>
<div class="mm-header-tools">
<button type="button" class="mf-theme"></button>
<a href="/logout" class="mm-logout">Logout</a>
</div>
</header>
<!-- Kompakte Leiste: Steuerung links, Werte rechts -->
<div class="mm-bar">
<div class="mm-bar-group">
<label class="mm-field">
<span>Deck</span>
<select id="mm-deck"></select>
</label>
<button type="button" id="mm-new" class="mm-btn">Neues Spiel</button>
<button type="button" id="mm-cancel" class="mm-btn mm-btn-cancel" hidden>Spiel abbrechen</button>
</div>
<div class="mm-bar-group mm-hud" aria-live="polite">
<span class="mm-stat">Züge <b id="mm-moves">0</b></span>
<span class="mm-stat">Zeit <b id="mm-time">0:00</b></span>
<span class="mm-stat">Paare <b id="mm-pairs">0 / 0</b></span>
<span class="mm-stat">Bestwert <b id="mm-best">–</b></span>
</div>
</div>
<!-- Spielfeld: füllt den verbleibenden Platz, kein Scrollen -->
<main class="mm-stage">
<section id="mm-board" class="mm-board" aria-label="Spielfeld"></section>
</main>
</div>
<!-- Ergebnis-Overlay -->
<div id="mm-result" class="mm-result" hidden>
<div class="mm-result-card">
<h2 id="mm-result-title">Geschafft! 🎉</h2>
<p id="mm-result-stars" class="mm-stars"></p>
<p class="mm-result-score">Score: <strong id="mm-result-score">0</strong></p>
<p id="mm-result-detail" class="mm-result-detail"></p>
<p id="mm-result-highscore" class="mm-result-highscore" hidden>🏆 Neuer Bestwert!</p>
<div class="mm-result-actions">
<button type="button" id="mm-again" class="mm-btn">Nochmal</button>
<a href="/dashboard" class="mm-btn mm-btn-secondary">Zurück zum Dashboard</a>
</div>
</div>
</div>
<script src="/js/mindmatch.js?v=3" defer></script>
</body>
</html>