Compare commits

...

14 commits

Author SHA1 Message Date
a296ae147b
Merge pull request 'feat: adjust landing page styles' (!290) from restyle-landing-page into main
Some checks failed
Build docs / build-docs (push) Failing after 16s
Release / Release (push) Successful in 1m18s
Release / Build Backend Image (push) Successful in 31s
Release / Build Frontend Image (push) Successful in 35s
Reviewed-on: #290
Reviewed-by: Jan K9f <jan@kjan.email>
2025-06-04 12:41:31 +00:00
Phan Huy Tran
ed83097b6b feat: open login form when accessing restricted links
All checks were successful
CI / Get Changed Files (pull_request) Successful in 10s
Label PRs based on size / Check PR size (pull_request) Successful in 19s
Claude PR Review / claude-code (pull_request) Successful in 35s
CI / Backend Tests (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Has been skipped
Pull Request Labeler / labeler (pull_request_target) Successful in 14s
CI / Docker backend validation (pull_request) Has been skipped
CI / oxlint (pull_request) Successful in 44s
CI / prettier (pull_request) Successful in 52s
CI / eslint (pull_request) Successful in 1m6s
CI / test-build (pull_request) Successful in 1m31s
CI / Docker frontend validation (pull_request) Successful in 1m15s
2025-06-04 14:27:11 +02:00
Phan Huy Tran
68306f3893 feat: adjust register and login buttons 2025-06-04 13:35:43 +02:00
20076d8fe0
Merge pull request 'chore(deps): update https://git.kjan.de/actions/upload-artifact action to v4' (!289) from renovate/major-github-artifact-actions into main
Some checks failed
Build docs / build-docs (push) Failing after 30s
Reviewed-on: #289
Reviewed-by: Jan-Marlon Leibl <jleibl@proton.me>
2025-06-04 11:08:23 +00:00
0c2a21c218
Merge pull request 'chore(deps): update actions/checkout action to v4' (!288) from renovate/actions-checkout-4.x into main
Some checks failed
Build docs / build-docs (push) Has been cancelled
Reviewed-on: #288
Reviewed-by: Jan-Marlon Leibl <jleibl@proton.me>
2025-06-04 11:07:40 +00:00
Phan Huy Tran
65471d1666 feat: adjust game grid slider 2025-06-04 13:04:45 +02:00
801c60b793
chore(deps): update https://git.kjan.de/actions/upload-artifact action to v4
All checks were successful
CI / Get Changed Files (pull_request) Successful in 13s
Pull Request Labeler / labeler (pull_request_target) Successful in 10s
Label PRs based on size / Check PR size (pull_request) Successful in 22s
Claude PR Review / claude-code (pull_request) Successful in 36s
CI / oxlint (pull_request) Successful in 35s
CI / eslint (pull_request) Successful in 56s
CI / prettier (pull_request) Successful in 47s
CI / Docker frontend validation (pull_request) Successful in 18s
CI / test-build (pull_request) Successful in 1m24s
CI / Docker backend validation (pull_request) Successful in 20s
CI / Checkstyle Main (pull_request) Successful in 1m55s
CI / Backend Tests (pull_request) Successful in 4m25s
2025-06-04 11:02:47 +00:00
feb40e3f79
chore(deps): update actions/checkout action to v4
All checks were successful
CI / Get Changed Files (pull_request) Successful in 11s
Label PRs based on size / Check PR size (pull_request) Successful in 11s
Pull Request Labeler / labeler (pull_request_target) Successful in 5s
Claude PR Review / claude-code (pull_request) Successful in 24s
CI / oxlint (pull_request) Successful in 20s
CI / eslint (pull_request) Successful in 43s
CI / prettier (pull_request) Successful in 47s
CI / Docker frontend validation (pull_request) Successful in 29s
CI / Docker backend validation (pull_request) Successful in 36s
CI / test-build (pull_request) Successful in 1m40s
CI / Checkstyle Main (pull_request) Successful in 2m5s
CI / Backend Tests (pull_request) Successful in 4m22s
2025-06-04 11:02:44 +00:00
761a527ef0
Merge pull request 'docs: add project documentation for Casino Gaming Platform' (!285) from add-project-documentation into main
All checks were successful
Build docs / build-docs (push) Successful in 17s
Reviewed-on: #285
Reviewed-by: Jan K9f <jan@kjan.email>
2025-06-04 10:48:00 +00:00
17774fcdb2 chore: Add pipeline
All checks were successful
CI / Get Changed Files (pull_request) Successful in 10s
Pull Request Labeler / labeler (pull_request_target) Successful in 6s
Label PRs based on size / Check PR size (pull_request) Successful in 13s
Claude PR Review / claude-code (pull_request) Successful in 33s
CI / oxlint (pull_request) Successful in 32s
CI / eslint (pull_request) Successful in 47s
CI / prettier (pull_request) Successful in 48s
CI / Docker frontend validation (pull_request) Successful in 29s
CI / Docker backend validation (pull_request) Successful in 17s
CI / test-build (pull_request) Successful in 1m21s
CI / Checkstyle Main (pull_request) Successful in 1m32s
CI / Backend Tests (pull_request) Successful in 2m18s
2025-06-04 12:28:12 +02:00
790eeeb145
Merge branch 'main' into add-project-documentation
All checks were successful
CI / Get Changed Files (pull_request) Successful in 7s
CI / eslint (pull_request) Has been skipped
CI / Backend Tests (pull_request) Has been skipped
Pull Request Labeler / labeler (pull_request_target) Successful in 5s
CI / oxlint (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Has been skipped
Label PRs based on size / Check PR size (pull_request) Successful in 11s
CI / test-build (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
Claude PR Review / claude-code (pull_request) Successful in 1m30s
2025-06-04 09:58:50 +00:00
0b39eacc33
chore: fix formatting in labeler configuration file
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / eslint (pull_request) Has been skipped
CI / oxlint (pull_request) Has been skipped
Pull Request Labeler / labeler (pull_request_target) Successful in 4s
CI / prettier (pull_request) Has been skipped
CI / Backend Tests (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
Label PRs based on size / Check PR size (pull_request) Successful in 11s
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Has been skipped
Claude PR Review / claude-code (pull_request) Successful in 1m22s
2025-06-04 11:55:51 +02:00
04bdb89a93
chore: update labeler configuration for documentation files
All checks were successful
CI / Get Changed Files (pull_request) Successful in 9s
CI / eslint (pull_request) Has been skipped
CI / oxlint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
Label PRs based on size / Check PR size (pull_request) Successful in 11s
Pull Request Labeler / labeler (pull_request_target) Successful in 6s
CI / Backend Tests (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
Claude PR Review / claude-code (pull_request) Successful in 1m25s
2025-06-04 11:54:41 +02:00
b583eedd75
docs: add project documentation for Casino Gaming Platform
All checks were successful
CI / Get Changed Files (pull_request) Successful in 16s
Pull Request Labeler / labeler (pull_request_target) Successful in 13s
CI / eslint (pull_request) Has been skipped
CI / oxlint (pull_request) Has been skipped
Label PRs based on size / Check PR size (pull_request) Successful in 18s
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Backend Tests (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
Claude PR Review / claude-code (pull_request) Successful in 1m31s
2025-06-04 11:53:43 +02:00
7 changed files with 1480 additions and 72 deletions

View file

@ -12,3 +12,8 @@ ci:
- changed-files:
- any-glob-to-any-file:
- ".gitea/**"
docs:
- changed-files:
- any-glob-to-any-file:
- "docs/**"

28
.gitea/workflows/docs.yml Normal file
View file

@ -0,0 +1,28 @@
name: Build docs
on:
push:
branches: [main]
jobs:
build-docs:
runs-on: ubuntu-latest
container:
image: git.kjan.de/actions/runner-latex:latest
env:
# Edit here with the names of your latex file and directory (can use ".")
DIR: docs
FILE: projektdokumentation.tex
steps:
- name: Checkout
uses: actions/checkout@v4
- name: LaTeX compile
working-directory: ${{ env.DIR }}
run: latexmk -pdf -xelatex ${{ env.FILE }}
- name: Upload artifacts
uses: https://git.kjan.de/actions/upload-artifact@v4
with:
name: Doku
path: docs/projektdokumentation.pdf

File diff suppressed because it is too large Load diff

View file

@ -21,13 +21,7 @@
(click)="showRegisterForm()"
class="w-full sm:w-auto button-primary px-6 sm:px-8 py-3 shadow-lg"
>
Konto erstellen
</button>
<button
(click)="showLoginForm()"
class="w-full sm:w-auto bg-slate-700 text-white hover:bg-slate-600 px-6 sm:px-8 py-3 shadow-lg rounded"
>
Anmelden
Jetzt registrieren
</button>
}
</div>
@ -46,33 +40,63 @@
<div class="game-card-content">
<h3 class="game-heading-sm">Slots</h3>
<p class="game-text">Klassische Spielautomaten</p>
<a
routerLink="game/slots"
class="button-primary w-full py-2 inline-block text-center"
>Jetzt Spielen</a
>
@if (isLoggedIn()) {
<a
routerLink="game/slots"
class="button-primary w-full py-2 inline-block text-center"
>
Jetzt Spielen
</a>
} @else {
<button
(click)="showLoginForm()"
class="button-primary w-full py-2 inline-block text-center"
>
Jetzt Spielen
</button>
}
</div>
</div>
<div class="hidden lg:block card">
<div class="game-card-content">
<h3 class="game-heading-sm">Blackjack</h3>
<p class="game-text">Klassisches Kartenspiel</p>
<a
routerLink="game/blackjack"
class="button-primary w-full py-2 inline-block text-center"
>Jetzt Spielen</a
>
@if (isLoggedIn()) {
<a
routerLink="game/blackjack"
class="button-primary w-full py-2 inline-block text-center"
>
Jetzt Spielen
</a>
} @else {
<button
(click)="showLoginForm()"
class="button-primary w-full py-2 inline-block text-center"
>
Jetzt Spielen
</button>
}
</div>
</div>
<div class="hidden lg:block card">
<div class="game-card-content">
<h3 class="game-heading-sm">Coinflip</h3>
<p class="game-text">Münzwurf</p>
<a
routerLink="game/blackjack"
class="button-primary w-full py-2 inline-block text-center"
>Jetzt Spielen</a
>
@if (isLoggedIn()) {
<a
routerLink="game/coinflip"
class="button-primary w-full py-2 inline-block text-center"
>
Jetzt Spielen
</a>
} @else {
<button
(click)="showLoginForm()"
class="button-primary w-full py-2 inline-block text-center"
>
Jetzt Spielen
</button>
}
</div>
</div>
</div>
@ -82,22 +106,42 @@
<div class="game-card-content">
<h3 class="game-heading-sm">Dice</h3>
<p class="game-text">Würfelspiel</p>
<a
routerLink="/game/dice"
class="button-primary w-full py-2 inline-block text-center"
>Jetzt Spielen</a
>
@if (isLoggedIn()) {
<a
routerLink="game/dice"
class="button-primary w-full py-2 inline-block text-center"
>
Jetzt Spielen
</a>
} @else {
<button
(click)="showLoginForm()"
class="button-primary w-full py-2 inline-block text-center"
>
Jetzt Spielen
</button>
}
</div>
</div>
<div class="hidden lg:block card">
<div class="game-card-content">
<h3 class="game-heading-sm">Lootboxen</h3>
<p class="game-text">Überraschungskisten</p>
<a
routerLink="game/lootboxes"
class="button-primary w-full py-2 inline-block text-center"
>Jetzt Spielen</a
>
@if (isLoggedIn()) {
<a
routerLink="game/lootboxes"
class="button-primary w-full py-2 inline-block text-center"
>
Jetzt Spielen
</a>
} @else {
<button
(click)="showLoginForm()"
class="button-primary w-full py-2 inline-block text-center"
>
Jetzt Spielen
</button>
}
</div>
</div>
</div>

View file

@ -23,15 +23,14 @@ import RecoverPasswordComponent from '../auth/recover-password/recover-password.
})
export class LandingComponent implements OnInit, OnDestroy {
currentSlide = 0;
private autoplayInterval: ReturnType<typeof setInterval> | undefined;
authService: AuthService = inject(AuthService);
route: ActivatedRoute = inject(ActivatedRoute);
showLogin = signal(false);
showRegister = signal(false);
showRecoverPassword = signal(false);
isLoggedIn = signal(this.authService.isLoggedIn());
ngOnInit() {
this.startAutoplay();
document.body.style.overflow = 'auto';
if (this.route.snapshot.queryParamMap.get('login') === 'true') {
this.showLoginForm();
@ -39,7 +38,6 @@ export class LandingComponent implements OnInit, OnDestroy {
}
ngOnDestroy() {
this.stopAutoplay();
document.body.style.overflow = 'auto';
}
@ -73,33 +71,13 @@ export class LandingComponent implements OnInit, OnDestroy {
prevSlide() {
this.currentSlide = this.currentSlide === 0 ? 1 : 0;
this.resetAutoplay();
}
nextSlide() {
this.currentSlide = this.currentSlide === 1 ? 0 : 1;
this.resetAutoplay();
}
goToSlide(index: number) {
this.currentSlide = index;
this.resetAutoplay();
}
private startAutoplay() {
this.autoplayInterval = setInterval(() => {
this.nextSlide();
}, 5000);
}
private stopAutoplay() {
if (this.autoplayInterval) {
clearInterval(this.autoplayInterval);
}
}
private resetAutoplay() {
this.stopAutoplay();
this.startAutoplay();
}
}

View file

@ -10,13 +10,23 @@
</a>
<div class="hidden md:flex items-center space-x-1">
<a
routerLink="/home"
class="flex items-center px-4 py-2 text-white/90 hover:text-white font-medium rounded-lg hover:bg-white/10 transition-colors duration-200"
>
<img class="mr-2 w-4 h-4" src="assets/games.svg" alt="gamess" />
Spiele
</a>
@if (isLoggedIn()) {
<a
routerLink="/home"
class="flex items-center px-4 py-2 text-white/90 hover:text-white font-medium rounded-lg hover:bg-white/10 transition-colors duration-200"
>
<img class="mr-2 w-4 h-4" src="assets/games.svg" alt="gamess" />
Spiele
</a>
} @else {
<button
(click)="showLogin.emit()"
class="flex items-center px-4 py-2 text-white/90 hover:text-white font-medium rounded-lg hover:bg-white/10 transition-colors duration-200"
>
<img class="mr-2 w-4 h-4" src="assets/games.svg" alt="gamess" />
Spiele
</button>
}
</div>
</div>
@ -40,15 +50,7 @@
(click)="showRegister.emit()"
class="flex items-center px-4 py-2 bg-emerald-600 text-white font-medium rounded-lg hover:bg-emerald-500 transition-colors duration-200"
>
<svg class="w-4 h-4 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M18 9v3m0 0v3m0-3h3m-3 0h-3m-2-5a4 4 0 11-8 0 4 4 0 018 0zM3 20a6 6 0 0112 0v1H3v-1z"
/>
</svg>
Registrieren
Jetzt registrieren
</button>
}

View file

@ -52,7 +52,7 @@ a {
}
.slider-grid {
@apply min-w-full grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4;
@apply min-w-full grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4;
}
.welcome-bonus {