Compare commits

...

981 commits

Author SHA1 Message Date
038c6e145a
Merge pull request 'docs/preperation' (!323) from docs/preperation into main
All checks were successful
Build docs / build-docs (push) Successful in 16s
Reviewed-on: #323
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
2025-06-13 08:09:39 +00:00
cbddfa0552
chore: remove Marktuntersuchung.tex file from documentation
All checks were successful
CI / Get Changed Files (pull_request) Successful in 26s
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
Claude PR Review / claude-code (pull_request) Successful in 34s
Pull Request Labeler / labeler (pull_request_target) Successful in 6s
CI / Backend Tests (pull_request) Has been skipped
Label PRs based on size / Check PR size (pull_request) Successful in 12s
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
CI / Playwright (pull_request) Has been skipped
Build docs / build-docs (pull_request) Successful in 2m13s
2025-06-12 23:42:39 +02:00
b4df89b7b0
chore: remove MarketingMix documentation file 2025-06-12 23:42:26 +02:00
Phan Huy Tran
6807d51e0c docs: add space
All checks were successful
CI / Get Changed Files (pull_request) Successful in 11s
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 18s
Claude PR Review / claude-code (pull_request) Successful in 33s
Pull Request Labeler / labeler (pull_request_target) Successful in 7s
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
CI / Playwright (pull_request) Has been skipped
Build docs / build-docs (pull_request) Successful in 3m34s
2025-06-12 23:41:26 +02:00
bd6dc99f30
Merge branch 'main' into docs/preperation
All checks were successful
CI / Get Changed Files (pull_request) Successful in 10s
CI / eslint (pull_request) Has been skipped
CI / oxlint (pull_request) Has been skipped
Pull Request Labeler / labeler (pull_request_target) Successful in 5s
CI / prettier (pull_request) Has been skipped
CI / Backend Tests (pull_request) Has been skipped
CI / test-build (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
CI / Playwright (pull_request) Has been skipped
Label PRs based on size / Check PR size (pull_request) Successful in 21s
Claude PR Review / claude-code (pull_request) Successful in 41s
Build docs / build-docs (pull_request) Successful in 5m56s
2025-06-12 21:20:02 +00:00
lziemke
ed4753c300 finished my shit
All checks were successful
CI / Get Changed Files (pull_request) Successful in 12s
Pull Request Labeler / labeler (pull_request_target) Successful in 6s
CI / Backend Tests (pull_request) Has been skipped
CI / eslint (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Has been skipped
CI / oxlint (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
Label PRs based on size / Check PR size (pull_request) Successful in 16s
CI / Docker backend validation (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Playwright (pull_request) Has been skipped
Claude PR Review / claude-code (pull_request) Successful in 28s
2025-06-12 23:17:04 +02:00
4748196210
Merge pull request 'docs: update project introduction with new revenue model' (!322) from task/update-introduction into main
All checks were successful
Build docs / build-docs (push) Successful in 5m16s
Reviewed-on: #322
Reviewed-by: Jan K9f <jan@kjan.email>
2025-06-12 20:44:09 +00:00
7e861896dc
docs: update project introduction with new revenue model
All checks were successful
CI / Get Changed Files (pull_request) Successful in 10s
CI / eslint (pull_request) Has been skipped
Pull Request Labeler / labeler (pull_request_target) Successful in 3s
CI / oxlint (pull_request) Has been skipped
CI / Backend Tests (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / Playwright (pull_request) Has been skipped
Claude PR Review / claude-code (pull_request) Successful in 34s
Label PRs based on size / Check PR size (pull_request) Successful in 21s
Build docs / build-docs (pull_request) Successful in 5m59s
2025-06-12 22:43:16 +02:00
18010b28d1
Merge pull request 'docs: update introduction section of project documentation' (!321) from task/update-introduction into main
All checks were successful
Build docs / build-docs (push) Successful in 15s
Reviewed-on: #321
Reviewed-by: Jan K9f <jan@kjan.email>
2025-06-12 20:23:47 +00:00
075fd97ae8
docs: update introduction section of project documentation
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
Pull Request Labeler / labeler (pull_request_target) Successful in 9s
CI / Backend Tests (pull_request) Has been skipped
Label PRs based on size / Check PR size (pull_request) Successful in 14s
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
CI / Playwright (pull_request) Has been skipped
Claude PR Review / claude-code (pull_request) Successful in 24s
Build docs / build-docs (pull_request) Successful in 23s
2025-06-12 22:22:04 +02:00
5cedbcb004
Merge pull request 'docs: Update project documentation for casino platform' (!313) from task/update-introduction into main
All checks were successful
Build docs / build-docs (push) Successful in 4m48s
Reviewed-on: #313
Reviewed-by: Phan Huy Tran <ptran@noreply.localhost>
2025-06-12 20:03:05 +00:00
7296cfead8
Merge pull request 'chore: Add back acro's' (!320) from docs/acro into main
Some checks failed
Build docs / build-docs (push) Has been cancelled
Reviewed-on: #320
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
2025-06-12 20:02:21 +00:00
7714957a62 chore: Add back acro's
All checks were successful
CI / Get Changed Files (pull_request) Successful in 36s
Label PRs based on size / Check PR size (pull_request) Successful in 33s
CI / Backend Tests (pull_request) Has been skipped
CI / eslint (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Has been skipped
CI / oxlint (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Playwright (pull_request) Has been skipped
Pull Request Labeler / labeler (pull_request_target) Successful in 14s
Claude PR Review / claude-code (pull_request) Successful in 5m51s
Build docs / build-docs (pull_request) Successful in 6m19s
2025-06-12 22:00:49 +02:00
c3f2fcd431
Merge pull request 'actually use images in auth.tex' (!319) from docs/actually-fucking-use-images into main
All checks were successful
Build docs / build-docs (push) Successful in 15s
Reviewed-on: #319
2025-06-12 18:55:54 +00:00
07bb68d864
do stuff
Some checks failed
CI / Get Changed Files (pull_request) Successful in 9s
CI / eslint (pull_request) Has been skipped
Pull Request Labeler / labeler (pull_request_target) Successful in 5s
CI / oxlint (pull_request) Has been skipped
CI / Backend Tests (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / Playwright (pull_request) Has been skipped
Build docs / build-docs (pull_request) Successful in 26s
Claude PR Review / claude-code (pull_request) Failing after 2m16s
Label PRs based on size / Check PR size (pull_request) Successful in 16s
2025-06-12 20:54:17 +02:00
eb04c03208
Merge pull request 'docs: clean up, remove clearpages' (!318) from c4-diagrams into main
All checks were successful
Build docs / build-docs (push) Successful in 15s
Reviewed-on: #318
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
2025-06-12 18:41:44 +00:00
Phan Huy Tran
01b99c04c6 docs: clean up, remove clearpages
All checks were successful
CI / Get Changed Files (pull_request) Successful in 14s
CI / eslint (pull_request) Has been skipped
Label PRs based on size / Check PR size (pull_request) Successful in 13s
CI / oxlint (pull_request) Has been skipped
CI / Backend Tests (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
Pull Request Labeler / labeler (pull_request_target) Successful in 8s
CI / Docker frontend validation (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / Playwright (pull_request) Has been skipped
Build docs / build-docs (pull_request) Successful in 26s
Claude PR Review / claude-code (pull_request) Successful in 4m32s
2025-06-12 20:27:23 +02:00
7221422d3b
Merge pull request 'chore: Remove old Anhang and add some code to the docs' (!317) from docs/code into main
All checks were successful
Build docs / build-docs (push) Successful in 16s
Reviewed-on: #317
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
2025-06-12 15:33:54 +00:00
d916fe4942 Merge main
All checks were successful
CI / Get Changed Files (pull_request) Successful in 9s
CI / eslint (pull_request) Has been skipped
Pull Request Labeler / labeler (pull_request_target) Successful in 4s
CI / Backend Tests (pull_request) Has been skipped
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
CI / test-build (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 16s
CI / Playwright (pull_request) Has been skipped
Build docs / build-docs (pull_request) Successful in 26s
Claude PR Review / claude-code (pull_request) Successful in 1m21s
2025-06-12 15:36:04 +02:00
9e7fbd1c1e
Merge pull request 'docs/random-ahh-png' (!316) from docs/random-ahh-png into main
All checks were successful
Build docs / build-docs (push) Successful in 16s
Reviewed-on: #316
Reviewed-by: Jan K9f <jan@kjan.email>
2025-06-12 13:31:53 +00:00
0e9e729fdf chore: Remove old Anhang and add some code to the docs
All checks were successful
Build docs / build-docs (pull_request) Successful in 29s
Label PRs based on size / Check PR size (pull_request) Successful in 27s
CI / Get Changed Files (pull_request) Successful in 34s
CI / Backend Tests (pull_request) Has been skipped
CI / eslint (pull_request) Has been skipped
Pull Request Labeler / labeler (pull_request_target) Successful in 4s
CI / Checkstyle Main (pull_request) Has been skipped
CI / oxlint (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Playwright (pull_request) Has been skipped
Claude PR Review / claude-code (pull_request) Successful in 1m41s
2025-06-12 15:29:33 +02:00
dfcf02c1b1
random ahh shit
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
Pull Request Labeler / labeler (pull_request_target) Successful in 5s
CI / prettier (pull_request) Has been skipped
CI / Backend Tests (pull_request) Has been skipped
CI / test-build (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
CI / Playwright (pull_request) Has been skipped
Label PRs based on size / Check PR size (pull_request) Successful in 16s
Build docs / build-docs (pull_request) Successful in 26s
Claude PR Review / claude-code (pull_request) Successful in 1m6s
2025-06-12 15:17:47 +02:00
Constantin Simonis
9c856f02cd
add random ahh image 2025-06-12 15:15:28 +02:00
c87a0593b3
Merge pull request 'chore: Fix labels for docs' (!315) from docs/labels into main
All checks were successful
Build docs / build-docs (push) Successful in 20s
Reviewed-on: #315
2025-06-12 07:30:44 +00:00
9ebf0d0036 chore: Fix labels for docs
All checks were successful
CI / Get Changed Files (pull_request) Successful in 20s
CI / eslint (pull_request) Has been skipped
Label PRs based on size / Check PR size (pull_request) Successful in 18s
CI / Backend Tests (pull_request) Has been skipped
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
Build docs / build-docs (pull_request) Successful in 25s
CI / test-build (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / Playwright (pull_request) Has been skipped
Pull Request Labeler / labeler (pull_request_target) Successful in 13s
Claude PR Review / claude-code (pull_request) Successful in 1m10s
2025-06-12 09:27:30 +02:00
ab6265b2cd
Merge pull request 'chore: Remove old docs and fix pipeline' (!314) from docs/ci into main
All checks were successful
Build docs / build-docs (push) Successful in 29s
Reviewed-on: #314
Reviewed-by: Jan-Marlon Leibl <jleibl@proton.me>
2025-06-12 07:25:26 +00:00
d9309cb735 chore: Remove old docs and fix pipeline
Some checks failed
CI / Get Changed Files (pull_request) Successful in 41s
CI / oxlint (pull_request) Successful in 29s
CI / eslint (pull_request) Successful in 40s
CI / prettier (pull_request) Successful in 40s
CI / test-build (pull_request) Successful in 1m0s
Build docs / build-docs (pull_request) Successful in 1m20s
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 2m38s
CI / Checkstyle Main (pull_request) Successful in 59s
CI / Docker frontend validation (pull_request) Successful in 17s
CI / Docker backend validation (pull_request) Successful in 17s
CI / Backend Tests (pull_request) Successful in 2m19s
CI / Playwright (pull_request) Failing after 1m52s
2025-06-12 08:31:42 +02:00
9bd5a15480
Merge pull request 'fix(deps): update dependency org.springdoc:springdoc-openapi-starter-webmvc-ui to v2.8.9' (!300) from renovate/dependencies-(major-and-minor) into main
All checks were successful
Build docs / build-docs (push) Successful in 18s
Release / Release (push) Successful in 1m21s
Release / Build Frontend Image (push) Successful in 2m23s
Release / Build Backend Image (push) Successful in 3m58s
Reviewed-on: #300
Reviewed-by: Jan-Marlon Leibl <jleibl@proton.me>
2025-06-12 06:27:53 +00:00
ce3af8915d
Merge pull request 'fix(deps): update all non-major dependencies' (!293) from renovate/all-minor-patch into main
Some checks failed
Release / Build Backend Image (push) Blocked by required conditions
Release / Build Frontend Image (push) Blocked by required conditions
Build docs / build-docs (push) Has been cancelled
Release / Release (push) Has been cancelled
Reviewed-on: #293
2025-06-12 06:27:37 +00:00
684cec7d56
Merge pull request 'chore(deps): update devdependencies (non-major)' (!298) from renovate/devdependencies-(non-major) into main
Some checks failed
Release / Build Backend Image (push) Blocked by required conditions
Release / Build Frontend Image (push) Blocked by required conditions
Build docs / build-docs (push) Has been cancelled
Release / Release (push) Has been cancelled
Reviewed-on: #298
2025-06-12 06:27:29 +00:00
ee9dbb7577
docs: Update project documentation for casino platform
All checks were successful
CI / Get Changed Files (pull_request) Successful in 12s
CI / Backend Tests (pull_request) Has been skipped
CI / eslint (pull_request) Has been skipped
Label PRs based on size / Check PR size (pull_request) Successful in 13s
CI / Checkstyle Main (pull_request) Has been skipped
CI / oxlint (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / Playwright (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
Pull Request Labeler / labeler (pull_request_target) Successful in 23s
Claude PR Review / claude-code (pull_request) Successful in 1m23s
2025-06-12 07:21:28 +02:00
lziemke
3dfe318500 docs: add preperation docs> 2025-06-11 20:45:30 +02:00
a7b5c42558
chore(deps): update devdependencies (non-major)
All checks were successful
CI / Get Changed Files (pull_request) Successful in 14s
Label PRs based on size / Check PR size (pull_request) Successful in 29s
Claude PR Review / claude-code (pull_request) Successful in 36s
Pull Request Labeler / labeler (pull_request_target) Successful in 11s
CI / oxlint (pull_request) Successful in 46s
CI / prettier (pull_request) Successful in 52s
CI / eslint (pull_request) Successful in 1m8s
CI / Backend Tests (pull_request) Has been skipped
CI / test-build (pull_request) Successful in 1m25s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Successful in 17s
CI / Playwright (pull_request) Successful in 2m24s
2025-06-11 13:03:20 +00:00
9207c070fd
fix(deps): update dependency org.springdoc:springdoc-openapi-starter-webmvc-ui to v2.8.9
All checks were successful
Pull Request Labeler / labeler (pull_request_target) Successful in 6s
CI / Get Changed Files (pull_request) Successful in 16s
CI / eslint (pull_request) Has been skipped
Label PRs based on size / Check PR size (pull_request) Successful in 16s
CI / oxlint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
Claude PR Review / claude-code (pull_request) Successful in 22s
CI / test-build (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Successful in 20s
CI / Playwright (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 1m47s
CI / Backend Tests (pull_request) Successful in 3m17s
2025-06-11 13:03:03 +00:00
4bcc6b45b4
fix(deps): update all non-major dependencies
All checks were successful
CI / Get Changed Files (pull_request) Successful in 18s
Pull Request Labeler / labeler (pull_request_target) Successful in 12s
Label PRs based on size / Check PR size (pull_request) Successful in 15s
CI / eslint (pull_request) Has been skipped
CI / oxlint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
Claude PR Review / claude-code (pull_request) Successful in 24s
CI / test-build (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Has been skipped
CI / Playwright (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Successful in 21s
CI / Checkstyle Main (pull_request) Successful in 2m13s
CI / Backend Tests (pull_request) Successful in 3m25s
2025-06-11 13:02:58 +00:00
f754a6fc72
Merge pull request 'chore: Add some more docs idc' (!312) from docs/idc into main
All checks were successful
Build docs / build-docs (push) Successful in 12s
Reviewed-on: #312
2025-06-11 12:54:20 +00:00
96aca3b293 chore: Add some more docs idc
All checks were successful
CI / Get Changed Files (pull_request) Successful in 9s
CI / Backend Tests (pull_request) Has been skipped
CI / eslint (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Has been skipped
CI / oxlint (pull_request) Has been skipped
Pull Request Labeler / labeler (pull_request_target) Successful in 9s
CI / Docker frontend validation (pull_request) Has been skipped
Label PRs based on size / Check PR size (pull_request) Successful in 12s
CI / prettier (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Playwright (pull_request) Has been skipped
Claude PR Review / claude-code (pull_request) Successful in 1m13s
2025-06-11 14:51:20 +02:00
a411234714
Merge pull request 'docs: add deployment docs' (!311) from docs/deployment into main
All checks were successful
Build docs / build-docs (push) Successful in 12s
Reviewed-on: #311
Reviewed-by: Phan Huy Tran <ptran@noreply.localhost>
2025-06-11 12:22:27 +00:00
52a3e6aadc
docs: add deployment docs
All checks were successful
CI / Get Changed Files (pull_request) Successful in 9s
CI / eslint (pull_request) Has been skipped
CI / Backend Tests (pull_request) Has been skipped
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
CI / test-build (pull_request) Has been skipped
Pull Request Labeler / labeler (pull_request_target) Successful in 11s
CI / Docker backend validation (pull_request) Has been skipped
Label PRs based on size / Check PR size (pull_request) Successful in 15s
CI / Playwright (pull_request) Has been skipped
Claude PR Review / claude-code (pull_request) Successful in 1m30s
2025-06-11 14:21:09 +02:00
5ea3ff73a0
Merge pull request 'chore: Add docs for coinflip' (!309) from docs/coinflip into main
All checks were successful
Build docs / build-docs (push) Successful in 12s
Reviewed-on: #309
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
Reviewed-by: Jan-Marlon Leibl <jleibl@proton.me>
2025-06-11 12:19:21 +00:00
050c272226 chore: Add docs for coinflip
All checks were successful
CI / Get Changed Files (pull_request) Successful in 10s
CI / eslint (pull_request) Has been skipped
CI / Backend Tests (pull_request) Has been skipped
CI / oxlint (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
Pull Request Labeler / labeler (pull_request_target) Successful in 10s
CI / Docker frontend validation (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / Playwright (pull_request) Has been skipped
Label PRs based on size / Check PR size (pull_request) Successful in 10s
Claude PR Review / claude-code (pull_request) Successful in 1m15s
2025-06-11 14:18:28 +02:00
75deee3f9f
Merge pull request 'docs: add slots docs' (!310) from docs-slots into main
All checks were successful
Build docs / build-docs (push) Successful in 12s
Reviewed-on: #310
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
2025-06-11 12:15:44 +00:00
Phan Huy Tran
4af605ef96 docs: add slots docs
All checks were successful
CI / Get Changed Files (pull_request) Successful in 9s
CI / Backend Tests (pull_request) Has been skipped
CI / eslint (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Has been skipped
CI / oxlint (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
Pull Request Labeler / labeler (pull_request_target) Successful in 11s
CI / Docker backend validation (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 15s
CI / Playwright (pull_request) Has been skipped
Claude PR Review / claude-code (pull_request) Successful in 1m37s
2025-06-11 14:14:33 +02:00
6737eb9e4a
Merge pull request 'docs: Add Auth Docs' (!307) from docs/auth into main
All checks were successful
Build docs / build-docs (push) Successful in 14s
Reviewed-on: #307
Reviewed-by: Phan Huy Tran <ptran@noreply.localhost>
2025-06-11 12:02:25 +00:00
4619f787f0
add pdf to gitignore
Some checks failed
Claude PR Review / claude-code (pull_request) Successful in 26s
Pull Request Labeler / labeler (pull_request_target) Successful in 22s
CI / Get Changed Files (pull_request) Successful in 34s
Label PRs based on size / Check PR size (pull_request) Successful in 35s
CI / Backend Tests (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Has been skipped
CI / oxlint (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Playwright (pull_request) Has been skipped
CI / eslint (pull_request) Failing after 13m51s
2025-06-11 13:58:26 +02:00
3ca0b5a3c4
docs: Add API and JWT acronyms to documentation 2025-06-11 13:58:25 +02:00
7e30e191b4
Merge pull request 'docs: add dice docs' (!308) from docs-dice into main
All checks were successful
Build docs / build-docs (push) Successful in 12s
Reviewed-on: #308
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
2025-06-11 11:57:03 +00:00
Phan Huy Tran
140bd44d66 chore: rebase
All checks were successful
Pull Request Labeler / labeler (pull_request_target) Successful in 4s
CI / Get Changed Files (pull_request) Successful in 13s
CI / Backend Tests (pull_request) Has been skipped
CI / eslint (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Has been skipped
CI / oxlint (pull_request) Has been skipped
CI / Docker frontend validation (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 15s
CI / Docker backend validation (pull_request) Has been skipped
CI / Playwright (pull_request) Has been skipped
Claude PR Review / claude-code (pull_request) Successful in 27s
2025-06-11 13:55:31 +02:00
Phan Huy Tran
1d6ac261e0 docs: add dice docs 2025-06-11 13:54:50 +02:00
9deb92ad13
Merge pull request 'chore: Add Project-Architecture' (!306) from docs/architecture into main
All checks were successful
Build docs / build-docs (push) Successful in 13s
Reviewed-on: #306
Reviewed-by: Phan Huy Tran <ptran@noreply.localhost>
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
2025-06-11 11:53:10 +00:00
0345df3a30 chore: Add Project-Architecture
All checks were successful
Pull Request Labeler / labeler (pull_request_target) Successful in 8s
Label PRs based on size / Check PR size (pull_request) Successful in 16s
Claude PR Review / claude-code (pull_request) Successful in 1m13s
CI / Get Changed Files (pull_request) Successful in 13s
CI / eslint (pull_request) Has been skipped
CI / oxlint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / Backend Tests (pull_request) Has been skipped
CI / test-build (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
CI / Playwright (pull_request) Has been skipped
2025-06-11 13:49:14 +02:00
5bd3f554e2
Merge pull request 'chore: Add CI section to docs' (!305) from docs/CI into main
All checks were successful
Build docs / build-docs (push) Successful in 14s
Reviewed-on: #305
Reviewed-by: Phan Huy Tran <ptran@noreply.localhost>
2025-06-11 11:25:21 +00:00
59bb910f05 chore: Add CI section to docs
All checks were successful
CI / Get Changed Files (pull_request) Successful in 10s
CI / Backend Tests (pull_request) Has been skipped
CI / eslint (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Has been skipped
Pull Request Labeler / labeler (pull_request_target) Successful in 8s
CI / oxlint (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
Label PRs based on size / Check PR size (pull_request) Successful in 13s
CI / Docker backend validation (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Playwright (pull_request) Has been skipped
Claude PR Review / claude-code (pull_request) Successful in 1m29s
2025-06-11 13:22:15 +02:00
e5155c072f
Merge pull request 'docs: replace logos with hitec logo' (!302) from logo into main
All checks were successful
Build docs / build-docs (push) Successful in 13s
Reviewed-on: #302
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
2025-06-11 10:55:17 +00:00
Phan Huy Tran
922c95c212 docs: add logo to deckblatt
All checks were successful
Pull Request Labeler / labeler (pull_request_target) Successful in 17s
Label PRs based on size / Check PR size (pull_request) Successful in 30s
CI / Get Changed Files (pull_request) Successful in 34s
CI / eslint (pull_request) Has been skipped
CI / oxlint (pull_request) Has been skipped
CI / Playwright (pull_request) Has been skipped
Claude PR Review / claude-code (pull_request) Successful in 1m47s
CI / Backend Tests (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
CI / test-build (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
2025-06-11 12:45:21 +02:00
Phan Huy Tran
c5b44f3f29 docs: replace logo 2025-06-11 12:41:05 +02:00
fad280104d
Merge pull request 'docs: add docs' (!301) from docs into main
All checks were successful
Build docs / build-docs (push) Successful in 27s
Reviewed-on: #301
Reviewed-by: Jan K9f <jan@kjan.email>
2025-06-11 10:28:04 +00:00
Phan Huy Tran
9cb813bf41 docs: add docs
All checks were successful
CI / Get Changed Files (pull_request) Successful in 30s
Pull Request Labeler / labeler (pull_request_target) Successful in 15s
CI / Backend Tests (pull_request) Has been skipped
Label PRs based on size / Check PR size (pull_request) Successful in 29s
CI / eslint (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Has been skipped
CI / oxlint (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Playwright (pull_request) Has been skipped
Claude PR Review / claude-code (pull_request) Successful in 1m42s
2025-06-11 12:24:18 +02:00
56763952c0
Merge pull request 'chore(deps): update dependency angular-eslint to v20' (!299) from renovate/major-angular-eslint-monorepo into main
All checks were successful
Build docs / build-docs (push) Successful in 26s
Release / Release (push) Successful in 1m29s
Release / Build Frontend Image (push) Successful in 29s
Release / Build Backend Image (push) Successful in 1m41s
Reviewed-on: #299
2025-06-10 11:18:23 +00:00
94eaf98250 fix: Remove constructor injection
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
Pull Request Labeler / labeler (pull_request_target) Successful in 5s
CI / Backend Tests (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Has been skipped
Label PRs based on size / Check PR size (pull_request) Successful in 14s
CI / Docker backend validation (pull_request) Has been skipped
CI / oxlint (pull_request) Successful in 23s
CI / eslint (pull_request) Successful in 27s
CI / prettier (pull_request) Successful in 26s
CI / Docker frontend validation (pull_request) Successful in 46s
CI / test-build (pull_request) Successful in 52s
Claude PR Review / claude-code (pull_request) Successful in 1m14s
CI / Playwright (pull_request) Successful in 2m10s
2025-06-10 13:15:10 +02:00
45fe90237b
chore(deps): update dependency angular-eslint to v20
Some checks failed
CI / Get Changed Files (pull_request) Successful in 10s
CI / Backend Tests (pull_request) Has been skipped
Pull Request Labeler / labeler (pull_request_target) Successful in 8s
CI / Checkstyle Main (pull_request) Has been skipped
Label PRs based on size / Check PR size (pull_request) Successful in 11s
CI / Docker backend validation (pull_request) Has been skipped
Claude PR Review / claude-code (pull_request) Successful in 22s
CI / oxlint (pull_request) Successful in 30s
CI / eslint (pull_request) Failing after 32s
CI / prettier (pull_request) Successful in 33s
CI / Docker frontend validation (pull_request) Successful in 56s
CI / test-build (pull_request) Successful in 51s
CI / Playwright (pull_request) Failing after 2m55s
2025-06-06 16:02:11 +00:00
739c4f610a
Merge pull request 'chore: Add some tests' (!283) from playwright into main
All checks were successful
Build docs / build-docs (push) Successful in 13s
Release / Release (push) Successful in 44s
Release / Build Frontend Image (push) Successful in 1m35s
Release / Build Backend Image (push) Successful in 2m0s
Reviewed-on: #283
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
2025-06-06 11:59:11 +00:00
9717e5c43e
Merge pull request 'fix: Fix docs building' (!296) from fix-docs-2 into main
All checks were successful
Build docs / build-docs (push) Successful in 25s
Reviewed-on: #296
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
2025-06-06 11:58:30 +00:00
cef0ca2a73
Merge pull request 'chore(deps): update actions/checkout action to v4' (!295) from renovate/actions-checkout-4.x into main
Some checks failed
Build docs / build-docs (push) Failing after 22s
Reviewed-on: #295
Reviewed-by: Jan K9f <jan@kjan.email>
2025-06-06 11:33:38 +00:00
0429406383 fix: Fix docs building
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
Pull Request Labeler / labeler (pull_request_target) Successful in 6s
Label PRs based on size / Check PR size (pull_request) Successful in 9s
Claude PR Review / claude-code (pull_request) Successful in 30s
CI / Docker frontend validation (pull_request) Successful in 24s
CI / oxlint (pull_request) Successful in 34s
CI / prettier (pull_request) Successful in 39s
CI / eslint (pull_request) Successful in 43s
CI / Docker backend validation (pull_request) Successful in 24s
CI / test-build (pull_request) Successful in 54s
CI / Checkstyle Main (pull_request) Successful in 1m36s
CI / Backend Tests (pull_request) Successful in 2m20s
2025-06-06 13:32:40 +02:00
332f9d1ce1
chore(deps): update actions/checkout action to v4
All checks were successful
CI / Get Changed Files (pull_request) Successful in 9s
Pull Request Labeler / labeler (pull_request_target) Successful in 5s
Label PRs based on size / Check PR size (pull_request) Successful in 11s
Claude PR Review / claude-code (pull_request) Successful in 23s
CI / oxlint (pull_request) Successful in 36s
CI / eslint (pull_request) Successful in 46s
CI / prettier (pull_request) Successful in 47s
CI / test-build (pull_request) Successful in 1m27s
CI / Docker frontend validation (pull_request) Successful in 19s
CI / Checkstyle Main (pull_request) Successful in 1m36s
CI / Docker backend validation (pull_request) Successful in 15s
CI / Backend Tests (pull_request) Successful in 3m3s
2025-06-06 08:02:55 +00:00
922d48e1c0
Merge pull request 'fix: Fix docs bc v4 doesnt work' (!294) from fix-docs into main
Some checks failed
Build docs / build-docs (push) Failing after 25s
Reviewed-on: #294
2025-06-06 07:36:04 +00:00
b376307272 fix: Fix docs bc v4 doesnt work
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
Pull Request Labeler / labeler (pull_request_target) Successful in 7s
Label PRs based on size / Check PR size (pull_request) Successful in 15s
Claude PR Review / claude-code (pull_request) Successful in 27s
CI / oxlint (pull_request) Successful in 30s
CI / eslint (pull_request) Successful in 43s
CI / prettier (pull_request) Successful in 48s
CI / test-build (pull_request) Successful in 1m30s
CI / Docker frontend validation (pull_request) Successful in 1m31s
CI / Checkstyle Main (pull_request) Successful in 2m6s
CI / Docker backend validation (pull_request) Successful in 1m55s
CI / Backend Tests (pull_request) Successful in 2m34s
2025-06-06 07:17:12 +02:00
111c6c2a64 fix: Rename variable back
All checks were successful
CI / Get Changed Files (pull_request) Successful in 12s
Label PRs based on size / Check PR size (pull_request) Successful in 14s
Pull Request Labeler / labeler (pull_request_target) Successful in 17s
Claude PR Review / claude-code (pull_request) Successful in 28s
CI / Docker frontend validation (pull_request) Successful in 26s
CI / oxlint (pull_request) Successful in 1m29s
CI / eslint (pull_request) Successful in 1m31s
CI / prettier (pull_request) Successful in 1m36s
CI / test-build (pull_request) Successful in 1m44s
CI / Docker backend validation (pull_request) Successful in 1m43s
CI / Backend Tests (pull_request) Successful in 4m37s
CI / Checkstyle Main (pull_request) Successful in 4m37s
CI / Playwright (pull_request) Successful in 4m53s
2025-06-06 07:09:33 +02:00
e828efdfa7 chore: Add some tests
All checks were successful
Pull Request Labeler / labeler (pull_request_target) Successful in 5s
CI / Get Changed Files (pull_request) Successful in 11s
Label PRs based on size / Check PR size (pull_request) Successful in 11s
Claude PR Review / claude-code (pull_request) Successful in 33s
CI / eslint (pull_request) Successful in 40s
CI / oxlint (pull_request) Successful in 46s
CI / prettier (pull_request) Successful in 50s
CI / Docker backend validation (pull_request) Successful in 34s
CI / Docker frontend validation (pull_request) Successful in 1m27s
CI / test-build (pull_request) Successful in 1m32s
CI / Checkstyle Main (pull_request) Successful in 1m43s
CI / Backend Tests (pull_request) Successful in 2m31s
CI / Playwright (pull_request) Successful in 2m18s
2025-06-05 13:16:53 +02:00
971519f99c
Merge pull request 'fix: fix transcation history loading infinitely (CAS-84)' (!291) from bugfix/CAS-84 into main
Some checks failed
Build docs / build-docs (push) Failing after 10s
Release / Release (push) Successful in 1m2s
Release / Build Frontend Image (push) Successful in 28s
Release / Build Backend Image (push) Successful in 37s
Reviewed-on: #291
Reviewed-by: Phan Huy Tran <ptran@noreply.localhost>
2025-06-04 12:47:30 +00:00
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
Constantin Simonis
e4173e3ade
feat: add transaction handling on user signup process
All checks were successful
CI / Get Changed Files (pull_request) Successful in 11s
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
Claude PR Review / claude-code (pull_request) Successful in 27s
Pull Request Labeler / labeler (pull_request_target) Successful in 6s
CI / Docker frontend validation (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 1m29s
CI / Docker backend validation (pull_request) Successful in 1m49s
CI / Backend Tests (pull_request) Successful in 2m59s
2025-06-04 14:38:18 +02: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
e02f7357f0
Merge pull request 'feat: adjust spacings in the navbar' (!287) from noonereadsthisanywayitodesntreallymatter into main
All checks were successful
Release / Release (push) Successful in 1m22s
Release / Build Backend Image (push) Successful in 26s
Release / Build Frontend Image (push) Successful in 32s
Reviewed-on: #287
Reviewed-by: Jan K9f <jan@kjan.email>
2025-06-04 10:41:54 +00:00
Phan Huy Tran
db93ec790e feat: adjust spacings in the navbar
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / Backend Tests (pull_request) Has been skipped
Pull Request Labeler / labeler (pull_request_target) Successful in 7s
CI / Checkstyle Main (pull_request) Has been skipped
Label PRs based on size / Check PR size (pull_request) Successful in 11s
CI / Docker backend validation (pull_request) Has been skipped
Claude PR Review / claude-code (pull_request) Successful in 27s
CI / oxlint (pull_request) Successful in 23s
CI / eslint (pull_request) Successful in 32s
CI / prettier (pull_request) Successful in 31s
CI / Docker frontend validation (pull_request) Successful in 43s
CI / test-build (pull_request) Successful in 45s
2025-06-04 12:39:34 +02:00
4644e5cecc
Merge pull request 'does it even matter?' (!286) from number-omit into main
All checks were successful
Release / Release (push) Successful in 1m2s
Release / Build Backend Image (push) Successful in 38s
Release / Build Frontend Image (push) Successful in 47s
Reviewed-on: #286
Reviewed-by: Jan K9f <jan@kjan.email>
2025-06-04 10:35:09 +00:00
Phan Huy Tran
e35a30a606 refactor: remove unnecessary code
All checks were successful
CI / Get Changed Files (pull_request) Successful in 21s
Label PRs based on size / Check PR size (pull_request) Successful in 22s
Claude PR Review / claude-code (pull_request) Successful in 36s
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 10s
CI / Docker backend validation (pull_request) Has been skipped
CI / oxlint (pull_request) Successful in 38s
CI / eslint (pull_request) Successful in 58s
CI / prettier (pull_request) Successful in 47s
CI / Docker frontend validation (pull_request) Successful in 58s
CI / test-build (pull_request) Successful in 57s
2025-06-04 12:32:44 +02:00
Phan Huy Tran
81ec7122ea fix: display real number 2025-06-04 12:31:05 +02: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
43e321c0d6
Merge pull request 'feat: restyle navbar' (!284) from homepage into main
All checks were successful
Release / Release (push) Successful in 1m6s
Release / Build Backend Image (push) Successful in 28s
Release / Build Frontend Image (push) Successful in 34s
Reviewed-on: #284
Reviewed-by: Jan K9f <jan@kjan.email>
2025-06-04 10:23:17 +00:00
Phan Huy Tran
23710a0553 style: fix pipelines
All checks were successful
CI / Get Changed Files (pull_request) Successful in 15s
Label PRs based on size / Check PR size (pull_request) Successful in 13s
Pull Request Labeler / labeler (pull_request_target) Successful in 11s
Claude PR Review / claude-code (pull_request) Successful in 36s
CI / Backend Tests (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Has been skipped
CI / oxlint (pull_request) Successful in 30s
CI / eslint (pull_request) Successful in 37s
CI / prettier (pull_request) Successful in 36s
CI / Docker backend validation (pull_request) Has been skipped
CI / test-build (pull_request) Successful in 51s
CI / Docker frontend validation (pull_request) Successful in 42s
2025-06-04 12:15:24 +02:00
Phan Huy Tran
4331484d48 feat: adjust icons
Some checks failed
CI / Get Changed Files (pull_request) Successful in 14s
CI / oxlint (pull_request) Successful in 33s
Claude PR Review / claude-code (pull_request) Successful in 41s
Label PRs based on size / Check PR size (pull_request) Successful in 18s
CI / prettier (pull_request) Failing after 45s
Pull Request Labeler / labeler (pull_request_target) Successful in 10s
CI / eslint (pull_request) Successful in 54s
CI / test-build (pull_request) Successful in 1m11s
CI / Backend Tests (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Successful in 50s
2025-06-04 12:15:07 +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
Phan Huy Tran
1e77beb7b6 style: fix pipelines
All checks were successful
CI / Get Changed Files (pull_request) Successful in 17s
Pull Request Labeler / labeler (pull_request_target) Successful in 6s
Label PRs based on size / Check PR size (pull_request) Successful in 19s
CI / oxlint (pull_request) Successful in 26s
CI / eslint (pull_request) Successful in 36s
CI / prettier (pull_request) Successful in 35s
Claude PR Review / claude-code (pull_request) Successful in 1m13s
CI / test-build (pull_request) Successful in 37s
CI / Backend Tests (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Successful in 24s
2025-06-04 11:53:41 +02:00
Phan Huy Tran
d4fd5e068d feat: restyle navbar 2025-06-04 11:53:41 +02:00
Phan Huy Tran
06f2ae5d86 feat: improve game grid 2025-06-04 11:53:41 +02:00
Phan Huy Tran
b2f80dedf2 feat: adjust game grid 2025-06-04 11:53:41 +02:00
551f5bcf2e
Merge pull request 'fix: adjust inconsistencies in the frontend' (!282) from frontend-fixes into main
All checks were successful
Release / Release (push) Successful in 1m1s
Release / Build Backend Image (push) Successful in 25s
Release / Build Frontend Image (push) Successful in 30s
Reviewed-on: #282
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
Reviewed-by: Jan K9f <jan@kjan.email>
2025-06-04 09:04:17 +00:00
Phan Huy Tran
d388f2a786 style: die of cancer prettier
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
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 7s
CI / Docker backend validation (pull_request) Has been skipped
Label PRs based on size / Check PR size (pull_request) Successful in 14s
CI / oxlint (pull_request) Successful in 24s
CI / prettier (pull_request) Successful in 29s
CI / eslint (pull_request) Successful in 34s
CI / Docker frontend validation (pull_request) Successful in 41s
CI / test-build (pull_request) Successful in 46s
Claude PR Review / claude-code (pull_request) Successful in 1m11s
2025-06-04 10:51:56 +02:00
Phan Huy Tran
a4e12272e5 fix: remove apple icon import
Some checks failed
CI / Get Changed Files (pull_request) Successful in 10s
Label PRs based on size / Check PR size (pull_request) Successful in 13s
CI / Backend Tests (pull_request) Has been skipped
Pull Request Labeler / labeler (pull_request_target) Successful in 7s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / oxlint (pull_request) Successful in 30s
CI / eslint (pull_request) Successful in 39s
CI / prettier (pull_request) Failing after 35s
CI / Docker frontend validation (pull_request) Successful in 44s
CI / test-build (pull_request) Successful in 49s
Claude PR Review / claude-code (pull_request) Successful in 1m14s
2025-06-04 10:30:38 +02:00
Phan Huy Tran
bd031e8658 fix: adjust inconsistencies in the frontend
Some checks failed
CI / Get Changed Files (pull_request) Successful in 8s
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 8s
CI / Docker backend validation (pull_request) Has been skipped
Label PRs based on size / Check PR size (pull_request) Successful in 14s
CI / oxlint (pull_request) Failing after 26s
CI / prettier (pull_request) Failing after 35s
CI / eslint (pull_request) Failing after 39s
CI / Docker frontend validation (pull_request) Successful in 49s
CI / test-build (pull_request) Successful in 57s
Claude PR Review / claude-code (pull_request) Successful in 1m13s
2025-06-04 10:29:30 +02:00
9a7049d6ab
Merge pull request 'fix: lootbox routing' (!281) from fix-lootbox-routing into main
All checks were successful
Release / Release (push) Successful in 58s
Release / Build Backend Image (push) Successful in 24s
Release / Build Frontend Image (push) Successful in 29s
Reviewed-on: #281
Reviewed-by: Jan K9f <jan@kjan.email>
2025-06-04 08:14:22 +00:00
Phan Huy Tran
75508d9ebb fix: lootbox routing
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
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 8s
CI / Docker backend validation (pull_request) Has been skipped
Label PRs based on size / Check PR size (pull_request) Successful in 12s
CI / eslint (pull_request) Successful in 29s
CI / oxlint (pull_request) Successful in 39s
CI / prettier (pull_request) Successful in 37s
CI / test-build (pull_request) Successful in 46s
CI / Docker frontend validation (pull_request) Successful in 51s
Claude PR Review / claude-code (pull_request) Successful in 1m9s
2025-06-04 10:12:15 +02:00
c6ae4a1056
Merge pull request 'fix(deps): update dependencies (major and minor)' (!219) from renovate/dependencies-(major-and-minor) into main
All checks were successful
Release / Release (push) Successful in 1m0s
Release / Build Frontend Image (push) Successful in 30s
Release / Build Backend Image (push) Successful in 35s
Reviewed-on: #219
Reviewed-by: Jan K9f <jan@kjan.email>
2025-06-04 08:04:01 +00:00
234442dccd fix: Remove missing method
Some checks failed
CI / Get Changed Files (pull_request) Successful in 11s
CI / eslint (pull_request) Has been skipped
Pull Request Labeler / labeler (pull_request_target) Successful in 10s
CI / oxlint (pull_request) Has been skipped
Label PRs based on size / Check PR size (pull_request) Successful in 14s
CI / Docker frontend validation (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Successful in 1m31s
CI / Checkstyle Main (pull_request) Successful in 1m45s
CI / Backend Tests (pull_request) Successful in 2m9s
Claude PR Review / claude-code (pull_request) Has been cancelled
2025-06-04 10:00:10 +02:00
fc60cfb3d5
Merge pull request 'chore: Update some README's' (!280) from update-readmes into main
All checks were successful
Release / Release (push) Successful in 1m3s
Release / Build Backend Image (push) Successful in 25s
Release / Build Frontend Image (push) Successful in 26s
Reviewed-on: #280
2025-06-04 07:57:19 +00:00
5d600a4b21 chore: Update some README's
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 24s
Pull Request Labeler / labeler (pull_request_target) Successful in 10s
CI / oxlint (pull_request) Successful in 40s
CI / prettier (pull_request) Successful in 46s
CI / eslint (pull_request) Successful in 50s
CI / test-build (pull_request) Successful in 1m17s
Claude PR Review / claude-code (pull_request) Successful in 1m29s
CI / Docker frontend validation (pull_request) Successful in 15s
CI / Docker backend validation (pull_request) Successful in 14s
CI / Backend Tests (pull_request) Successful in 2m21s
CI / Checkstyle Main (pull_request) Successful in 1m49s
2025-06-04 09:53:29 +02:00
feb67c708e
Merge pull request 'fix: invalid pipe argument' (!279) from fix-transaction-date into main
All checks were successful
Release / Release (push) Successful in 59s
Release / Build Backend Image (push) Successful in 25s
Release / Build Frontend Image (push) Successful in 28s
Reviewed-on: #279
Reviewed-by: Jan K9f <jan@kjan.email>
2025-06-04 07:35:42 +00:00
Phan Huy Tran
19cec9d7db fix: invalid pipe argument
All checks were successful
Label PRs based on size / Check PR size (pull_request) Successful in 31s
Pull Request Labeler / labeler (pull_request_target) Successful in 18s
CI / Get Changed Files (pull_request) Successful in 35s
CI / Backend Tests (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / oxlint (pull_request) Successful in 21s
CI / eslint (pull_request) Successful in 29s
CI / prettier (pull_request) Successful in 29s
Claude PR Review / claude-code (pull_request) Successful in 1m23s
CI / test-build (pull_request) Successful in 44s
CI / Docker frontend validation (pull_request) Successful in 46s
2025-06-04 09:32:46 +02:00
15e8cf02f7
fix(deps): update dependencies (major and minor)
Some checks failed
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 5s
Label PRs based on size / Check PR size (pull_request) Successful in 10s
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
Claude PR Review / claude-code (pull_request) Successful in 22s
CI / Docker frontend validation (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Failing after 1m8s
CI / Backend Tests (pull_request) Failing after 1m52s
CI / Checkstyle Main (pull_request) Failing after 1m50s
2025-06-04 07:02:33 +00:00
f01554c9c9
Merge pull request 'chore: exterminate plinko' (!277) from remove-plinko into main
All checks were successful
Release / Release (push) Successful in 1m1s
Release / Build Backend Image (push) Successful in 31s
Release / Build Frontend Image (push) Successful in 34s
Reviewed-on: #277
Reviewed-by: Jan K9f <jan@kjan.email>
2025-06-04 07:02:01 +00:00
565420103f
Merge branch 'main' into remove-plinko
All checks were successful
CI / Get Changed Files (pull_request) Successful in 16s
Label PRs based on size / Check PR size (pull_request) Successful in 17s
CI / Backend Tests (pull_request) Has been skipped
Pull Request Labeler / labeler (pull_request_target) Successful in 6s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
Claude PR Review / claude-code (pull_request) Successful in 27s
CI / oxlint (pull_request) Successful in 31s
CI / eslint (pull_request) Successful in 44s
CI / prettier (pull_request) Successful in 49s
CI / test-build (pull_request) Successful in 58s
CI / Docker frontend validation (pull_request) Successful in 1m38s
2025-06-04 06:59:51 +00:00
07c4e00e33
Merge pull request 'fix: Install eslint' (!278) from install-eslint into main
All checks were successful
Release / Release (push) Successful in 1m29s
Release / Build Frontend Image (push) Successful in 34s
Release / Build Backend Image (push) Successful in 37s
Reviewed-on: #278
2025-06-04 06:59:45 +00:00
c89024a277 fix: Install eslint
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
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 7s
CI / Docker backend validation (pull_request) Has been skipped
Label PRs based on size / Check PR size (pull_request) Successful in 14s
Claude PR Review / claude-code (pull_request) Successful in 27s
CI / oxlint (pull_request) Successful in 21s
CI / eslint (pull_request) Successful in 31s
CI / prettier (pull_request) Successful in 32s
CI / test-build (pull_request) Successful in 42s
CI / Docker frontend validation (pull_request) Successful in 46s
2025-06-04 08:57:07 +02:00
Phan Huy Tran
7b66aac33d chore: exterminate plinko
Some checks failed
CI / Get Changed Files (pull_request) Successful in 9s
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 backend validation (pull_request) Has been skipped
Claude PR Review / claude-code (pull_request) Successful in 36s
CI / eslint (pull_request) Failing after 35s
CI / oxlint (pull_request) Successful in 39s
CI / prettier (pull_request) Successful in 41s
CI / Docker frontend validation (pull_request) Successful in 51s
CI / test-build (pull_request) Successful in 38s
2025-06-04 08:53:01 +02:00
202c5fb93f
Merge pull request 'chore: Renovate angular 20' (!276) from renovate/combine-some into main
All checks were successful
Release / Release (push) Successful in 1m1s
Release / Build Backend Image (push) Successful in 24s
Release / Build Frontend Image (push) Successful in 29s
Reviewed-on: #276
2025-06-04 06:45:05 +00:00
3acd131b20 chore: Update README.md
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
Pull Request Labeler / labeler (pull_request_target) Successful in 5s
CI / Backend Tests (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Has been skipped
Label PRs based on size / Check PR size (pull_request) Successful in 11s
CI / Docker backend validation (pull_request) Has been skipped
Claude PR Review / claude-code (pull_request) Successful in 23s
CI / oxlint (pull_request) Successful in 18s
CI / Docker frontend validation (pull_request) Successful in 17s
CI / eslint (pull_request) Successful in 24s
CI / prettier (pull_request) Successful in 29s
CI / test-build (pull_request) Successful in 36s
2025-06-04 08:41:24 +02:00
52c61c5b18 fix: Replace zone detection with the new one
All checks were successful
CI / Get Changed Files (pull_request) Successful in 7s
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 7s
CI / Docker backend validation (pull_request) Has been skipped
Label PRs based on size / Check PR size (pull_request) Successful in 13s
Claude PR Review / claude-code (pull_request) Successful in 26s
CI / oxlint (pull_request) Successful in 25s
CI / prettier (pull_request) Successful in 30s
CI / eslint (pull_request) Successful in 34s
CI / Docker frontend validation (pull_request) Successful in 39s
CI / test-build (pull_request) Successful in 47s
2025-06-04 08:38:19 +02:00
b66d39cbac chore: Recreate lock file and do angular update
Some checks failed
CI / Get Changed Files (pull_request) Successful in 8s
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 8s
CI / Docker backend validation (pull_request) Has been skipped
Label PRs based on size / Check PR size (pull_request) Successful in 15s
Claude PR Review / claude-code (pull_request) Successful in 27s
CI / oxlint (pull_request) Successful in 23s
CI / eslint (pull_request) Successful in 31s
CI / prettier (pull_request) Successful in 30s
CI / Docker frontend validation (pull_request) Failing after 41s
CI / test-build (pull_request) Failing after 44s
2025-06-04 08:35:55 +02:00
16b052c0f3 chore: Combine some renovate pr's
Some checks failed
CI / Get Changed Files (pull_request) Successful in 12s
CI / Backend Tests (pull_request) Has been skipped
Label PRs based on size / Check PR size (pull_request) Successful in 12s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
Pull Request Labeler / labeler (pull_request_target) Successful in 17s
Claude PR Review / claude-code (pull_request) Successful in 49s
CI / prettier (pull_request) Successful in 53s
CI / oxlint (pull_request) Successful in 1m7s
CI / eslint (pull_request) Successful in 1m10s
CI / test-build (pull_request) Failing after 1m8s
CI / Docker frontend validation (pull_request) Failing after 1m18s
2025-06-04 08:30:26 +02:00
99d25c0413
Merge pull request 'chore(deps): update dependency angular-eslint to v19.7.1' (!272) from renovate/devdependencies-(non-major) into main
All checks were successful
Release / Release (push) Successful in 1m53s
Release / Build Backend Image (push) Successful in 28s
Release / Build Frontend Image (push) Successful in 31s
Reviewed-on: #272
Reviewed-by: Jan K9f <jan@kjan.email>
2025-06-04 06:23:43 +00:00
d68e907061
fix(deps): update dependencies (major and minor)
Some checks failed
CI / Get Changed Files (pull_request) Successful in 19s
Pull Request Labeler / labeler (pull_request_target) Successful in 9s
Label PRs based on size / Check PR size (pull_request) Successful in 19s
Claude PR Review / claude-code (pull_request) Successful in 42s
CI / eslint (pull_request) Successful in 1m1s
CI / oxlint (pull_request) Successful in 42s
CI / prettier (pull_request) Successful in 57s
CI / test-build (pull_request) Failing after 52s
CI / Backend Tests (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Failing after 23s
2025-06-03 08:47:30 +00:00
fb41de95b8
chore(deps): update dependency @angular/compiler-cli to v20
Some checks failed
CI / Get Changed Files (pull_request) Successful in 17s
Pull Request Labeler / labeler (pull_request_target) Successful in 9s
Label PRs based on size / Check PR size (pull_request) Successful in 18s
Claude PR Review / claude-code (pull_request) Successful in 31s
CI / eslint (pull_request) Successful in 46s
CI / oxlint (pull_request) Successful in 31s
CI / prettier (pull_request) Successful in 44s
CI / test-build (pull_request) Failing after 1m1s
CI / Backend Tests (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Failing after 32s
2025-06-03 08:47:23 +00:00
02f87c177d
chore(deps): update angular-cli monorepo to v20
Some checks failed
CI / Get Changed Files (pull_request) Successful in 11s
Pull Request Labeler / labeler (pull_request_target) Successful in 6s
Label PRs based on size / Check PR size (pull_request) Successful in 16s
Claude PR Review / claude-code (pull_request) Successful in 29s
CI / oxlint (pull_request) Successful in 41s
CI / eslint (pull_request) Successful in 49s
CI / prettier (pull_request) Successful in 42s
CI / test-build (pull_request) Failing after 46s
CI / Backend Tests (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Failing after 1m5s
CI / Docker backend validation (pull_request) Has been skipped
2025-06-03 08:47:17 +00:00
13ddb79d88
chore(deps): update dependency angular-eslint to v19.7.1
All checks were successful
CI / Get Changed Files (pull_request) Successful in 9s
Pull Request Labeler / labeler (pull_request_target) Successful in 5s
CI / Backend Tests (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Has been skipped
Label PRs based on size / Check PR size (pull_request) Successful in 12s
CI / Docker backend validation (pull_request) Has been skipped
Claude PR Review / claude-code (pull_request) Successful in 22s
CI / Docker frontend validation (pull_request) Successful in 22s
CI / oxlint (pull_request) Successful in 25s
CI / eslint (pull_request) Successful in 30s
CI / prettier (pull_request) Successful in 28s
CI / test-build (pull_request) Successful in 32s
2025-06-03 08:46:55 +00:00
4c7bff1b31
Merge pull request 'chore: Add ci label to labeler' (!267) from add-ci-label into main
Some checks failed
CI / Get Changed Files (pull_request) Failing after 20s
Pull Request Labeler / labeler (pull_request_target) Successful in 14s
Label PRs based on size / Check PR size (pull_request) Failing after 18s
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
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) Failing after 33s
Reviewed-on: #267
2025-06-03 08:44:45 +00:00
c9a1601962
Merge branch 'main' into add-ci-label
All checks were successful
CI / Get Changed Files (pull_request) Successful in 10s
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 / Backend Tests (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
Label PRs based on size / Check PR size (pull_request) Successful in 13s
CI / Checkstyle Main (pull_request) Has been skipped
CI / test-build (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 23s
2025-06-03 08:41:52 +00:00
8e4a694b24
Merge pull request 'chore: Add sizes for prs' (!266) from pr-size into main
Reviewed-on: #266
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
2025-06-03 08:41:45 +00:00
fa96cf8941 chore: Add sizes for prs
All checks were successful
Claude PR Review / claude-code (pull_request) Successful in 34s
CI / Get Changed Files (pull_request) Successful in 8s
Pull Request Labeler / labeler (pull_request_target) Successful in 4s
Label PRs based on size / Check PR size (pull_request) Successful in 9s
CI / oxlint (pull_request) Successful in 21s
CI / eslint (pull_request) Successful in 32s
CI / Docker frontend validation (pull_request) Successful in 32s
CI / Docker backend validation (pull_request) Successful in 31s
CI / prettier (pull_request) Successful in 46s
CI / test-build (pull_request) Successful in 1m12s
CI / Checkstyle Main (pull_request) Successful in 1m21s
CI / Backend Tests (pull_request) Successful in 1m59s
2025-06-03 10:35:29 +02:00
698370fd9b chore: Add ci label to labeler
All checks were successful
CI / Get Changed Files (pull_request) Successful in 11s
CI / eslint (pull_request) Has been skipped
CI / oxlint (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
Pull Request Labeler / labeler (pull_request_target) Successful in 6s
CI / test-build (pull_request) Has been skipped
CI / Backend Tests (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
Claude PR Review / claude-code (pull_request) Successful in 29s
2025-06-03 10:31:50 +02:00
684c25b562
Merge pull request 'chore: Add labeler' (!264) from labeler into main
All checks were successful
CI / Get Changed Files (pull_request) Successful in 14s
CI / eslint (pull_request) Has been skipped
CI / oxlint (pull_request) Has been skipped
Pull Request Labeler / labeler (pull_request_target) Successful in 5s
CI / Backend Tests (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Has been skipped
Claude PR Review / claude-code (pull_request) Successful in 28s
Reviewed-on: #264
Reviewed-by: Jan-Marlon Leibl <jleibl@proton.me>
2025-06-03 07:23:14 +00:00
674ef6e8b0
Merge pull request 'chore(deps): update devdependencies (non-major)' (!252) from renovate/devdependencies-(non-major) into main
All checks were successful
Release / Release (push) Successful in 1m16s
Release / Build Backend Image (push) Successful in 25s
Release / Build Frontend Image (push) Successful in 27s
Reviewed-on: #252
Reviewed-by: Jan K9f <jan@kjan.email>
2025-06-03 06:24:53 +00:00
780a360f03
Merge branch 'main' into labeler
All checks were successful
CI / Get Changed Files (pull_request) Successful in 12s
Claude PR Review / claude-code (pull_request) Successful in 29s
CI / oxlint (pull_request) Successful in 36s
CI / eslint (pull_request) Successful in 42s
CI / Docker frontend validation (pull_request) Successful in 27s
CI / Docker backend validation (pull_request) Successful in 25s
CI / prettier (pull_request) Successful in 47s
CI / Checkstyle Main (pull_request) Successful in 1m17s
CI / test-build (pull_request) Successful in 55s
CI / Backend Tests (pull_request) Successful in 1m56s
2025-06-03 06:16:45 +00:00
ac6c00245b
Merge pull request 'chore(deps): update https://git.kjan.de/actions/claude-pr-review action to v1.0.4' (!265) from renovate/all-minor-patch into main
Reviewed-on: #265
Reviewed-by: Jan K9f <jan@kjan.email>
2025-06-03 06:15:51 +00:00
75735a0c12
chore(deps): update devdependencies (non-major)
All checks were successful
CI / Get Changed Files (pull_request) Successful in 14s
Claude PR Review / claude-code (pull_request) Successful in 34s
CI / oxlint (pull_request) Successful in 27s
CI / eslint (pull_request) Successful in 39s
CI / prettier (pull_request) Successful in 27s
CI / test-build (pull_request) Successful in 38s
CI / Backend Tests (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Successful in 22s
CI / Docker backend validation (pull_request) Has been skipped
2025-06-03 06:08:46 +00:00
ac5c9ea912
chore(deps): update https://git.kjan.de/actions/claude-pr-review action to v1.0.4
All checks were successful
CI / Get Changed Files (pull_request) Successful in 11s
Claude PR Review / claude-code (pull_request) Successful in 29s
CI / oxlint (pull_request) Successful in 49s
CI / eslint (pull_request) Successful in 51s
CI / prettier (pull_request) Successful in 56s
CI / test-build (pull_request) Successful in 1m6s
CI / Docker frontend validation (pull_request) Successful in 2m3s
CI / Docker backend validation (pull_request) Successful in 2m0s
CI / Backend Tests (pull_request) Successful in 6m37s
CI / Checkstyle Main (pull_request) Successful in 6m42s
2025-06-03 06:08:37 +00:00
5d75109dcf
Merge pull request 'chore: Use claude action' (!251) from claude-action into main
Reviewed-on: #251
2025-06-03 06:06:52 +00:00
186a865231 chore: Add labeler
Some checks failed
CI / Get Changed Files (pull_request) Successful in 8s
Claude PR Review / claude-code (pull_request) Failing after 22s
CI / eslint (pull_request) Successful in 32s
CI / Docker frontend validation (pull_request) Successful in 32s
CI / Docker backend validation (pull_request) Successful in 23s
CI / oxlint (pull_request) Successful in 38s
CI / prettier (pull_request) Successful in 42s
CI / test-build (pull_request) Successful in 1m9s
CI / Checkstyle Main (pull_request) Successful in 1m17s
CI / Backend Tests (pull_request) Successful in 2m1s
2025-06-02 14:56:09 +02:00
39feba7d1d
Merge pull request 'fix: Hourly' (!262) from improve-stale into main
Reviewed-on: #262
2025-06-02 12:38:54 +00:00
9639525ddd fix: Hourly
All checks were successful
CI / Get Changed Files (pull_request) Successful in 10s
CI / oxlint (pull_request) Successful in 43s
CI / eslint (pull_request) Successful in 49s
CI / prettier (pull_request) Successful in 49s
Claude PR Review / claude-code (pull_request) Successful in 1m5s
CI / Docker frontend validation (pull_request) Successful in 16s
CI / test-build (pull_request) Successful in 1m23s
CI / Docker backend validation (pull_request) Successful in 19s
CI / Checkstyle Main (pull_request) Successful in 1m1s
CI / Backend Tests (pull_request) Successful in 2m26s
2025-06-02 14:33:06 +02:00
b25f76dde8
Merge pull request 'test: dice service' (!237) from refactor-blackjack into main
All checks were successful
Release / Release (push) Successful in 1m1s
Release / Build Frontend Image (push) Successful in 30s
Release / Build Backend Image (push) Successful in 1m1s
CI / Get Changed Files (pull_request) Successful in 8s
CI / eslint (pull_request) Has been skipped
CI / Backend Tests (pull_request) Has been skipped
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
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 1m11s
Reviewed-on: #237
Reviewed-by: Jan K9f <jan@kjan.email>
2025-06-02 12:16:43 +00:00
aa7cf00ebb
Merge pull request 'chore: Add stale pipeline' (!253) from stale into main
Reviewed-on: #253
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
2025-06-02 12:15:30 +00:00
bd1d8f8339 chore: Add stale pipeline
All checks were successful
CI / Get Changed Files (pull_request) Successful in 10s
CI / oxlint (pull_request) Successful in 28s
CI / eslint (pull_request) Successful in 39s
CI / prettier (pull_request) Successful in 41s
Claude PR Review / claude-code (pull_request) Successful in 1m5s
CI / Docker frontend validation (pull_request) Successful in 17s
CI / test-build (pull_request) Successful in 1m17s
CI / Docker backend validation (pull_request) Successful in 16s
CI / Checkstyle Main (pull_request) Successful in 1m19s
CI / Backend Tests (pull_request) Successful in 2m15s
2025-06-02 14:13:37 +02:00
65975fe4f8 chore: Use action
All checks were successful
CI / Get Changed Files (pull_request) Successful in 9s
CI / oxlint (pull_request) Successful in 33s
CI / eslint (pull_request) Successful in 42s
CI / prettier (pull_request) Successful in 43s
Claude PR Review / claude-code (pull_request) Successful in 1m26s
CI / Docker frontend validation (pull_request) Successful in 18s
CI / Checkstyle Main (pull_request) Successful in 1m27s
CI / Docker backend validation (pull_request) Successful in 16s
CI / test-build (pull_request) Successful in 1m5s
CI / Backend Tests (pull_request) Successful in 2m23s
2025-06-02 09:04:59 +02:00
fa67dd5ebf
Merge pull request 'fix: Update claude to not decline pr's' (!244) from claude/no-reject into main
Reviewed-on: #244
Reviewed-by: Claude <claude@kjan.email>
2025-06-01 11:54:56 +00:00
b09c9c3b4f
Merge branch 'main' into claude/no-reject
All checks were successful
CI / Get Changed Files (pull_request) Successful in 11s
CI / Docker frontend validation (pull_request) Successful in 32s
CI / eslint (pull_request) Successful in 41s
CI / oxlint (pull_request) Successful in 44s
CI / prettier (pull_request) Successful in 46s
CI / Docker backend validation (pull_request) Successful in 21s
Claude PR Review / claude-code (pull_request) Successful in 1m14s
CI / test-build (pull_request) Successful in 1m13s
CI / Checkstyle Main (pull_request) Successful in 1m22s
CI / Backend Tests (pull_request) Successful in 2m7s
2025-06-01 11:51:58 +00:00
4960b5966f
Merge pull request 'fix: Remove -m' (!250) from claude/no-m into main
Reviewed-on: #250
2025-06-01 11:45:11 +00:00
ffea4c0ec3 fix: Remove -m
All checks were successful
CI / Get Changed Files (pull_request) Successful in 12s
CI / eslint (pull_request) Successful in 24s
CI / oxlint (pull_request) Successful in 27s
CI / Docker frontend validation (pull_request) Successful in 29s
CI / prettier (pull_request) Successful in 42s
Setup Gitea Tea CLI / setup-and-login (pull_request) Successful in 1m2s
CI / Docker backend validation (pull_request) Successful in 19s
CI / test-build (pull_request) Successful in 1m12s
CI / Checkstyle Main (pull_request) Successful in 1m20s
CI / Backend Tests (pull_request) Successful in 2m1s
2025-06-01 13:43:36 +02:00
ed44c8b7fd
Merge pull request 'fix: Force claude to use tea cli' (!249) from claude/force into main
Reviewed-on: #249
Reviewed-by: Claude <claude@kjan.email>
2025-06-01 11:40:04 +00:00
262c814df0 fix: Force claude to use tea cli
All checks were successful
CI / Get Changed Files (pull_request) Successful in 16s
CI / Docker frontend validation (pull_request) Successful in 17s
CI / Docker backend validation (pull_request) Successful in 16s
Setup Gitea Tea CLI / setup-and-login (pull_request) Successful in 1m25s
CI / Checkstyle Main (pull_request) Successful in 52s
CI / Backend Tests (pull_request) Successful in 1m58s
CI / oxlint (pull_request) Successful in 20s
CI / eslint (pull_request) Successful in 32s
CI / prettier (pull_request) Successful in 23s
CI / test-build (pull_request) Successful in 32s
2025-06-01 13:39:39 +02:00
1de660d0e2
Merge pull request 'fix: Fix claude to always use tea command to review' (!248) from claude/use-tea-cli into main
Reviewed-on: #248
Reviewed-by: Claude <claude@kjan.email>
2025-06-01 10:30:51 +00:00
5d5c27827b fix: Fix claude to always use tea command to review
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / eslint (pull_request) Successful in 30s
CI / oxlint (pull_request) Successful in 30s
CI / Docker frontend validation (pull_request) Successful in 32s
CI / prettier (pull_request) Successful in 41s
CI / Docker backend validation (pull_request) Successful in 16s
CI / test-build (pull_request) Successful in 1m6s
CI / Checkstyle Main (pull_request) Successful in 1m17s
CI / Backend Tests (pull_request) Successful in 1m54s
Setup Gitea Tea CLI / setup-and-login (pull_request) Successful in 1m18s
2025-06-01 12:24:42 +02:00
2b096695a3
Merge pull request 'fix: Fix claude pipeline' (!247) from claude/fix into main
Reviewed-on: #247
2025-06-01 10:20:54 +00:00
84a4ede026 fix: Fix claude pipeline
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / eslint (pull_request) Successful in 31s
CI / Docker frontend validation (pull_request) Successful in 29s
CI / oxlint (pull_request) Successful in 36s
CI / prettier (pull_request) Successful in 40s
CI / Docker backend validation (pull_request) Successful in 19s
CI / test-build (pull_request) Successful in 1m9s
Setup Gitea Tea CLI / setup-and-login (pull_request) Successful in 1m27s
CI / Checkstyle Main (pull_request) Successful in 1m19s
CI / Backend Tests (pull_request) Successful in 1m56s
2025-06-01 12:16:44 +02:00
f6b8400c0b
Merge branch 'main' into claude/no-reject
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / eslint (pull_request) Successful in 34s
CI / Docker frontend validation (pull_request) Successful in 30s
CI / oxlint (pull_request) Successful in 42s
CI / prettier (pull_request) Successful in 45s
Claude PR Review / claude-code (pull_request) Successful in 57s
CI / Docker backend validation (pull_request) Successful in 20s
CI / test-build (pull_request) Successful in 1m11s
CI / Checkstyle Main (pull_request) Successful in 1m18s
CI / Backend Tests (pull_request) Successful in 1m58s
2025-06-01 10:14:21 +00:00
f991e1d6ed
Merge pull request 'chore: Claude can respond in pr's' (!246) from claude/pr-response into main
Reviewed-on: #246
Reviewed-by: Claude <claude@kjan.email>
2025-06-01 10:14:13 +00:00
c719e43ba0 chore: Claude can respond in pr's
All checks were successful
CI / Get Changed Files (pull_request) Successful in 17s
Setup Gitea Tea CLI / setup-and-login (pull_request) Successful in 1m27s
CI / eslint (pull_request) Successful in 56s
CI / oxlint (pull_request) Successful in 38s
CI / prettier (pull_request) Successful in 50s
CI / test-build (pull_request) Successful in 1m40s
CI / Docker frontend validation (pull_request) Successful in 20s
CI / Docker backend validation (pull_request) Successful in 17s
CI / Checkstyle Main (pull_request) Successful in 1m26s
CI / Backend Tests (pull_request) Successful in 2m58s
2025-06-01 12:08:02 +02:00
5ca152007e Merge branch 'main' into claude/pr-response 2025-06-01 12:06:50 +02:00
bb1621ba49
Merge pull request 'fix: Fix frontend build bc apparently they changed the node version' (!245) from fix/node-version into main
All checks were successful
Release / Release (push) Successful in 2m6s
Release / Build Backend Image (push) Successful in 59s
Release / Build Frontend Image (push) Successful in 47s
Reviewed-on: #245
2025-06-01 10:03:18 +00:00
602166aa61 fix: Remove sudo
All checks were successful
CI / Get Changed Files (pull_request) Successful in 9s
CI / oxlint (pull_request) Successful in 22s
CI / eslint (pull_request) Successful in 32s
CI / Docker frontend validation (pull_request) Successful in 30s
CI / prettier (pull_request) Successful in 35s
CI / Docker backend validation (pull_request) Successful in 16s
CI / test-build (pull_request) Successful in 1m7s
CI / Checkstyle Main (pull_request) Successful in 1m15s
CI / Backend Tests (pull_request) Successful in 1m53s
Setup Gitea Tea CLI / setup-and-login (pull_request) Successful in 1m17s
2025-06-01 11:09:12 +02:00
749303c3ee fix: Fix frontend build bc apparently they changed the node version 2025-06-01 11:09:07 +02:00
189fb85918 fix: Update pipeline name
Some checks failed
CI / Checkstyle Main (pull_request) Successful in 53s
CI / Get Changed Files (pull_request) Successful in 8s
CI / eslint (pull_request) Successful in 27s
CI / oxlint (pull_request) Successful in 28s
CI / prettier (pull_request) Successful in 35s
CI / test-build (pull_request) Successful in 51s
CI / Backend Tests (pull_request) Successful in 2m7s
Claude PR Review / claude-code (pull_request) Successful in 52s
CI / Docker backend validation (pull_request) Successful in 11s
CI / Docker frontend validation (pull_request) Failing after 14s
2025-06-01 10:44:47 +02:00
acd098225c fix: Update claude to not decline pr's 2025-06-01 10:44:44 +02:00
Phan Huy Tran
3e1c15e023 test: adjust commments
All checks were successful
CI / Get Changed Files (pull_request) Successful in 11s
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
Setup Gitea Tea CLI / setup-and-login (pull_request) Successful in 1m38s
CI / Docker frontend validation (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Successful in 18s
CI / Checkstyle Main (pull_request) Successful in 1m14s
CI / Backend Tests (pull_request) Successful in 2m16s
2025-05-28 11:04:57 +00:00
Phan Huy Tran
78b8f4696c test: refactor 2025-05-28 11:04:57 +00:00
Phan Huy Tran
b7a8627bcf test: dice service 2025-05-28 11:04:57 +00:00
349378a13e
Merge pull request 'fix: remove being mean' (!239) from no-mean into main
Reviewed-on: #239
Reviewed-by: Claude <claude@anthropic.ai>
2025-05-28 11:04:35 +00:00
c7e364a188 fix: remove being mean
All checks were successful
CI / Get Changed Files (pull_request) Successful in 10s
CI / oxlint (pull_request) Successful in 34s
CI / prettier (pull_request) Successful in 38s
CI / eslint (pull_request) Successful in 47s
CI / Docker frontend validation (pull_request) Successful in 17s
Setup Gitea Tea CLI / setup-and-login (pull_request) Successful in 1m28s
CI / test-build (pull_request) Successful in 55s
CI / Docker backend validation (pull_request) Successful in 19s
CI / Checkstyle Main (pull_request) Successful in 1m16s
CI / Backend Tests (pull_request) Successful in 3m6s
2025-05-28 13:01:43 +02:00
e8f4ca81ba
Merge pull request 'fix: Line numbers' (!238) from line-numbers into main
Reviewed-on: #238
Reviewed-by: Claude <claude@anthropic.ai>
2025-05-28 10:58:13 +00:00
9088adbac5 fix: Line numbers
All checks were successful
CI / Get Changed Files (pull_request) Successful in 7s
CI / oxlint (pull_request) Successful in 22s
CI / eslint (pull_request) Successful in 29s
CI / prettier (pull_request) Successful in 31s
CI / Docker frontend validation (pull_request) Successful in 26s
CI / Docker backend validation (pull_request) Successful in 15s
Setup Gitea Tea CLI / setup-and-login (pull_request) Successful in 1m9s
CI / test-build (pull_request) Successful in 57s
CI / Checkstyle Main (pull_request) Successful in 1m6s
CI / Backend Tests (pull_request) Successful in 1m52s
2025-05-28 12:56:39 +02:00
06c4df7602
Merge pull request 'feat: Add test backend pipeline' (!235) from test-pipeline into main
Reviewed-on: #235
Reviewed-by: Phan Huy Tran <ptran@noreply.localhost>
balls
2025-05-28 10:47:10 +00:00
8072500faa
Merge branch 'main' into test-pipeline
All checks were successful
CI / Get Changed Files (pull_request) Successful in 7s
CI / oxlint (pull_request) Successful in 29s
CI / Docker frontend validation (pull_request) Successful in 29s
CI / eslint (pull_request) Successful in 37s
CI / prettier (pull_request) Successful in 38s
CI / Docker backend validation (pull_request) Successful in 19s
Setup Gitea Tea CLI / setup-and-login (pull_request) Successful in 1m10s
CI / test-build (pull_request) Successful in 1m10s
CI / Checkstyle Main (pull_request) Successful in 1m16s
CI / Backend Tests (pull_request) Successful in 1m56s
2025-05-28 10:44:42 +00:00
e418c296de feat: Add test backend pipeline
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / oxlint (pull_request) Successful in 21s
CI / eslint (pull_request) Successful in 30s
CI / Docker frontend validation (pull_request) Successful in 30s
CI / prettier (pull_request) Successful in 41s
CI / Docker backend validation (pull_request) Successful in 16s
CI / test-build (pull_request) Successful in 1m8s
CI / Checkstyle Main (pull_request) Successful in 1m17s
CI / Backend Tests (pull_request) Successful in 1m53s
Setup Gitea Tea CLI / setup-and-login (pull_request) Successful in 1m26s
2025-05-28 12:40:17 +02:00
db4cf796d6
Merge pull request 'refactor: outsource deck related actions to service' (!236) from refactor-blackjack into main
All checks were successful
Release / Release (push) Successful in 1m13s
Release / Build Frontend Image (push) Successful in 26s
Release / Build Backend Image (push) Successful in 32s
Reviewed-on: #236
Reviewed-by: Jan K9f <jan@kjan.email>
2025-05-28 10:38:15 +00:00
Phan Huy Tran
2a51dce565 refactor: outsource deck related actions to service
All checks were successful
CI / Get Changed Files (pull_request) Successful in 10s
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
CI / Docker frontend validation (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 57s
CI / Docker backend validation (pull_request) Successful in 49s
Setup Gitea Tea CLI / setup-and-login (pull_request) Successful in 1m32s
2025-05-28 12:31:32 +02:00
b34b12cfc7
Merge pull request 'refactor: refactor blackjack service' (!231) from refactor-blackjack into main
All checks were successful
Release / Release (push) Successful in 1m0s
Release / Build Frontend Image (push) Successful in 27s
Release / Build Backend Image (push) Successful in 32s
Reviewed-on: #231
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
Reviewed-by: Jan K9f <jan@kjan.email>
2025-05-28 09:54:53 +00:00
Phan Huy Tran
e78fc58aaa refactor: remove dependency
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
CI / Docker frontend validation (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 54s
CI / Docker backend validation (pull_request) Successful in 55s
Setup Gitea Tea CLI / setup-and-login (pull_request) Successful in 1m20s
2025-05-28 11:50:10 +02:00
Phan Huy Tran
3cbffba14f refactor: use userservice and balance service inside blackjack service
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / eslint (pull_request) Has been skipped
CI / Docker frontend validation (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
CI / Checkstyle Main (pull_request) Successful in 51s
CI / Docker backend validation (pull_request) Successful in 54s
Setup Gitea Tea CLI / setup-and-login (pull_request) Successful in 1m30s
2025-05-28 11:41:32 +02:00
fe0bc9d556
Merge pull request 'chore: Update the claude instructions' (!234) from tea-cli into main
Reviewed-on: #234
Reviewed-by: Claude <claude@anthropic.ai>
2025-05-28 09:39:25 +00:00
903ca20e9d fix: Fix typo
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / eslint (pull_request) Successful in 30s
CI / Docker backend validation (pull_request) Successful in 31s
CI / Docker frontend validation (pull_request) Successful in 33s
CI / oxlint (pull_request) Successful in 33s
CI / prettier (pull_request) Successful in 36s
CI / Checkstyle Main (pull_request) Successful in 54s
CI / test-build (pull_request) Successful in 52s
Setup Gitea Tea CLI / setup-and-login (pull_request) Successful in 1m16s
2025-05-28 11:36:57 +02:00
9553c66f11 chore: Update the claude instructions
All checks were successful
CI / Get Changed Files (pull_request) Successful in 29s
CI / oxlint (pull_request) Successful in 29s
CI / prettier (pull_request) Successful in 36s
CI / eslint (pull_request) Successful in 41s
Setup Gitea Tea CLI / setup-and-login (pull_request) Successful in 1m25s
CI / test-build (pull_request) Successful in 53s
CI / Docker backend validation (pull_request) Successful in 1m4s
CI / Docker frontend validation (pull_request) Successful in 1m11s
CI / Checkstyle Main (pull_request) Successful in 1m30s
2025-05-28 11:33:52 +02:00
d5f4bcee05
Merge pull request 'fix: Make claude better' (!233) from claude-mean into main
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / Checkstyle Main (pull_request) Has been skipped
CI / eslint (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Has been skipped
CI / oxlint (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
Setup Gitea Tea CLI / setup-and-login (pull_request) Successful in 1m20s
Reviewed-on: #233
2025-05-28 09:15:26 +00:00
efd744261d fix: Make claude better
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / oxlint (pull_request) Successful in 25s
CI / Docker frontend validation (pull_request) Successful in 29s
CI / Docker backend validation (pull_request) Successful in 27s
CI / eslint (pull_request) Successful in 33s
CI / prettier (pull_request) Successful in 33s
CI / Checkstyle Main (pull_request) Successful in 57s
Setup Gitea Tea CLI / setup-and-login (pull_request) Successful in 1m7s
CI / test-build (pull_request) Successful in 55s
2025-05-28 11:12:06 +02:00
89c6be5345
Merge pull request 'fix: Dont run on renovate' (!230) from no-renovate into main
Reviewed-on: #230
Reviewed-by: Claude <claude@anthropic.ai>
2025-05-28 09:07:30 +00:00
cd43f111c4 fix: Dont run on renovate
All checks were successful
CI / Get Changed Files (pull_request) Successful in 10s
CI / oxlint (pull_request) Successful in 33s
CI / Docker frontend validation (pull_request) Successful in 27s
CI / eslint (pull_request) Successful in 39s
CI / prettier (pull_request) Successful in 39s
CI / Docker backend validation (pull_request) Successful in 18s
CI / Checkstyle Main (pull_request) Successful in 1m5s
CI / test-build (pull_request) Successful in 1m0s
Setup Gitea Tea CLI / setup-and-login (pull_request) Successful in 1m49s
2025-05-28 11:05:18 +02:00
7be0fc97bc
Merge pull request 'refactor: handle optional user inside userservice, replace @autowire' (!227) from refactor-get-current-user into main
All checks were successful
Release / Release (push) Successful in 1m2s
Release / Build Frontend Image (push) Successful in 25s
Release / Build Backend Image (push) Successful in 32s
CI / Get Changed Files (pull_request) Successful in 11s
CI / eslint (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Has been skipped
CI / oxlint (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
Setup Gitea Tea CLI / setup-and-login (pull_request) Successful in 1m11s
Reviewed-on: #227
Reviewed-by: Jan K9f <jan@kjan.email>
2025-05-28 08:50:55 +00:00
1f67fb3665
Merge pull request 'fix: Fix claude maybe' (!228) from fix-claude into main
Reviewed-on: #228
Reviewed-by: Claude <claude@anthropic.ai>
2025-05-28 08:50:37 +00:00
92af3076b5 fix: Fix claude maybe
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / Docker frontend validation (pull_request) Successful in 29s
CI / oxlint (pull_request) Successful in 28s
CI / eslint (pull_request) Successful in 33s
CI / Docker backend validation (pull_request) Successful in 31s
CI / prettier (pull_request) Successful in 37s
Setup Gitea Tea CLI / setup-and-login (pull_request) Successful in 1m3s
CI / Checkstyle Main (pull_request) Successful in 57s
CI / test-build (pull_request) Successful in 53s
2025-05-28 10:47:57 +02:00
20b7c445e0
Merge branch 'main' into refactor-get-current-user
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
CI / Docker frontend validation (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Successful in 12s
CI / Checkstyle Main (pull_request) Successful in 30s
Setup Gitea Tea CLI / setup-and-login (pull_request) Successful in 1m3s
2025-05-28 08:45:03 +00:00
52968e92a0
Merge pull request 'feat: Add claude code review' (!226) from claude into main
Reviewed-on: #226
2025-05-28 08:44:54 +00:00
Phan Huy Tran
1c45ff0058 refactor: handle optional user inside userservice, replace @autowire
All checks were successful
CI / Get Changed Files (pull_request) Successful in 11s
CI / eslint (pull_request) Has been skipped
CI / oxlint (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 51s
CI / Docker backend validation (pull_request) Successful in 53s
2025-05-28 10:40:42 +02:00
52d9e7b688 feat: Add claude code review
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / oxlint (pull_request) Successful in 1m0s
CI / prettier (pull_request) Successful in 1m9s
CI / eslint (pull_request) Successful in 1m13s
Setup Gitea Tea CLI / setup-and-login (pull_request) Successful in 1m31s
CI / test-build (pull_request) Successful in 1m23s
CI / Docker frontend validation (pull_request) Successful in 1m27s
CI / Docker backend validation (pull_request) Successful in 1m26s
CI / Checkstyle Main (pull_request) Successful in 1m34s
2025-05-28 10:39:38 +02:00
2651e34bf1
Merge pull request 'refactor: remove unused blackjack split funcionality' (!225) from refactor-blackjack-split into main
All checks were successful
Release / Release (push) Successful in 1m2s
Release / Build Frontend Image (push) Successful in 27s
Release / Build Backend Image (push) Successful in 1m0s
Reviewed-on: #225
Reviewed-by: Jan K9f <jan@kjan.email>
2025-05-28 08:26:58 +00:00
Phan Huy Tran
e9e2eba46f refactor: readd transactional attribute
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
CI / Docker frontend validation (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 51s
CI / Docker backend validation (pull_request) Successful in 52s
2025-05-28 10:23:18 +02:00
Phan Huy Tran
c277b89ffc refactor: remove unused blackjack split funcionality
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / eslint (pull_request) Has been skipped
CI / Docker frontend validation (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
CI / Checkstyle Main (pull_request) Successful in 54s
CI / Docker backend validation (pull_request) Successful in 1m1s
2025-05-28 10:21:21 +02:00
74d812a012
Merge pull request 'test: coinflip service' (!224) from test-coinflip-service into main
All checks were successful
Release / Release (push) Successful in 1m2s
Release / Build Frontend Image (push) Successful in 27s
Release / Build Backend Image (push) Successful in 33s
Reviewed-on: #224
Reviewed-by: Jan K9f <jan@kjan.email>
2025-05-28 07:36:37 +00:00
Phan Huy Tran
ce444c5e59 test: coinflip service
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / eslint (pull_request) Has been skipped
CI / Docker frontend validation (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
CI / Checkstyle Main (pull_request) Successful in 53s
CI / Docker backend validation (pull_request) Successful in 54s
2025-05-28 09:21:03 +02:00
9859e60173
Merge pull request 'test: add tests for balanceservice, delete failing tests' (!223) from test-balanceservice into main
All checks were successful
Release / Release (push) Successful in 1m7s
Release / Build Frontend Image (push) Successful in 28s
Release / Build Backend Image (push) Successful in 33s
Reviewed-on: #223
2025-05-28 07:04:51 +00:00
Phan Huy Tran
e21d031b36 test: tf
All checks were successful
CI / Get Changed Files (pull_request) Successful in 11s
CI / eslint (pull_request) Has been skipped
CI / Docker frontend validation (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
CI / Docker backend validation (pull_request) Successful in 14s
CI / Checkstyle Main (pull_request) Successful in 2m47s
2025-05-28 07:01:44 +00:00
Phan Huy Tran
00c512bf3b test: add tests for balanceservice, delete failing tests 2025-05-28 07:01:44 +00:00
4f6ca3c039
Merge pull request 'chore(deps): update devdependencies (non-major)' (!222) from renovate/devdependencies-(non-major) into main
All checks were successful
Release / Release (push) Successful in 2m1s
Release / Build Backend Image (push) Successful in 37s
Release / Build Frontend Image (push) Successful in 37s
Reviewed-on: #222
Reviewed-by: Jan K9f <jan@kjan.email>
2025-05-28 06:40:51 +00:00
1d1a917e33
chore(deps): update devdependencies (non-major)
All checks were successful
CI / Get Changed Files (pull_request) Successful in 31s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / oxlint (pull_request) Successful in 24s
CI / prettier (pull_request) Successful in 27s
CI / eslint (pull_request) Successful in 31s
CI / test-build (pull_request) Successful in 37s
CI / Docker frontend validation (pull_request) Successful in 1m15s
2025-05-27 18:01:48 +00:00
99d32916a3
Merge pull request 'chore(deps): update plugin org.springframework.boot to v3.5.0' (!220) from renovate/all-minor-patch into main
All checks were successful
Release / Release (push) Successful in 1m19s
Release / Build Frontend Image (push) Successful in 41s
Release / Build Backend Image (push) Successful in 1m59s
Reviewed-on: #220
Reviewed-by: Jan K9f <jan@kjan.email>
2025-05-26 11:47:18 +00:00
519c4a9038
Merge pull request 'chore(deps): update dependency angular-eslint to v19.5.0' (!221) from renovate/devdependencies-(non-major) into main
Some checks failed
Release / Build Backend Image (push) Blocked by required conditions
Release / Build Frontend Image (push) Blocked by required conditions
Release / Release (push) Has been cancelled
Reviewed-on: #221
Reviewed-by: Jan K9f <jan@kjan.email>
2025-05-26 11:46:40 +00:00
027bd90f4c
chore(deps): update dependency angular-eslint to v19.5.0
All checks were successful
CI / Get Changed Files (pull_request) Successful in 32s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / oxlint (pull_request) Successful in 40s
CI / eslint (pull_request) Successful in 43s
CI / prettier (pull_request) Successful in 45s
CI / test-build (pull_request) Successful in 40s
CI / Docker frontend validation (pull_request) Successful in 1m42s
2025-05-25 10:01:54 +00:00
84412276c0
chore(deps): update plugin org.springframework.boot to v3.5.0
All checks were successful
CI / Get Changed Files (pull_request) Successful in 35s
CI / eslint (pull_request) Has been skipped
CI / oxlint (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 4m2s
CI / Docker backend validation (pull_request) Successful in 5m2s
2025-05-22 23:01:30 +00:00
06dd02394b
Merge pull request 'chore(deps): update all non-major dependencies' (!218) from renovate/all-minor-patch into main
All checks were successful
Release / Release (push) Successful in 1m18s
Release / Build Frontend Image (push) Successful in 28s
Release / Build Backend Image (push) Successful in 33s
Reviewed-on: #218
Reviewed-by: Jan K9f <jan@kjan.email>
2025-05-22 17:12:19 +00:00
e791d56581
chore(deps): update all non-major dependencies
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 / Docker frontend validation (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 1m8s
CI / Docker backend validation (pull_request) Successful in 1m44s
2025-05-22 14:02:53 +00:00
b495fdbe74
Merge pull request 'refactor: extract common code to method' (!217) from refactor-blackjack-controllers into main
All checks were successful
Release / Release (push) Successful in 1m37s
Release / Build Backend Image (push) Successful in 38s
Release / Build Frontend Image (push) Successful in 1m29s
Reviewed-on: #217
Reviewed-by: Jan K9f <jan@kjan.email>
2025-05-22 10:58:13 +00:00
Phan Huy Tran
9101e2f5db refactor: rename getter properly
All checks were successful
CI / Get Changed Files (pull_request) Successful in 11s
CI / eslint (pull_request) Has been skipped
CI / oxlint (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 3m45s
CI / Docker backend validation (pull_request) Successful in 4m16s
2025-05-22 12:48:31 +02:00
Phan Huy Tran
5ad0740902 refactor: extract common code to method
All checks were successful
CI / Get Changed Files (pull_request) Successful in 39s
CI / eslint (pull_request) Has been skipped
CI / oxlint (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 4m1s
CI / Docker backend validation (pull_request) Successful in 4m34s
2025-05-22 12:47:27 +02:00
e72944d177
Merge pull request 'feat(dice): enhance game UI and add sound effects' (!216) from task/CAS-75/UpdateFrontendDice into main
All checks were successful
Release / Release (push) Successful in 1m1s
Release / Build Backend Image (push) Successful in 24s
Release / Build Frontend Image (push) Successful in 29s
Reviewed-on: #216
Reviewed-by: Jan K9f <jan@kjan.email>
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
2025-05-21 12:21:12 +00:00
da90a332dc
style(dice.component.html): fix whitespace in HTML file
All checks were successful
CI / Get Changed Files (pull_request) Successful in 13s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / oxlint (pull_request) Successful in 34s
CI / eslint (pull_request) Successful in 45s
CI / prettier (pull_request) Successful in 33s
CI / Docker frontend validation (pull_request) Successful in 1m14s
CI / test-build (pull_request) Successful in 41s
2025-05-21 14:07:03 +02:00
ed252696c4
Merge branch 'main' into task/CAS-75/UpdateFrontendDice
Some checks failed
CI / Get Changed Files (pull_request) Successful in 8s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / oxlint (pull_request) Successful in 21s
CI / eslint (pull_request) Successful in 30s
CI / prettier (pull_request) Failing after 29s
CI / Docker frontend validation (pull_request) Successful in 1m9s
CI / test-build (pull_request) Successful in 1m12s
2025-05-21 12:06:41 +00:00
a1997537eb
style(dice.component.html): Update layout of game instructions
Some checks failed
CI / Get Changed Files (pull_request) Successful in 31s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / eslint (pull_request) Successful in 28s
CI / prettier (pull_request) Failing after 29s
CI / oxlint (pull_request) Successful in 31s
CI / Docker frontend validation (pull_request) Successful in 48s
CI / test-build (pull_request) Successful in 36s
2025-05-21 14:02:47 +02:00
1849500d74
feat(dice): enhance game UI and add sound effects
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / oxlint (pull_request) Successful in 18s
CI / eslint (pull_request) Successful in 25s
CI / prettier (pull_request) Successful in 25s
CI / Docker frontend validation (pull_request) Successful in 45s
CI / test-build (pull_request) Successful in 45s
2025-05-21 13:52:16 +02:00
69af830829
Merge pull request 'fix: Change lang to german' (!215) from fix/lang into main
All checks were successful
Release / Release (push) Successful in 59s
Release / Build Backend Image (push) Successful in 24s
Release / Build Frontend Image (push) Successful in 28s
Reviewed-on: #215
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
2025-05-21 11:49:23 +00:00
7762048ee1 fix: Change lang to german
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / oxlint (pull_request) Successful in 25s
CI / eslint (pull_request) Successful in 27s
CI / prettier (pull_request) Successful in 31s
CI / Docker frontend validation (pull_request) Successful in 42s
CI / test-build (pull_request) Successful in 44s
2025-05-21 13:47:32 +02:00
c68b3f2f7e
Merge pull request 'feat(email): add mail protocol configuration option' (!214) from bugfix/prod-mails into main
All checks were successful
Release / Release (push) Successful in 58s
Release / Build Frontend Image (push) Successful in 25s
Release / Build Backend Image (push) Successful in 31s
Reviewed-on: #214
Reviewed-by: Jan K9f <jan@kjan.email>
2025-05-21 11:13:45 +00:00
c2e85a5516
Merge branch 'main' into bugfix/prod-mails
All checks were successful
CI / Get Changed Files (pull_request) Successful in 10s
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
CI / Docker frontend validation (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 1m8s
CI / Docker backend validation (pull_request) Successful in 56s
2025-05-21 11:11:57 +00:00
ba41b1e553
Merge pull request 'refactor(security): reorganize OAuth2 packages and classes' (!213) from refactor/backend-oauth into main
All checks were successful
Release / Release (push) Successful in 1m21s
Release / Build Frontend Image (push) Successful in 29s
Release / Build Backend Image (push) Successful in 34s
Reviewed-on: #213
Reviewed-by: Jan K9f <jan@kjan.email>
2025-05-21 11:11:45 +00:00
dce5d1a86e
feat(email): add mail protocol configuration option
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / eslint (pull_request) Has been skipped
CI / Docker frontend validation (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
CI / Checkstyle Main (pull_request) Successful in 1m1s
CI / Docker backend validation (pull_request) Successful in 1m15s
2025-05-21 13:11:14 +02:00
f2da3ee132
refactor(security): reorganize OAuth2 packages and classes
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / eslint (pull_request) Has been skipped
CI / Docker frontend validation (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
CI / Checkstyle Main (pull_request) Successful in 52s
CI / Docker backend validation (pull_request) Successful in 54s
2025-05-21 12:14:05 +02:00
8119db68c9
Merge pull request 'refactor: refactor routes.ts' (!212) from refactor/routes into main
All checks were successful
Release / Release (push) Successful in 58s
Release / Build Backend Image (push) Successful in 25s
Release / Build Frontend Image (push) Successful in 32s
Reviewed-on: #212
Reviewed-by: Jan K9f <jan@kjan.email>
2025-05-21 10:12:56 +00:00
1514f18d58
refactor: update import paths for component files
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / oxlint (pull_request) Successful in 23s
CI / prettier (pull_request) Successful in 27s
CI / eslint (pull_request) Successful in 31s
CI / Docker frontend validation (pull_request) Successful in 49s
CI / test-build (pull_request) Successful in 38s
2025-05-21 12:05:09 +02:00
e5f8d6ce10
refactor(routes): simplify component loading syntax 2025-05-21 12:03:16 +02:00
f88795f7c5
Merge pull request 'feat(auth): implement Google OAuth2 authentication flow' (!211) from feat/google-oauth into main
All checks were successful
Release / Release (push) Successful in 1m3s
Release / Build Frontend Image (push) Successful in 31s
Release / Build Backend Image (push) Successful in 33s
Reviewed-on: #211
Reviewed-by: Jan K9f <jan@kjan.email>
2025-05-21 10:00:56 +00:00
64ee19f930
style(login): update button text color to black
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / oxlint (pull_request) Successful in 20s
CI / eslint (pull_request) Successful in 27s
CI / Docker backend validation (pull_request) Successful in 26s
CI / prettier (pull_request) Successful in 34s
CI / Checkstyle Main (pull_request) Successful in 1m3s
CI / Docker frontend validation (pull_request) Successful in 1m5s
CI / test-build (pull_request) Successful in 1m4s
2025-05-21 11:59:15 +02:00
f3ab9ffcd6
style: format code and improve readability
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / oxlint (pull_request) Successful in 27s
CI / eslint (pull_request) Successful in 30s
CI / Docker backend validation (pull_request) Successful in 34s
CI / prettier (pull_request) Successful in 38s
CI / Checkstyle Main (pull_request) Successful in 1m1s
CI / Docker frontend validation (pull_request) Successful in 1m2s
CI / test-build (pull_request) Successful in 1m1s
2025-05-21 11:56:14 +02:00
eb1717bca1
feat(auth): restructure oauth2 callback handling and service
Some checks failed
CI / Get Changed Files (pull_request) Successful in 8s
CI / Docker backend validation (pull_request) Successful in 26s
CI / eslint (pull_request) Failing after 32s
CI / oxlint (pull_request) Failing after 36s
CI / prettier (pull_request) Failing after 39s
CI / Checkstyle Main (pull_request) Successful in 55s
CI / Docker frontend validation (pull_request) Successful in 1m4s
CI / test-build (pull_request) Successful in 1m1s
2025-05-21 11:50:41 +02:00
756beb5a4e
refactor(auth): remove commented code in OAuth2 callback component
All checks were successful
CI / Get Changed Files (pull_request) Successful in 11s
CI / eslint (pull_request) Successful in 38s
CI / oxlint (pull_request) Successful in 45s
CI / prettier (pull_request) Successful in 48s
CI / Docker backend validation (pull_request) Successful in 49s
CI / Docker frontend validation (pull_request) Successful in 1m15s
CI / test-build (pull_request) Successful in 1m12s
CI / Checkstyle Main (pull_request) Successful in 1m26s
2025-05-21 11:36:49 +02:00
52de53878e
style: fix formatting and add newlines at end of files
All checks were successful
CI / Get Changed Files (pull_request) Successful in 12s
CI / oxlint (pull_request) Successful in 39s
CI / prettier (pull_request) Successful in 55s
CI / eslint (pull_request) Successful in 59s
CI / Docker frontend validation (pull_request) Successful in 1m27s
CI / test-build (pull_request) Successful in 1m15s
CI / Checkstyle Main (pull_request) Successful in 2m6s
CI / Docker backend validation (pull_request) Successful in 2m10s
2025-05-21 11:35:29 +02:00
07b594fa36
feat: implement Google OAuth2 authentication flow
Some checks failed
CI / Get Changed Files (pull_request) Successful in 8s
CI / eslint (pull_request) Successful in 33s
CI / prettier (pull_request) Failing after 36s
CI / oxlint (pull_request) Successful in 42s
CI / Checkstyle Main (pull_request) Failing after 1m8s
CI / Docker frontend validation (pull_request) Successful in 1m46s
CI / test-build (pull_request) Successful in 1m46s
CI / Docker backend validation (pull_request) Successful in 2m36s
2025-05-21 11:34:10 +02:00
c9632d6b26
Merge pull request 'refactor: remove debounce on dice calculations' (!210) from refactor-remove-debounce into main
All checks were successful
Release / Release (push) Successful in 1m0s
Release / Build Backend Image (push) Successful in 24s
Release / Build Frontend Image (push) Successful in 29s
Reviewed-on: #210
Reviewed-by: Jan K9f <jan@kjan.email>
2025-05-21 09:32:50 +00:00
Phan Huy Tran
26a2e0cdbf style: appropriately touch quality tools again
All checks were successful
CI / Get Changed Files (pull_request) Successful in 15s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / eslint (pull_request) Successful in 28s
CI / oxlint (pull_request) Successful in 28s
CI / prettier (pull_request) Successful in 30s
CI / test-build (pull_request) Successful in 50s
CI / Docker frontend validation (pull_request) Successful in 1m9s
2025-05-21 11:29:51 +02:00
Phan Huy Tran
54e9ccf426 style: appropriately touch quality tools
Some checks failed
CI / Get Changed Files (pull_request) Successful in 8s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / oxlint (pull_request) Successful in 16s
CI / eslint (pull_request) Successful in 24s
CI / prettier (pull_request) Failing after 24s
CI / Docker frontend validation (pull_request) Successful in 43s
CI / test-build (pull_request) Successful in 44s
2025-05-21 11:28:10 +02:00
Phan Huy Tran
f5bae60e0f refactor: remove debounce on dice calculations
Some checks failed
CI / Get Changed Files (pull_request) Successful in 8s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / oxlint (pull_request) Failing after 22s
CI / eslint (pull_request) Failing after 24s
CI / prettier (pull_request) Failing after 28s
CI / Docker frontend validation (pull_request) Successful in 44s
CI / test-build (pull_request) Successful in 44s
2025-05-21 11:24:13 +02:00
45ba7d9693
Merge pull request 'feat: Create Coinflip ui (CAS-64)' (!206) from feat/coinflip into main
All checks were successful
Release / Release (push) Successful in 58s
Release / Build Backend Image (push) Successful in 23s
Release / Build Frontend Image (push) Successful in 46s
Reviewed-on: #206
2025-05-21 09:13:34 +00:00
3eea955c56
Merge pull request 'feat: implement dice page (CAS-75)' (!209) from feat-dice-frontend into main
All checks were successful
Release / Release (push) Successful in 1m0s
Release / Build Backend Image (push) Successful in 24s
Release / Build Frontend Image (push) Successful in 29s
Reviewed-on: #209
Reviewed-by: Jan K9f <jan@kjan.email>
2025-05-21 09:11:20 +00:00
bb5f26ab60 fix: Prettier
All checks were successful
CI / Get Changed Files (pull_request) Successful in 28s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Successful in 1m19s
CI / eslint (pull_request) Successful in 25s
CI / oxlint (pull_request) Successful in 23s
CI / prettier (pull_request) Successful in 21s
CI / test-build (pull_request) Successful in 32s
2025-05-21 11:06:41 +02:00
Phan Huy Tran
681b87383e refactor: oops
All checks were successful
CI / Get Changed Files (pull_request) Successful in 21s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Successful in 1m8s
CI / oxlint (pull_request) Successful in 21s
CI / eslint (pull_request) Successful in 27s
CI / prettier (pull_request) Successful in 21s
CI / test-build (pull_request) Successful in 47s
2025-05-21 09:06:29 +00:00
Phan Huy Tran
e6f3f76fd6 style: fix prettier 2025-05-21 09:06:29 +00:00
Phan Huy Tran
c6d886b68b refactor: use constant for api url 2025-05-21 09:06:29 +00:00
Phan Huy Tran
329739b103 style: fix quality tools 2025-05-21 09:06:29 +00:00
Phan Huy Tran
f2aa81b6d2 style: format code 2025-05-21 09:06:29 +00:00
Phan Huy Tran
b2053acdfe feat: add links pointing to the dice page on landing page 2025-05-21 09:06:29 +00:00
Phan Huy Tran
694787fe07 feat: add links pointing to the dice page 2025-05-21 09:06:29 +00:00
Phan Huy Tran
bc50261221 refactor: remove comment 2025-05-21 09:06:29 +00:00
Phan Huy Tran
d58f24ccbf feat: style dice game page 2025-05-21 09:06:29 +00:00
Phan Huy Tran
a62d2092b3 feat: implement basic dice frontend funcionality 2025-05-21 09:06:29 +00:00
8b6e026e0a fix: Make user not able to enter too much money
Some checks failed
CI / Get Changed Files (pull_request) Successful in 8s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / oxlint (pull_request) Successful in 21s
CI / eslint (pull_request) Successful in 27s
CI / prettier (pull_request) Failing after 31s
CI / Docker frontend validation (pull_request) Successful in 54s
CI / test-build (pull_request) Successful in 50s
2025-05-21 11:03:52 +02:00
dae835cbfa
Merge pull request 'feat(auth): add oauth2 using github (CAS-64)' (!208) from feat/github-oauth into main
All checks were successful
Release / Release (push) Successful in 1m20s
Release / Build Frontend Image (push) Successful in 53s
Release / Build Backend Image (push) Successful in 57s
Reviewed-on: #208
2025-05-21 09:03:43 +00:00
969e2ac0da
style: format HTML and TypeScript files
All checks were successful
CI / Get Changed Files (pull_request) Successful in 26s
CI / eslint (pull_request) Successful in 51s
CI / oxlint (pull_request) Successful in 41s
CI / prettier (pull_request) Successful in 52s
CI / Docker frontend validation (pull_request) Successful in 1m46s
CI / Docker backend validation (pull_request) Successful in 29s
CI / Checkstyle Main (pull_request) Successful in 2m44s
CI / test-build (pull_request) Successful in 1m1s
2025-05-21 11:00:01 +02:00
75de7d1370
style: fix missing newlines at end of files
Some checks failed
CI / Get Changed Files (pull_request) Successful in 8s
CI / Docker frontend validation (pull_request) Failing after 23s
CI / oxlint (pull_request) Successful in 47s
CI / prettier (pull_request) Failing after 56s
CI / eslint (pull_request) Successful in 1m13s
CI / Checkstyle Main (pull_request) Successful in 2m59s
CI / test-build (pull_request) Successful in 2m3s
CI / Docker backend validation (pull_request) Successful in 3m25s
2025-05-21 10:59:36 +02:00
6f6bbe6d8b
refactor(security): remove unused GitHubService and comments
Some checks failed
CI / Get Changed Files (pull_request) Successful in 8s
CI / oxlint (pull_request) Successful in 24s
CI / Docker frontend validation (pull_request) Successful in 26s
CI / eslint (pull_request) Successful in 31s
CI / prettier (pull_request) Failing after 32s
CI / Checkstyle Main (pull_request) Failing after 1m2s
CI / test-build (pull_request) Successful in 59s
CI / Docker backend validation (pull_request) Successful in 1m14s
2025-05-21 10:56:56 +02:00
0d9b0ad987 fix: Fix claude mirrored text
Some checks failed
CI / Get Changed Files (pull_request) Successful in 18s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / eslint (pull_request) Successful in 49s
CI / oxlint (pull_request) Successful in 47s
CI / prettier (pull_request) Failing after 49s
CI / Docker frontend validation (pull_request) Successful in 1m10s
CI / test-build (pull_request) Successful in 38s
2025-05-21 10:54:42 +02:00
6f264dccf7
refactor: simplify UserPrincipal and OAuth2UserInfo classes
Some checks failed
CI / Get Changed Files (pull_request) Successful in 8s
CI / oxlint (pull_request) Successful in 26s
CI / Docker frontend validation (pull_request) Successful in 30s
CI / eslint (pull_request) Successful in 34s
CI / prettier (pull_request) Failing after 37s
CI / Checkstyle Main (pull_request) Failing after 1m29s
CI / test-build (pull_request) Successful in 1m30s
CI / Docker backend validation (pull_request) Successful in 1m54s
2025-05-21 10:54:31 +02:00
0e150e9ded
refactor(GitHubService): remove unnecessary logging statements 2025-05-21 10:54:25 +02:00
2b29ef81b2
fix: faulty rebase
Some checks failed
CI / Get Changed Files (pull_request) Successful in 11s
CI / Docker frontend validation (pull_request) Successful in 26s
CI / oxlint (pull_request) Successful in 35s
CI / eslint (pull_request) Successful in 41s
CI / prettier (pull_request) Failing after 40s
CI / Checkstyle Main (pull_request) Failing after 1m9s
CI / test-build (pull_request) Successful in 47s
CI / Docker backend validation (pull_request) Successful in 1m24s
2025-05-21 10:48:46 +02:00
d64b39fa69
fix: fix email verify
Some checks failed
CI / Get Changed Files (pull_request) Successful in 7s
CI / eslint (pull_request) Successful in 37s
CI / prettier (pull_request) Failing after 41s
CI / oxlint (pull_request) Successful in 49s
CI / Docker frontend validation (pull_request) Successful in 1m49s
CI / Checkstyle Main (pull_request) Failing after 1m51s
CI / test-build (pull_request) Successful in 1m55s
CI / Docker backend validation (pull_request) Successful in 2m41s
2025-05-21 10:47:18 +02:00
9770ad3d8f fix: Claude fixed most issues 2025-05-21 10:46:28 +02:00
74798949c6
style: clean up whitespace in multiple files
Some checks failed
CI / Get Changed Files (pull_request) Successful in 8s
CI / Docker frontend validation (pull_request) Successful in 24s
CI / eslint (pull_request) Successful in 30s
CI / oxlint (pull_request) Successful in 39s
CI / prettier (pull_request) Failing after 43s
CI / Checkstyle Main (pull_request) Failing after 1m22s
CI / test-build (pull_request) Successful in 1m44s
CI / Docker backend validation (pull_request) Failing after 1m54s
2025-05-21 10:42:13 +02:00
cc1979a068
feat: add GitHub OAuth2 authentication support 2025-05-21 10:40:23 +02:00
09677effe6 befora claude just in case
Some checks failed
CI / Get Changed Files (pull_request) Successful in 7s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / oxlint (pull_request) Failing after 21s
CI / eslint (pull_request) Failing after 28s
CI / prettier (pull_request) Successful in 27s
CI / test-build (pull_request) Successful in 40s
CI / Docker frontend validation (pull_request) Successful in 1m7s
2025-05-21 10:33:00 +02:00
e4cd62cca4
Merge pull request 'fix: delete orhpaned blackjack games' (!207) from fix-delete-completed-blackjack-games into main
All checks were successful
Release / Release (push) Successful in 58s
Release / Build Frontend Image (push) Successful in 29s
Release / Build Backend Image (push) Successful in 31s
Reviewed-on: #207
Reviewed-by: Jan K9f <jan@kjan.email>
2025-05-21 07:54:01 +00:00
Phan Huy Tran
1931a02369 style: format code
All checks were successful
CI / Get Changed Files (pull_request) Successful in 9s
CI / eslint (pull_request) Has been skipped
CI / Docker frontend validation (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
CI / Checkstyle Main (pull_request) Successful in 1m6s
CI / Docker backend validation (pull_request) Successful in 1m3s
2025-05-21 09:50:00 +02:00
Phan Huy Tran
1dfdedee91 fix: delete orhpaned blackjack games
All checks were successful
CI / Get Changed Files (pull_request) Successful in 7s
CI / eslint (pull_request) Has been skipped
CI / Docker frontend validation (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
CI / Checkstyle Main (pull_request) Successful in 57s
CI / Docker backend validation (pull_request) Successful in 1m14s
2025-05-21 09:49:09 +02:00
41f3b506a0 feat: Create basic layout for coinflip
Some checks failed
CI / Get Changed Files (pull_request) Successful in 7s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / oxlint (pull_request) Failing after 19s
CI / eslint (pull_request) Failing after 26s
CI / prettier (pull_request) Successful in 26s
CI / Docker frontend validation (pull_request) Successful in 44s
CI / test-build (pull_request) Successful in 45s
2025-05-21 09:33:02 +02:00
61b806c048
Merge pull request 'fix: Add missing dice target value validation' (!205) from fix-target-value-validation into main
Some checks failed
Release / Release (push) Failing after 10m37s
Release / Build Backend Image (push) Has been cancelled
Release / Build Frontend Image (push) Has been cancelled
Reviewed-on: #205
Reviewed-by: Jan K9f <jan@kjan.email>
2025-05-21 07:16:44 +00:00
Phan Huy Tran
34c7c39b63 fix: Add missing dice target value validation
All checks were successful
CI / Get Changed Files (pull_request) Successful in 7s
CI / eslint (pull_request) Has been skipped
CI / oxlint (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 50s
CI / Docker backend validation (pull_request) Successful in 53s
2025-05-21 09:15:07 +02:00
1966313a20
Merge pull request 'feat: implement dice game api (CAS-74)' (!203) from feat-dice into main
Some checks failed
Release / Build Backend Image (push) Blocked by required conditions
Release / Build Frontend Image (push) Blocked by required conditions
Release / Release (push) Has been cancelled
Reviewed-on: #203
Reviewed-by: Jan K9f <jan@kjan.email>
2025-05-21 07:10:07 +00:00
816c659b5c
Merge pull request 'fix: Fix bug where the password reset doesnt redirect to login (CAS-82)' (!204) from bugfix/password-reset-redirect into main
Some checks failed
Release / Build Backend Image (push) Blocked by required conditions
Release / Build Frontend Image (push) Blocked by required conditions
Release / Release (push) Has been cancelled
Reviewed-on: #204
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
2025-05-21 07:10:02 +00:00
d02c3d24f1 fix: Fix bug where the password reset doesnt redirect to login
All checks were successful
CI / Get Changed Files (pull_request) Successful in 7s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Successful in 18s
CI / oxlint (pull_request) Successful in 18s
CI / eslint (pull_request) Successful in 24s
CI / prettier (pull_request) Successful in 22s
CI / test-build (pull_request) Successful in 31s
2025-05-21 09:02:31 +02:00
0d59b63c23
Merge branch 'main' into feat-dice
All checks were successful
CI / Get Changed Files (pull_request) Successful in 13s
CI / eslint (pull_request) Has been skipped
CI / Docker frontend validation (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
CI / Docker backend validation (pull_request) Successful in 13s
CI / Checkstyle Main (pull_request) Successful in 2m39s
2025-05-21 07:02:16 +00:00
Phan Huy Tran
d670190073 refactor: use lombok
All checks were successful
CI / Get Changed Files (pull_request) Successful in 30s
CI / eslint (pull_request) Has been skipped
CI / Docker frontend validation (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
CI / Docker backend validation (pull_request) Successful in 1m1s
CI / Checkstyle Main (pull_request) Successful in 4m2s
2025-05-21 08:59:08 +02:00
Phan Huy Tran
9175c82f98 feat: implement dice game api 2025-05-21 08:58:25 +02:00
898fb41030
Merge pull request 'fix: Fix bug where verification page doesnt redirect (CAS-80)' (!202) from bugfix/verification-redirect into main
All checks were successful
Release / Release (push) Successful in 1m0s
Release / Build Backend Image (push) Successful in 23s
Release / Build Frontend Image (push) Successful in 28s
Reviewed-on: #202
2025-05-21 06:57:29 +00:00
876bf2f427 fix: Fix bug where verification page doesnt redirect
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / eslint (pull_request) Successful in 25s
CI / prettier (pull_request) Successful in 28s
CI / oxlint (pull_request) Successful in 30s
CI / test-build (pull_request) Successful in 42s
CI / Docker frontend validation (pull_request) Successful in 48s
2025-05-21 08:55:39 +02:00
5c64b86bc4
Merge pull request 'fix: Fix bug where the password reset form doesnt show up when using (CAS-81)' (!201) from bugfix/password-reset-in-modal into main
All checks were successful
Release / Release (push) Successful in 59s
Release / Build Frontend Image (push) Successful in 28s
Release / Build Backend Image (push) Successful in 1m45s
Reviewed-on: #201
2025-05-21 06:50:47 +00:00
ee3a57f5b3 fix: Fix bug where the password reset form doesnt show up when using
All checks were successful
CI / Get Changed Files (pull_request) Successful in 38s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / oxlint (pull_request) Successful in 48s
CI / prettier (pull_request) Successful in 46s
CI / eslint (pull_request) Successful in 58s
CI / test-build (pull_request) Successful in 57s
CI / Docker frontend validation (pull_request) Successful in 1m38s
center buttons
2025-05-21 08:46:23 +02:00
46c9d2b7c1
Merge pull request 'feat: Add justfile' (!200) from add-justfile into main
Reviewed-on: #200
2025-05-19 12:48:24 +00:00
9aab757cdf feat: Add justfile
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Has been skipped
CI / oxlint (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
2025-05-16 08:53:28 +02:00
12b45957e7
Merge pull request 'refactor: remove unused directive and clean audio path' (!199) from task/fix-audio into main
All checks were successful
Release / Release (push) Successful in 1m17s
Release / Build Backend Image (push) Successful in 23s
Release / Build Frontend Image (push) Successful in 27s
Reviewed-on: #199
Reviewed-by: Jan K9f <jan@kjan.email>
2025-05-15 16:13:07 +00:00
c4802546ab
refactor: remove unused directive and clean audio path
All checks were successful
CI / Get Changed Files (pull_request) Successful in 27s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / oxlint (pull_request) Successful in 21s
CI / prettier (pull_request) Successful in 24s
CI / eslint (pull_request) Successful in 29s
CI / Docker frontend validation (pull_request) Successful in 58s
CI / test-build (pull_request) Successful in 25s
2025-05-15 17:12:55 +02:00
a6ebf1034e
Merge pull request 'fix(register): fix nothing happening after registration (CAS-79)' (!198) from bugfix/CAS-79 into main
All checks were successful
Release / Release (push) Successful in 59s
Release / Build Backend Image (push) Successful in 23s
Release / Build Frontend Image (push) Successful in 27s
Reviewed-on: #198
2025-05-15 12:33:13 +00:00
csimonis
64a1155eed chore: prettier
All checks were successful
CI / Get Changed Files (pull_request) Successful in 32s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / oxlint (pull_request) Successful in 30s
CI / eslint (pull_request) Successful in 32s
CI / prettier (pull_request) Successful in 37s
CI / Docker frontend validation (pull_request) Successful in 59s
CI / test-build (pull_request) Successful in 59s
2025-05-15 14:30:13 +02:00
csimonis
7c87dfb519 refactor(register): remove unused router import and variable
Some checks failed
CI / Get Changed Files (pull_request) Successful in 8s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / oxlint (pull_request) Successful in 22s
CI / prettier (pull_request) Failing after 26s
CI / eslint (pull_request) Successful in 30s
CI / Docker frontend validation (pull_request) Successful in 43s
CI / test-build (pull_request) Successful in 46s
2025-05-15 14:23:03 +02:00
84feb5f080
Merge pull request 'feat: add audio features and sounds to the game' (!197) from task/CAS-78/AddSoundEffects into main
All checks were successful
Release / Release (push) Successful in 58s
Release / Build Backend Image (push) Successful in 24s
Release / Build Frontend Image (push) Successful in 27s
Reviewed-on: #197
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
2025-05-15 12:15:22 +00:00
566ea569e1
refactor(audio.service): improve audio caching logic
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / oxlint (pull_request) Successful in 18s
CI / eslint (pull_request) Successful in 26s
CI / prettier (pull_request) Successful in 25s
CI / Docker frontend validation (pull_request) Successful in 42s
CI / test-build (pull_request) Successful in 44s
2025-05-15 14:14:18 +02:00
6d353cc202
style: fix formatting and add missing commas in code
All checks were successful
CI / Get Changed Files (pull_request) Successful in 10s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / oxlint (pull_request) Successful in 26s
CI / eslint (pull_request) Successful in 39s
CI / prettier (pull_request) Successful in 30s
CI / Docker frontend validation (pull_request) Successful in 57s
CI / test-build (pull_request) Successful in 42s
2025-05-15 14:04:43 +02:00
5809757bc9
feat: add audio features and sounds to the game
Some checks failed
CI / Get Changed Files (pull_request) Successful in 31s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / oxlint (pull_request) Successful in 23s
CI / prettier (pull_request) Failing after 27s
CI / eslint (pull_request) Successful in 31s
CI / test-build (pull_request) Successful in 49s
CI / Docker frontend validation (pull_request) Successful in 1m34s
2025-05-15 14:03:26 +02:00
4f2e7fe712
Merge pull request 'feat(auth): move recover password page to modal' (!196) from 1 into main
All checks were successful
Release / Release (push) Successful in 1m6s
Release / Build Backend Image (push) Successful in 23s
Release / Build Frontend Image (push) Successful in 29s
Reviewed-on: #196
Reviewed-by: Phan Huy Tran <ptran@noreply.localhost>
2025-05-15 11:00:22 +00:00
csimonis
dd919799d6 chore: prettier
All checks were successful
CI / Get Changed Files (pull_request) Successful in 7s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / eslint (pull_request) Successful in 25s
CI / oxlint (pull_request) Successful in 28s
CI / prettier (pull_request) Successful in 31s
CI / Docker frontend validation (pull_request) Successful in 45s
CI / test-build (pull_request) Successful in 46s
2025-05-15 12:58:12 +02:00
csimonis
9a95ad3d0f feat(auth): add recover password functionality and forms
Some checks failed
CI / Get Changed Files (pull_request) Successful in 8s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / oxlint (pull_request) Successful in 19s
CI / eslint (pull_request) Successful in 28s
CI / prettier (pull_request) Failing after 26s
CI / test-build (pull_request) Successful in 42s
CI / Docker frontend validation (pull_request) Successful in 48s
2025-05-15 12:53:53 +02:00
7d471b6898
Merge pull request 'feat: add password recovery (CAS-73)' (!194) from feat/password-recovery into main
All checks were successful
Release / Release (push) Successful in 1m2s
Release / Build Frontend Image (push) Successful in 27s
Release / Build Backend Image (push) Successful in 30s
Reviewed-on: #194
Reviewed-by: Phan Huy Tran <ptran@noreply.localhost>
2025-05-15 10:37:19 +00:00
csimonis
d049048206 style: format HTML and TypeScript files for consistency
All checks were successful
CI / Get Changed Files (pull_request) Successful in 10s
CI / oxlint (pull_request) Successful in 26s
CI / Docker frontend validation (pull_request) Successful in 29s
CI / eslint (pull_request) Successful in 38s
CI / prettier (pull_request) Successful in 41s
CI / test-build (pull_request) Successful in 1m6s
CI / Checkstyle Main (pull_request) Successful in 1m29s
CI / Docker backend validation (pull_request) Successful in 1m27s
2025-05-15 10:34:51 +00:00
csimonis
2305e83647 feat(auth): add recover and reset password functionality 2025-05-15 10:34:51 +00:00
csimonis
c8f2d16f07 feat(auth): add password reset functionality and DTO 2025-05-15 10:34:51 +00:00
csimonis
9827f81230 wip: stuff 2025-05-15 10:34:51 +00:00
b41145b85c
Merge pull request 'feat: add coinside result' (!195) from feat-coinside into main
All checks were successful
Release / Release (push) Successful in 59s
Release / Build Frontend Image (push) Successful in 24s
Release / Build Backend Image (push) Successful in 28s
Reviewed-on: #195
Reviewed-by: Jan K9f <jan@kjan.email>
2025-05-15 10:12:19 +00:00
963516a5bd
Merge branch 'main' into feat-coinside
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / eslint (pull_request) Has been skipped
CI / Docker frontend validation (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
CI / Checkstyle Main (pull_request) Successful in 47s
CI / Docker backend validation (pull_request) Successful in 1m8s
2025-05-15 10:10:51 +00:00
Phan Huy Tran
d7f2e72a15 feat: add coinside result
All checks were successful
CI / Get Changed Files (pull_request) Successful in 7s
CI / Docker frontend validation (pull_request) Has been skipped
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
CI / Checkstyle Main (pull_request) Successful in 51s
CI / Docker backend validation (pull_request) Successful in 52s
2025-05-15 11:44:56 +02:00
d42209d1c9
Merge pull request 'Update some stuff in the pipeline' (!193) from pipeline-optimization into main
Reviewed-on: #193
2025-05-15 09:15:12 +00:00
47e04567a9 perf: Update bun jobs
All checks were successful
CI / Get Changed Files (pull_request) Successful in 7s
CI / Docker frontend validation (pull_request) Successful in 21s
CI / oxlint (pull_request) Successful in 21s
CI / Docker backend validation (pull_request) Successful in 22s
CI / eslint (pull_request) Successful in 29s
CI / prettier (pull_request) Successful in 28s
CI / test-build (pull_request) Successful in 46s
CI / Checkstyle Main (pull_request) Successful in 1m3s
2025-05-15 11:13:31 +02:00
97a25af1c6
Merge pull request 'feat: verify email (CAS-66)' (!192) from feat/verify-email into main
All checks were successful
Release / Release (push) Successful in 57s
Release / Build Frontend Image (push) Successful in 26s
Release / Build Backend Image (push) Successful in 1m6s
Reviewed-on: #192
Reviewed-by: Jan K9f <jan@kjan.email>
2025-05-15 09:05:29 +00:00
csimonis
2f21408e3d style: format code for better readability
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / Docker backend validation (pull_request) Successful in 13s
CI / eslint (pull_request) Successful in 36s
CI / oxlint (pull_request) Successful in 31s
CI / Docker frontend validation (pull_request) Successful in 53s
CI / Checkstyle Main (pull_request) Successful in 59s
CI / prettier (pull_request) Successful in 27s
CI / test-build (pull_request) Successful in 35s
2025-05-15 11:03:50 +02:00
csimonis
51984318e6 refactor(auth.service): change observable type to unknown
Some checks failed
CI / Get Changed Files (pull_request) Successful in 29s
CI / Docker backend validation (pull_request) Successful in 13s
CI / eslint (pull_request) Successful in 34s
CI / oxlint (pull_request) Successful in 30s
CI / Checkstyle Main (pull_request) Successful in 54s
CI / Docker frontend validation (pull_request) Successful in 54s
CI / prettier (pull_request) Failing after 25s
CI / test-build (pull_request) Successful in 34s
2025-05-15 11:01:47 +02:00
csimonis
decf2e21a3 feat(email): add welcome email sending on verification success
Some checks failed
CI / Get Changed Files (pull_request) Successful in 7s
CI / Docker frontend validation (pull_request) Successful in 12s
CI / eslint (pull_request) Failing after 30s
CI / oxlint (pull_request) Successful in 28s
CI / prettier (pull_request) Failing after 35s
CI / Checkstyle Main (pull_request) Successful in 1m15s
CI / test-build (pull_request) Successful in 50s
CI / Docker backend validation (pull_request) Successful in 1m29s
2025-05-15 10:58:53 +02:00
csimonis
0963dbae06 refactor(verify-email): remove unused CSS file and update template
Some checks failed
CI / Get Changed Files (pull_request) Successful in 8s
CI / Docker backend validation (pull_request) Successful in 13s
CI / eslint (pull_request) Failing after 33s
CI / oxlint (pull_request) Successful in 28s
CI / Checkstyle Main (pull_request) Successful in 51s
CI / Docker frontend validation (pull_request) Successful in 51s
CI / prettier (pull_request) Failing after 23s
CI / test-build (pull_request) Successful in 33s
2025-05-15 10:57:14 +02:00
csimonis
db9fe84259 fix: change status code for EmailNotVerifiedException
Some checks failed
CI / Get Changed Files (pull_request) Successful in 14s
CI / Docker frontend validation (pull_request) Successful in 19s
CI / oxlint (pull_request) Successful in 27s
CI / eslint (pull_request) Failing after 33s
CI / prettier (pull_request) Failing after 29s
CI / Checkstyle Main (pull_request) Successful in 1m21s
CI / Docker backend validation (pull_request) Successful in 1m25s
CI / test-build (pull_request) Successful in 41s
2025-05-15 10:51:29 +02:00
csimonis
d2225decc1 feat(auth): add email verification feature and handler
Some checks failed
CI / Get Changed Files (pull_request) Successful in 7s
CI / Docker frontend validation (pull_request) Successful in 1m2s
CI / Checkstyle Main (pull_request) Successful in 1m8s
CI / eslint (pull_request) Failing after 1m29s
CI / Docker backend validation (pull_request) Successful in 1m32s
CI / prettier (pull_request) Failing after 31s
CI / oxlint (pull_request) Successful in 44s
CI / test-build (pull_request) Successful in 38s
2025-05-15 10:49:24 +02:00
bb460f20cb
Merge pull request 'feat: implement coinflip api' (!191) from feat-coinflip-api into main
All checks were successful
Release / Release (push) Successful in 1m19s
Release / Build Frontend Image (push) Successful in 24s
Release / Build Backend Image (push) Successful in 29s
Reviewed-on: #191
Reviewed-by: Jan K9f <jan@kjan.email>
2025-05-15 08:31:42 +00:00
Phan Huy Tran
21209524be feat: implement coinflip api
All checks were successful
CI / Get Changed Files (pull_request) Successful in 10s
CI / Docker frontend validation (pull_request) Has been skipped
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
CI / Docker backend validation (pull_request) Successful in 2m13s
CI / Checkstyle Main (pull_request) Successful in 2m48s
2025-05-15 10:27:43 +02:00
csimonis
59aa831981 feat(auth): add email verification functionality 2025-05-15 10:02:41 +02:00
954e1ea6ea
Merge pull request 'feat(auth): emit closeDialog on successful registration' (!190) from refactor/dialogs into main
All checks were successful
Release / Release (push) Successful in 56s
Release / Build Backend Image (push) Successful in 22s
Release / Build Frontend Image (push) Successful in 27s
Reviewed-on: #190
2025-05-14 10:14:04 +00:00
bb2e9e4834
feat(auth): emit closeDialog on successful registration
All checks were successful
CI / Get Changed Files (pull_request) Successful in 7s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / oxlint (pull_request) Successful in 24s
CI / eslint (pull_request) Successful in 31s
CI / Docker frontend validation (pull_request) Successful in 37s
CI / prettier (pull_request) Successful in 30s
CI / test-build (pull_request) Successful in 33s
2025-05-14 12:12:33 +02:00
435f0513b5
Merge pull request 'feat(auth): add login and registration modal functionality' (!189) from refactor/dialogs into main
All checks were successful
Release / Release (push) Successful in 59s
Release / Build Backend Image (push) Successful in 23s
Release / Build Frontend Image (push) Successful in 28s
Reviewed-on: #189
Reviewed-by: Jan K9f <jan@kjan.email>
2025-05-14 10:05:56 +00:00
489f587770
style: fix comment formatting in HTML file
All checks were successful
CI / Get Changed Files (pull_request) Successful in 10s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / oxlint (pull_request) Successful in 32s
CI / eslint (pull_request) Successful in 40s
CI / Docker frontend validation (pull_request) Successful in 50s
CI / prettier (pull_request) Successful in 26s
CI / test-build (pull_request) Successful in 36s
2025-05-14 12:03:33 +02:00
f69237a1a9
style: remove unnecessary comments from HTML files 2025-05-14 12:03:33 +02:00
b51305ca64
style: format HTML for consistency and readability 2025-05-14 12:03:33 +02:00
0079ee7bf2
feat(auth): add login and registration modal functionality 2025-05-14 12:03:25 +02:00
5bbfa5994e
Merge pull request 'fix: protect slots route' (!188) from fix-slots into main
All checks were successful
Release / Release (push) Successful in 58s
Release / Build Backend Image (push) Successful in 22s
Release / Build Frontend Image (push) Successful in 27s
Reviewed-on: #188
Reviewed-by: Jan K9f <jan@kjan.email>
2025-05-14 09:49:41 +00:00
Phan Huy Tran
03bee953da style: prettier
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / oxlint (pull_request) Successful in 27s
CI / eslint (pull_request) Successful in 32s
CI / prettier (pull_request) Successful in 30s
CI / Docker frontend validation (pull_request) Successful in 39s
CI / test-build (pull_request) Successful in 33s
2025-05-14 11:45:51 +02:00
Phan Huy Tran
bee6fabcfa fix: protect slots route
Some checks failed
CI / Get Changed Files (pull_request) Successful in 18s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / prettier (pull_request) Failing after 50s
CI / oxlint (pull_request) Successful in 57s
CI / eslint (pull_request) Successful in 59s
CI / Docker frontend validation (pull_request) Successful in 1m7s
CI / test-build (pull_request) Successful in 35s
2025-05-14 11:30:40 +02:00
20e0805d0e
Merge pull request 'refactor: throw proper error on registration conflict, handle properly' (!187) from refactor-register into main
All checks were successful
Release / Release (push) Successful in 58s
Release / Build Backend Image (push) Successful in 30s
Release / Build Frontend Image (push) Successful in 28s
Reviewed-on: #187
Reviewed-by: Jan K9f <jan@kjan.email>
2025-05-14 09:24:01 +00:00
Phan Huy Tran
0bab8a343c style: run prettier
All checks were successful
CI / Get Changed Files (pull_request) Successful in 7s
CI / Docker backend validation (pull_request) Successful in 11s
CI / eslint (pull_request) Successful in 34s
CI / oxlint (pull_request) Successful in 31s
CI / Docker frontend validation (pull_request) Successful in 47s
CI / Checkstyle Main (pull_request) Successful in 50s
CI / prettier (pull_request) Successful in 24s
CI / test-build (pull_request) Successful in 33s
2025-05-14 10:40:32 +02:00
Phan Huy Tran
e7e43839eb refactor: fix linter, adjust errorhandling
Some checks failed
CI / Get Changed Files (pull_request) Successful in 10s
CI / Docker backend validation (pull_request) Successful in 17s
CI / oxlint (pull_request) Successful in 28s
CI / eslint (pull_request) Successful in 40s
CI / Checkstyle Main (pull_request) Successful in 1m1s
CI / Docker frontend validation (pull_request) Successful in 1m0s
CI / prettier (pull_request) Failing after 22s
CI / test-build (pull_request) Successful in 30s
2025-05-14 10:37:22 +02:00
Phan Huy Tran
b4351ceaea refactor: throw proper error on registration conflict, handle properly 2025-05-14 10:37:22 +02:00
46e52e20cc
Merge pull request 'fix: Add concurrency rules' (!186) from concurrency into main
Reviewed-on: #186
Reviewed-by: Phan Huy Tran <ptran@noreply.localhost>
2025-05-14 08:04:21 +00:00
48119d1faf fix: Add concurrency rules
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / Docker frontend validation (pull_request) Successful in 14s
CI / Docker backend validation (pull_request) Successful in 13s
CI / eslint (pull_request) Successful in 35s
CI / oxlint (pull_request) Successful in 30s
CI / prettier (pull_request) Successful in 32s
CI / Checkstyle Main (pull_request) Successful in 53s
CI / test-build (pull_request) Successful in 40s
2025-05-14 10:00:53 +02:00
77c48982fa
Merge pull request 'refactor: immediately display login error' (!185) from refactor-login into main
All checks were successful
Release / Release (push) Successful in 1m3s
Release / Build Backend Image (push) Successful in 29s
Release / Build Frontend Image (push) Successful in 34s
Reviewed-on: #185
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
2025-05-14 07:59:31 +00:00
Phan Huy Tran
64b2e28566 style: run quality tools
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / oxlint (pull_request) Successful in 27s
CI / eslint (pull_request) Successful in 34s
CI / Docker frontend validation (pull_request) Successful in 46s
CI / prettier (pull_request) Successful in 24s
CI / test-build (pull_request) Successful in 31s
2025-05-14 09:54:24 +02:00
Phan Huy Tran
5f9d60d332 refactor: immediately display login error 2025-05-14 09:54:24 +02:00
b37e48da2e
Merge pull request 'fix: Add needs' (!184) from add-needs-to-docker-pipelines into main
Reviewed-on: #184
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
2025-05-14 07:40:38 +00:00
2995065dfd fix: Add needs
All checks were successful
CI / Get Changed Files (pull_request) Successful in 7s
CI / Docker frontend validation (pull_request) Successful in 12s
CI / Docker backend validation (pull_request) Successful in 12s
CI / oxlint (pull_request) Successful in 24s
CI / eslint (pull_request) Successful in 32s
CI / prettier (pull_request) Successful in 27s
CI / Checkstyle Main (pull_request) Successful in 1m8s
CI / test-build (pull_request) Successful in 36s
2025-05-14 09:38:01 +02:00
fc7bd0b70f
Merge pull request 'refactor: cleanup frontend code' (!183) from refactor-frontend into main
All checks were successful
Release / Release (push) Successful in 57s
Release / Build Backend Image (push) Successful in 22s
Release / Build Frontend Image (push) Successful in 57s
Reviewed-on: #183
Reviewed-by: Jan K9f <jan@kjan.email>
2025-05-14 07:37:31 +00:00
Phan Huy Tran
f42070cfae style: run quality tools
All checks were successful
CI / Docker frontend validation (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / Get Changed Files (pull_request) Successful in 8s
CI / Checkstyle Main (pull_request) Has been skipped
CI / oxlint (pull_request) Successful in 25s
CI / eslint (pull_request) Successful in 29s
CI / prettier (pull_request) Successful in 28s
CI / test-build (pull_request) Successful in 37s
2025-05-14 09:34:41 +02:00
Phan Huy Tran
34ff29c7ac refactor: remove docker folder, refactor frontend files 2025-05-14 09:34:41 +02:00
8b547eb05b
Merge pull request 'fix: only run docker pipelines when needed' (!182) from fix-docker-pipelines into main
Reviewed-on: #182
Reviewed-by: Jan-Marlon Leibl <jleibl@proton.me>
2025-05-14 07:28:24 +00:00
0cde085102
Merge pull request 'feat(email): add deposit confirmation email' (!181) from feat/mails into main
All checks were successful
Release / Release (push) Successful in 1m6s
Release / Build Frontend Image (push) Successful in 30s
Release / Build Backend Image (push) Successful in 1m3s
Reviewed-on: #181
Reviewed-by: Jan-Marlon Leibl <jleibl@proton.me>
2025-05-14 07:27:20 +00:00
45313989e7 fix: only run docker pipelines when needed
All checks were successful
CI / Docker frontend validation (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / Get Changed Files (pull_request) Successful in 7s
CI / oxlint (pull_request) Successful in 23s
CI / eslint (pull_request) Successful in 30s
CI / prettier (pull_request) Successful in 30s
CI / Checkstyle Main (pull_request) Successful in 48s
CI / test-build (pull_request) Successful in 34s
2025-05-14 09:22:51 +02:00
csimonis
7fbe1c3753 feat(email): add deposit confirmation email template and logic
All checks were successful
CI / Get Changed Files (pull_request) Successful in 9s
CI / Docker frontend validation (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
CI / Docker backend validation (pull_request) Successful in 1m15s
CI / Checkstyle Main (pull_request) Successful in 1m17s
2025-05-14 09:22:15 +02:00
c443f547cd
Merge pull request 'fix: Fix buttons on starting page' (!180) from fix-links-on-landing into main
All checks were successful
Release / Release (push) Successful in 59s
Release / Build Backend Image (push) Successful in 22s
Release / Build Frontend Image (push) Successful in 27s
Reviewed-on: #180
2025-05-14 07:20:42 +00:00
96609cf912
Merge branch 'main' into fix-links-on-landing
All checks were successful
CI / Get Changed Files (pull_request) Successful in 14s
CI / Docker frontend validation (pull_request) Successful in 18s
CI / Docker backend validation (pull_request) Successful in 16s
CI / Checkstyle Main (pull_request) Has been skipped
CI / oxlint (pull_request) Successful in 26s
CI / eslint (pull_request) Successful in 38s
CI / prettier (pull_request) Successful in 31s
CI / test-build (pull_request) Successful in 33s
2025-05-14 07:16:38 +00:00
b2ceb8e9af
style(landing): format HTML links for better readability
All checks were successful
CI / Get Changed Files (pull_request) Successful in 13s
CI / Docker backend validation (pull_request) Successful in 17s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Successful in 43s
CI / eslint (pull_request) Successful in 28s
CI / oxlint (pull_request) Successful in 23s
CI / prettier (pull_request) Successful in 24s
CI / test-build (pull_request) Successful in 52s
2025-05-14 09:16:04 +02:00
98bc3cc2ca
style(landing): update button to inline-block text-center
Some checks failed
CI / Get Changed Files (pull_request) Successful in 9s
CI / Docker backend validation (pull_request) Successful in 9s
CI / oxlint (pull_request) Successful in 28s
CI / Docker frontend validation (pull_request) Successful in 41s
CI / eslint (pull_request) Successful in 34s
CI / prettier (pull_request) Failing after 27s
CI / Checkstyle Main (pull_request) Successful in 1m0s
CI / test-build (pull_request) Successful in 45s
2025-05-14 09:15:36 +02:00
Phan Huy Tran
0a0c801716
feat: import mailer during runtime and compiling, remove duplicated games section 2025-05-14 09:14:59 +02:00
565d31db1e fix: prettier
All checks were successful
CI / Get Changed Files (pull_request) Successful in 9s
CI / Docker backend validation (pull_request) Successful in 11s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Successful in 33s
CI / eslint (pull_request) Successful in 26s
CI / oxlint (pull_request) Successful in 21s
CI / prettier (pull_request) Successful in 22s
CI / test-build (pull_request) Successful in 31s
2025-05-14 09:14:00 +02:00
125f1aec83
Merge pull request 'feat: import mailer during runtime and compiling, remove duplicated games section' (!179) from duplicate-games into main
All checks were successful
Release / Release (push) Successful in 1m4s
Release / Build Backend Image (push) Successful in 37s
Release / Build Frontend Image (push) Successful in 38s
Reviewed-on: #179
Reviewed-by: Jan-Marlon Leibl <jleibl@proton.me>
2025-05-14 07:13:06 +00:00
aca65a397d
fix: Fix buttons on starting page
Some checks failed
CI / Get Changed Files (pull_request) Successful in 12s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Successful in 14s
CI / eslint (pull_request) Successful in 32s
CI / Docker frontend validation (pull_request) Successful in 44s
CI / oxlint (pull_request) Successful in 27s
CI / prettier (pull_request) Failing after 25s
CI / test-build (pull_request) Successful in 34s
2025-05-14 09:11:33 +02:00
77f4c8e71b
Merge branch 'main' into duplicate-games
All checks were successful
CI / Get Changed Files (pull_request) Successful in 10s
CI / Docker backend validation (pull_request) Successful in 19s
CI / Docker frontend validation (pull_request) Successful in 44s
CI / oxlint (pull_request) Successful in 30s
CI / eslint (pull_request) Successful in 36s
CI / Checkstyle Main (pull_request) Successful in 1m2s
CI / prettier (pull_request) Successful in 25s
CI / test-build (pull_request) Successful in 41s
2025-05-14 07:10:43 +00:00
fe2f65c764
Merge pull request 'chore(deps): update devdependencies (non-major)' (!175) from renovate/devdependencies-(non-major) into main
All checks were successful
Release / Release (push) Successful in 58s
Release / Build Backend Image (push) Successful in 23s
Release / Build Frontend Image (push) Successful in 24s
Reviewed-on: #175
Reviewed-by: Jan-Marlon Leibl <jleibl@proton.me>
2025-05-14 07:08:13 +00:00
7dae746910
Merge branch 'main' into renovate/devdependencies-(non-major)
All checks were successful
CI / Get Changed Files (pull_request) Successful in 11s
CI / Docker backend validation (pull_request) Successful in 15s
CI / Docker frontend validation (pull_request) Successful in 1m0s
CI / Checkstyle Main (pull_request) Has been skipped
CI / oxlint (pull_request) Successful in 30s
CI / eslint (pull_request) Successful in 38s
CI / prettier (pull_request) Successful in 25s
CI / test-build (pull_request) Successful in 41s
2025-05-14 07:01:50 +00:00
Phan Huy Tran
961f3b7ec5 feat: import mailer during runtime and compiling, remove duplicated games section
All checks were successful
CI / Get Changed Files (pull_request) Successful in 9s
CI / Docker frontend validation (pull_request) Successful in 59s
CI / Docker backend validation (pull_request) Successful in 1m39s
CI / oxlint (pull_request) Successful in 30s
CI / eslint (pull_request) Successful in 39s
CI / prettier (pull_request) Successful in 32s
CI / Checkstyle Main (pull_request) Successful in 1m26s
CI / test-build (pull_request) Successful in 59s
2025-05-14 09:00:51 +02:00
4f1e90efdf
Merge pull request 'fix: update starting balance and welcome bonus text' (!178) from task/CAS-68/AdjustStartMoney into main
All checks were successful
Release / Release (push) Successful in 1m36s
Release / Build Frontend Image (push) Successful in 37s
Release / Build Backend Image (push) Successful in 40s
Reviewed-on: #178
Reviewed-by: Jan K9f <jan@kjan.email>
2025-05-14 07:00:24 +00:00
35638ce3ae
Merge branch 'main' into renovate/devdependencies-(non-major)
All checks were successful
CI / Get Changed Files (pull_request) Successful in 21s
CI / Docker backend validation (pull_request) Successful in 22s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Successful in 1m2s
CI / eslint (pull_request) Successful in 43s
CI / oxlint (pull_request) Successful in 36s
CI / prettier (pull_request) Successful in 42s
CI / test-build (pull_request) Successful in 1m2s
2025-05-14 06:59:08 +00:00
991ff11fed
Merge pull request 'chore(deps): update postgres docker tag to v17.5' (!176) from renovate/all-minor-patch into main
Reviewed-on: #176
Reviewed-by: Jan-Marlon Leibl <jleibl@proton.me>
2025-05-14 06:58:54 +00:00
88b68f0547
Merge branch 'main' into task/CAS-68/AdjustStartMoney
All checks were successful
CI / Get Changed Files (pull_request) Successful in 11s
CI / Docker frontend validation (pull_request) Successful in 16s
CI / oxlint (pull_request) Successful in 29s
CI / eslint (pull_request) Successful in 37s
CI / Checkstyle Main (pull_request) Successful in 1m19s
CI / Docker backend validation (pull_request) Successful in 1m27s
CI / prettier (pull_request) Successful in 23s
CI / test-build (pull_request) Successful in 43s
2025-05-14 06:57:30 +00:00
893939a081
fix: update starting balance and welcome bonus text
All checks were successful
CI / Get Changed Files (pull_request) Successful in 9s
CI / Docker frontend validation (pull_request) Successful in 49s
CI / Checkstyle Main (pull_request) Successful in 1m29s
CI / eslint (pull_request) Successful in 1m32s
CI / oxlint (pull_request) Successful in 59s
CI / prettier (pull_request) Successful in 34s
CI / test-build (pull_request) Successful in 58s
CI / Docker backend validation (pull_request) Successful in 2m44s
2025-05-14 08:55:44 +02:00
d449af9732
Merge pull request 'feat: add welcome mail' (!177) from feat/mails into main
All checks were successful
Release / Release (push) Successful in 1m34s
Release / Build Backend Image (push) Successful in 30s
Release / Build Frontend Image (push) Successful in 29s
Reviewed-on: #177
Reviewed-by: Phan Huy Tran <ptran@noreply.localhost>
2025-05-14 06:49:42 +00:00
csimonis
73710a1542 feat: whoops
All checks were successful
CI / Get Changed Files (pull_request) Successful in 7s
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
CI / Docker frontend validation (pull_request) Successful in 45s
CI / Docker backend validation (pull_request) Successful in 1m2s
CI / Checkstyle Main (pull_request) Successful in 1m1s
2025-05-14 06:48:25 +00:00
csimonis
e6c34ffe90 feat(email): update registration email template to welcome email 2025-05-14 06:48:25 +00:00
csimonis
13b3443127 chore: crazy ahh email template and styles 2025-05-14 06:48:25 +00:00
110dacb6dd feat(email): add email service and configuration for sending emails 2025-05-14 06:48:25 +00:00
7b0e37b14b
chore(deps): update devdependencies (non-major)
All checks were successful
CI / Get Changed Files (pull_request) Successful in 11s
CI / Checkstyle Main (pull_request) Has been skipped
CI / oxlint (pull_request) Successful in 45s
CI / eslint (pull_request) Successful in 54s
CI / prettier (pull_request) Successful in 34s
CI / Docker frontend validation (pull_request) Successful in 1m53s
CI / test-build (pull_request) Successful in 51s
CI / Docker backend validation (pull_request) Successful in 2m47s
2025-05-12 18:01:47 +00:00
156379c12c
chore(deps): update postgres docker tag to v17.5
All checks were successful
CI / Get Changed Files (pull_request) Successful in 47s
CI / Checkstyle Main (pull_request) Has been skipped
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
CI / Docker frontend validation (pull_request) Successful in 2m27s
CI / Docker backend validation (pull_request) Successful in 3m15s
2025-05-08 21:02:03 +00:00
7f2aeefba2
Merge pull request 'perf: increase slots performance by 1500% !!!!' (!174) from perf-slots into main
All checks were successful
Release / Release (push) Successful in 1m37s
Release / Build Frontend Image (push) Successful in 27s
Release / Build Backend Image (push) Successful in 29s
Reviewed-on: #174
Reviewed-by: Jan K9f <jan@kjan.email>
2025-05-08 12:23:31 +00:00
Phan Huy Tran
27c7ee5ff9 style: fml: fml
All checks were successful
CI / Get Changed Files (pull_request) Successful in 7s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Successful in 10s
CI / oxlint (pull_request) Successful in 25s
CI / eslint (pull_request) Successful in 31s
CI / prettier (pull_request) Successful in 28s
CI / Docker frontend validation (pull_request) Successful in 43s
CI / test-build (pull_request) Successful in 32s
2025-05-08 14:21:22 +02:00
Phan Huy Tran
e4f8127503 perf: increase slots performance by 1500% !!!!
Some checks failed
CI / Get Changed Files (pull_request) Successful in 1m28s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Successful in 1m47s
CI / prettier (pull_request) Failing after 1m13s
CI / oxlint (pull_request) Successful in 1m28s
CI / eslint (pull_request) Successful in 1m32s
CI / Docker backend validation (pull_request) Successful in 3m1s
CI / test-build (pull_request) Successful in 29s
2025-05-08 14:17:14 +02:00
bce3750f34
Merge pull request 'fix: fix prod api url' (!173) from fix/prod into main
All checks were successful
Release / Release (push) Successful in 59s
Release / Build Backend Image (push) Successful in 21s
Release / Build Frontend Image (push) Successful in 28s
Reviewed-on: #173
2025-05-07 19:09:19 +00:00
127c1229e8 fix: run prettier
All checks were successful
CI / Get Changed Files (pull_request) Successful in 40s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Successful in 41s
CI / oxlint (pull_request) Successful in 29s
CI / eslint (pull_request) Successful in 37s
CI / prettier (pull_request) Successful in 35s
CI / Docker frontend validation (pull_request) Successful in 1m21s
CI / test-build (pull_request) Successful in 32s
2025-05-07 21:03:31 +02:00
864e77c095
fix: fix prod api url
Some checks failed
CI / Get Changed Files (pull_request) Successful in 10s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Successful in 12s
CI / oxlint (pull_request) Successful in 28s
CI / prettier (pull_request) Failing after 28s
CI / Docker frontend validation (pull_request) Successful in 47s
CI / eslint (pull_request) Successful in 35s
CI / test-build (pull_request) Successful in 31s
2025-05-07 18:17:00 +02:00
ba6f72fb97
Merge pull request 'feat(slots): add slot machine component with styling and logic' (!170) from task/CAS-44/lootbox-selection into main
All checks were successful
Release / Release (push) Successful in 59s
Release / Build Frontend Image (push) Successful in 29s
Release / Build Backend Image (push) Successful in 31s
Reviewed-on: #170
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
2025-05-07 16:10:05 +00:00
ee07abb189
style(user.service.ts): fix whitespace in user service file
All checks were successful
CI / Get Changed Files (pull_request) Successful in 11s
CI / Docker backend validation (pull_request) Successful in 14s
CI / Docker frontend validation (pull_request) Successful in 45s
CI / oxlint (pull_request) Successful in 33s
CI / eslint (pull_request) Successful in 46s
CI / Checkstyle Main (pull_request) Successful in 1m2s
CI / prettier (pull_request) Successful in 24s
CI / test-build (pull_request) Successful in 35s
2025-05-07 18:02:35 +02:00
226675de03
refactor(auth): replace UserService with AuthService usage
Some checks failed
CI / Get Changed Files (pull_request) Successful in 37s
CI / Docker backend validation (pull_request) Successful in 14s
CI / Docker frontend validation (pull_request) Successful in 51s
CI / eslint (pull_request) Successful in 42s
CI / oxlint (pull_request) Successful in 32s
CI / Checkstyle Main (pull_request) Successful in 1m2s
CI / prettier (pull_request) Failing after 27s
CI / test-build (pull_request) Successful in 59s
2025-05-07 18:02:12 +02:00
205bf1e52c
style: Clean up whitespace in component files
All checks were successful
CI / Get Changed Files (pull_request) Successful in 9s
CI / Docker backend validation (pull_request) Successful in 12s
CI / eslint (pull_request) Successful in 35s
CI / Docker frontend validation (pull_request) Successful in 52s
CI / oxlint (pull_request) Successful in 25s
CI / Checkstyle Main (pull_request) Successful in 55s
CI / prettier (pull_request) Successful in 21s
CI / test-build (pull_request) Successful in 31s
2025-05-07 17:56:12 +02:00
7aefe67aa0
refactor(lottery): improve code structure and readability
Some checks failed
CI / Get Changed Files (pull_request) Successful in 7s
CI / eslint (pull_request) Successful in 38s
CI / Docker frontend validation (pull_request) Successful in 50s
CI / oxlint (pull_request) Successful in 27s
CI / prettier (pull_request) Failing after 28s
CI / Docker backend validation (pull_request) Successful in 1m23s
CI / Checkstyle Main (pull_request) Successful in 1m20s
CI / test-build (pull_request) Successful in 40s
2025-05-07 17:55:31 +02:00
a3f34e960b
feat(slots): update balance handling on spin results 2025-05-07 17:47:34 +02:00
93c5dc7fe3
style: format import statements for readability 2025-05-07 17:34:34 +02:00
4d76655e2f
style(slots): clean up unused button styling 2025-05-07 17:34:22 +02:00
98668a3fb0
style: clean up import statements for consistency
Some checks failed
CI / Get Changed Files (pull_request) Successful in 8s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Successful in 12s
CI / oxlint (pull_request) Successful in 27s
CI / eslint (pull_request) Successful in 31s
CI / Docker frontend validation (pull_request) Successful in 44s
CI / prettier (pull_request) Failing after 27s
CI / test-build (pull_request) Successful in 34s
2025-05-07 17:31:04 +02:00
a622dbc7f4
feat(slots): add slot machine component with styling and logic 2025-05-07 17:31:04 +02:00
4a312dda35
Merge pull request 'fix: fix login/register' (!172) from bugfix/fix-login into main
All checks were successful
Release / Release (push) Successful in 1m19s
Release / Build Backend Image (push) Successful in 24s
Release / Build Frontend Image (push) Successful in 31s
Reviewed-on: #172
Reviewed-by: Jan-Marlon Leibl <jleibl@proton.me>
2025-05-07 15:30:27 +00:00
88c2f49b03
style(navbar): format import statements and arrow function
All checks were successful
CI / Get Changed Files (pull_request) Successful in 7s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Successful in 9s
CI / oxlint (pull_request) Successful in 24s
CI / Docker frontend validation (pull_request) Successful in 37s
CI / eslint (pull_request) Successful in 29s
CI / prettier (pull_request) Successful in 28s
CI / test-build (pull_request) Successful in 31s
2025-05-07 17:26:44 +02:00
db6bf4f199
refactor(auth.service): remove unused imports and variables
Some checks failed
CI / Get Changed Files (pull_request) Successful in 10s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Successful in 14s
CI / oxlint (pull_request) Successful in 26s
CI / eslint (pull_request) Successful in 34s
CI / Docker frontend validation (pull_request) Successful in 47s
CI / prettier (pull_request) Failing after 23s
CI / test-build (pull_request) Successful in 32s
2025-05-07 17:24:32 +02:00
ad77c76d14
fix: fix login/register
Some checks failed
CI / Get Changed Files (pull_request) Successful in 8s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Successful in 10s
CI / Docker frontend validation (pull_request) Successful in 36s
CI / oxlint (pull_request) Successful in 25s
CI / prettier (pull_request) Failing after 26s
CI / eslint (pull_request) Successful in 32s
CI / test-build (pull_request) Successful in 41s
2025-05-07 17:23:51 +02:00
62e7e0ec65
Merge pull request 'feat(auth): rewrite authentication to not use oauth manage users in app instead' (!163) from feature/authentication into main
All checks were successful
Release / Release (push) Successful in 1m3s
Release / Build Frontend Image (push) Successful in 28s
Release / Build Backend Image (push) Successful in 31s
Reviewed-on: #163
Reviewed-by: Jan-Marlon Leibl <jleibl@proton.me>
2025-05-07 14:28:49 +00:00
5a0d7b2313
chore: prettier
All checks were successful
CI / Get Changed Files (pull_request) Successful in 12s
CI / Docker backend validation (pull_request) Successful in 13s
CI / eslint (pull_request) Successful in 36s
CI / Docker frontend validation (pull_request) Successful in 53s
CI / Checkstyle Main (pull_request) Successful in 52s
CI / oxlint (pull_request) Successful in 24s
CI / prettier (pull_request) Successful in 26s
CI / test-build (pull_request) Successful in 43s
2025-05-07 16:26:21 +02:00
91e546226d
chore: shitty ahh rebase
Some checks failed
CI / Get Changed Files (pull_request) Successful in 10s
CI / Docker backend validation (pull_request) Successful in 10s
CI / oxlint (pull_request) Successful in 28s
CI / Docker frontend validation (pull_request) Successful in 43s
CI / eslint (pull_request) Successful in 34s
CI / Checkstyle Main (pull_request) Successful in 46s
CI / prettier (pull_request) Failing after 24s
CI / test-build (pull_request) Successful in 34s
2025-05-07 16:23:06 +02:00
84250969aa
feat(auth): add user refresh functionality in services
Some checks failed
CI / Get Changed Files (pull_request) Successful in 9s
CI / Docker backend validation (pull_request) Successful in 10s
CI / Docker frontend validation (pull_request) Failing after 36s
CI / oxlint (pull_request) Failing after 27s
CI / eslint (pull_request) Failing after 33s
CI / Checkstyle Main (pull_request) Successful in 46s
CI / prettier (pull_request) Failing after 23s
CI / test-build (pull_request) Failing after 31s
2025-05-07 15:39:39 +02:00
851cfe1bc8
refactor: remove unused parameters and improve formatting 2025-05-07 15:39:39 +02:00
1111c91407
feat(auth): update login and register components design 2025-05-07 15:39:39 +02:00
a178386355
style: clean up import statements for consistency 2025-05-07 15:39:39 +02:00
0cf2ea3438
refactor: clean up unused imports across controllers 2025-05-07 15:39:39 +02:00
8ba6d4e4d9
feat(auth): put login and register templates in files 2025-05-07 15:39:39 +02:00
b1e173f44b
refactor: remove redundant user not found message handling 2025-05-07 15:39:39 +02:00
29a53ea781
fix: fix stupid ahh bug where u get logged out when doing fucking anything stupid fucking http interceptor 2025-05-07 15:39:39 +02:00
3b95725d88
refactor: simplify user service and update routes 2025-05-07 15:39:38 +02:00
51540c930b
style: format code and improve readability 2025-05-07 15:39:11 +02:00
35d8fbaea0
feat: implement authentication with JWT and user management 2025-05-07 15:38:53 +02:00
c4c762cafe
Merge pull request 'feat: add user balance updates during lootbox opening' (!169) from task/CAS-44/lootbox-selection into main
All checks were successful
Release / Release (push) Successful in 1m8s
Release / Build Backend Image (push) Successful in 29s
Release / Build Frontend Image (push) Successful in 30s
Reviewed-on: #169
Reviewed-by: Jan K9f <jan@kjan.email>
2025-05-07 13:33:10 +00:00
c92a182123
style: fix formatting and add missing commas in code
All checks were successful
CI / Get Changed Files (pull_request) Successful in 18s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Successful in 15s
CI / Docker frontend validation (pull_request) Successful in 52s
CI / oxlint (pull_request) Successful in 29s
CI / eslint (pull_request) Successful in 38s
CI / prettier (pull_request) Successful in 30s
CI / test-build (pull_request) Successful in 46s
2025-05-07 15:30:40 +02:00
790485decc
feat(lootboxes): add balance check for opening lootboxes
Some checks failed
CI / Docker backend validation (pull_request) Successful in 11s
CI / Get Changed Files (pull_request) Successful in 36s
CI / Docker frontend validation (pull_request) Successful in 42s
CI / Checkstyle Main (pull_request) Has been skipped
CI / oxlint (pull_request) Successful in 30s
CI / prettier (pull_request) Failing after 30s
CI / eslint (pull_request) Successful in 38s
CI / test-build (pull_request) Successful in 33s
2025-05-07 15:30:24 +02:00
bca2649afd
Merge branch 'main' into task/CAS-44/lootbox-selection
Some checks failed
CI / Get Changed Files (pull_request) Successful in 12s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Successful in 13s
CI / Docker backend validation (pull_request) Successful in 11s
CI / oxlint (pull_request) Successful in 28s
CI / eslint (pull_request) Successful in 30s
CI / prettier (pull_request) Failing after 29s
CI / test-build (pull_request) Successful in 33s
2025-05-07 13:23:37 +00:00
513ff7886b
feat: add user balance updates during lootbox opening
Some checks failed
CI / Get Changed Files (pull_request) Successful in 9s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Successful in 10s
CI / Docker frontend validation (pull_request) Successful in 34s
CI / oxlint (pull_request) Successful in 22s
CI / prettier (pull_request) Failing after 26s
CI / eslint (pull_request) Successful in 34s
CI / test-build (pull_request) Successful in 43s
2025-05-07 15:22:37 +02:00
b3293a8333
Merge pull request 'style: remove unnecessary debug information from HTML' (!168) from task/CAS-44/lootbox-selection into main
All checks were successful
Release / Release (push) Successful in 1m16s
Release / Build Backend Image (push) Successful in 28s
Release / Build Frontend Image (push) Successful in 30s
Reviewed-on: #168
Reviewed-by: Jan K9f <jan@kjan.email>
2025-05-07 13:20:20 +00:00
d336ca77d3
style: remove unnecessary debug information from HTML
All checks were successful
CI / Get Changed Files (pull_request) Successful in 12s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Successful in 16s
CI / eslint (pull_request) Successful in 35s
CI / oxlint (pull_request) Successful in 29s
CI / Docker frontend validation (pull_request) Successful in 53s
CI / prettier (pull_request) Successful in 28s
CI / test-build (pull_request) Successful in 33s
2025-05-07 15:05:42 +02:00
ac3dea3cb0
Merge pull request 'feat: Lootboxes' (!159) from task/CAS-44/lootbox-selection into main
All checks were successful
Release / Release (push) Successful in 1m30s
Release / Build Backend Image (push) Successful in 28s
Release / Build Frontend Image (push) Successful in 33s
Reviewed-on: #159
Reviewed-by: Jan-Marlon Leibl <jleibl@proton.me>
2025-05-07 13:01:02 +00:00
c7f26c4df3
style: format code for better readability and consistency
All checks were successful
CI / Get Changed Files (pull_request) Successful in 10s
CI / Docker backend validation (pull_request) Successful in 17s
CI / Docker frontend validation (pull_request) Successful in 48s
CI / Checkstyle Main (pull_request) Has been skipped
CI / oxlint (pull_request) Successful in 27s
CI / eslint (pull_request) Successful in 31s
CI / prettier (pull_request) Successful in 36s
CI / test-build (pull_request) Successful in 1m1s
2025-05-07 14:58:14 +02:00
90368dce7c
chore: remove unused lootbox image assets 2025-05-07 14:58:14 +02:00
d29fc10cc8
refactor: remove unused imports and clean up code 2025-05-07 14:58:14 +02:00
667e4313d2
style: clean up whitespace and formatting in files 2025-05-07 14:58:14 +02:00
0bf32b4b93
style: update lootbox component styles and remove debug code 2025-05-07 14:58:14 +02:00
f44f5ed02b
style: Improve CSS formatting and animation adjustments 2025-05-07 14:58:13 +02:00
6f61e6dc3d
style: clean up and reorganize lootbox component styles 2025-05-07 14:58:13 +02:00
8e27c9c7c3
feat(lootboxes): add lootbox opening feature and images 2025-05-07 14:58:13 +02:00
b58ceeeaab
feat(lootboxes): add lootbox selection feature and routes 2025-05-07 14:58:13 +02:00
bb1134abd3
Merge pull request 'refactor: subtract betamount on blank status' (!166) from slots-fix-blank-result into main
All checks were successful
Release / Release (push) Successful in 1m7s
Release / Build Frontend Image (push) Successful in 28s
Release / Build Backend Image (push) Successful in 33s
Reviewed-on: #166
Reviewed-by: Jan K9f <jan@kjan.email>
2025-05-07 12:50:19 +00:00
Phan Huy Tran
e2e249d899 refactor: oops
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Successful in 9s
CI / oxlint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Successful in 48s
CI / Checkstyle Main (pull_request) Successful in 52s
2025-05-07 14:48:59 +02:00
Phan Huy Tran
6e101a0cab refactor: subtract betamount on blank status
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / Docker frontend validation (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
CI / Docker backend validation (pull_request) Successful in 49s
CI / Checkstyle Main (pull_request) Successful in 51s
2025-05-07 14:47:22 +02:00
1a42057962
Merge pull request 'feat: add bare slots frontend, remove bun start warnings (CAS-61)' (!164) from slots-frontend into main
All checks were successful
Release / Release (push) Successful in 59s
Release / Build Backend Image (push) Successful in 22s
Release / Build Frontend Image (push) Successful in 26s
Reviewed-on: #164
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
2025-05-07 12:32:52 +00:00
572100678f
Merge branch 'main' into slots-frontend
All checks were successful
CI / Get Changed Files (pull_request) Successful in 7s
CI / Docker backend validation (pull_request) Successful in 11s
CI / Docker frontend validation (pull_request) Successful in 21s
CI / Checkstyle Main (pull_request) Has been skipped
CI / oxlint (pull_request) Successful in 30s
CI / prettier (pull_request) Successful in 29s
CI / eslint (pull_request) Successful in 42s
CI / test-build (pull_request) Successful in 41s
2025-05-07 12:29:19 +00:00
Phan Huy Tran
23673ca0fc revert: remove color styling
All checks were successful
CI / Get Changed Files (pull_request) Successful in 10s
CI / Docker backend validation (pull_request) Successful in 12s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Successful in 38s
CI / oxlint (pull_request) Successful in 31s
CI / eslint (pull_request) Successful in 40s
CI / prettier (pull_request) Successful in 34s
CI / test-build (pull_request) Successful in 51s
2025-05-07 14:28:39 +02:00
Phan Huy Tran
201b305fe0 feat: add starting stuff
All checks were successful
CI / Get Changed Files (pull_request) Successful in 7s
CI / Docker frontend validation (pull_request) Successful in 15s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Successful in 1m7s
CI / oxlint (pull_request) Successful in 25s
CI / eslint (pull_request) Successful in 32s
CI / prettier (pull_request) Successful in 24s
CI / test-build (pull_request) Successful in 42s
2025-05-07 14:27:46 +02:00
Phan Huy Tran
fd7c3b3503 refactor: loop through result matrix 2025-05-07 14:27:46 +02:00
Phan Huy Tran
864cb28aac style: fix prettier 2025-05-07 14:27:46 +02:00
Phan Huy Tran
3f00a5b359 style: fix linter issues 2025-05-07 14:27:46 +02:00
Phan Huy Tran
efc2a8ecec style: run prettier 2025-05-07 14:27:46 +02:00
Phan Huy Tran
bc56b498ee feat: add bare slots frontend, remove bun start warnings 2025-05-07 14:27:46 +02:00
7c2e3381c7
Merge pull request 'feat: add blank status' (!165) from slots-blank into main
All checks were successful
Release / Release (push) Successful in 1m17s
Release / Build Frontend Image (push) Successful in 30s
Release / Build Backend Image (push) Successful in 37s
Reviewed-on: #165
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
2025-05-07 12:25:57 +00:00
Phan Huy Tran
f813512436 feat: add blank status
All checks were successful
CI / Get Changed Files (pull_request) Successful in 7s
CI / eslint (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Successful in 9s
CI / oxlint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Successful in 49s
CI / Checkstyle Main (pull_request) Successful in 52s
2025-05-07 14:17:57 +02:00
Phan Huy Tran
cf79298b04 feat: add blank status 2025-05-07 14:17:41 +02:00
8fa7a9830c
Merge pull request 'chore(deps): update dependency typescript-eslint to v8.32.0' (!160) from renovate/devdependencies-(non-major) into main
All checks were successful
Release / Release (push) Successful in 55s
Release / Build Backend Image (push) Successful in 22s
Release / Build Frontend Image (push) Successful in 42s
Reviewed-on: #160
Reviewed-by: Jan K9f <jan@kjan.email>
2025-05-07 11:27:33 +00:00
56f1f325f2
Merge pull request 'refactor: remove useless field' (!162) from idk into main
All checks were successful
Release / Release (push) Successful in 58s
Release / Build Frontend Image (push) Successful in 28s
Release / Build Backend Image (push) Successful in 38s
Reviewed-on: #162
Reviewed-by: Jan K9f <jan@kjan.email>
2025-05-07 11:22:37 +00:00
99942b5902
Merge branch 'main' into idk
All checks were successful
CI / Get Changed Files (pull_request) Successful in 9s
CI / Docker frontend validation (pull_request) Successful in 12s
CI / Docker backend validation (pull_request) Successful in 40s
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
CI / Checkstyle Main (pull_request) Successful in 53s
2025-05-07 11:20:28 +00:00
Phan Huy Tran
adf0b27d27 refactor: remove useless field
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / Docker frontend validation (pull_request) Successful in 8s
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
CI / Docker backend validation (pull_request) Successful in 1m2s
CI / Checkstyle Main (pull_request) Successful in 1m3s
2025-05-07 13:20:18 +02:00
de92acab35
Merge pull request 'revert: lootbox fixtures' (!161) from idk into main
All checks were successful
Release / Release (push) Successful in 1m33s
Release / Build Frontend Image (push) Successful in 27s
Release / Build Backend Image (push) Successful in 32s
Reviewed-on: #161
Reviewed-by: Jan K9f <jan@kjan.email>
2025-05-07 11:14:17 +00:00
Phan Huy Tran
4e39a6691f revert: lootbox fixtures
All checks were successful
CI / Get Changed Files (pull_request) Successful in 32s
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
CI / Docker frontend validation (pull_request) Successful in 1m46s
CI / Docker backend validation (pull_request) Successful in 2m22s
CI / Checkstyle Main (pull_request) Successful in 3m36s
2025-05-07 13:09:19 +02:00
74138a0bc6
chore(deps): update dependency typescript-eslint to v8.32.0
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Successful in 30s
CI / oxlint (pull_request) Successful in 36s
CI / eslint (pull_request) Successful in 43s
CI / prettier (pull_request) Successful in 26s
CI / Docker frontend validation (pull_request) Successful in 1m7s
CI / test-build (pull_request) Successful in 34s
2025-05-05 18:01:58 +00:00
a80ed2f37e
Merge pull request 'fix(deps): update dependencies (major and minor)' (!156) from renovate/dependencies-(major-and-minor) into main
All checks were successful
Release / Release (push) Successful in 55s
Release / Build Frontend Image (push) Successful in 28s
Release / Build Backend Image (push) Successful in 31s
Reviewed-on: #156
Reviewed-by: Jan K9f <jan@kjan.email>
2025-05-05 07:15:18 +00:00
5918552389
Merge pull request 'chore(deps): update devdependencies (non-major)' (!155) from renovate/devdependencies-(non-major) into main
Some checks failed
Release / Build Backend Image (push) Blocked by required conditions
Release / Build Frontend Image (push) Blocked by required conditions
Release / Release (push) Has been cancelled
Reviewed-on: #155
Reviewed-by: Jan K9f <jan@kjan.email>
2025-05-05 07:15:00 +00:00
0e09c975df
chore(deps): update devdependencies (non-major)
All checks were successful
CI / Get Changed Files (pull_request) Successful in 23s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Successful in 12s
CI / Docker frontend validation (pull_request) Successful in 35s
CI / oxlint (pull_request) Successful in 1m26s
CI / eslint (pull_request) Successful in 1m38s
CI / prettier (pull_request) Successful in 1m35s
CI / test-build (pull_request) Successful in 1m29s
2025-05-05 07:02:07 +00:00
4704f5c42e
fix(deps): update dependencies (major and minor)
All checks were successful
CI / Get Changed Files (pull_request) Successful in 38s
CI / Docker frontend validation (pull_request) Successful in 40s
CI / Docker backend validation (pull_request) Successful in 40s
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
CI / Checkstyle Main (pull_request) Successful in 1m52s
2025-05-05 07:01:52 +00:00
644d90e1a6
Merge pull request 'fix: update angular version in readme' (!158) from update-angular-version-in-readme into main
Reviewed-on: #158
2025-05-05 06:28:48 +00:00
57e7a664b0 fix: update angular version in readme
All checks were successful
CI / Get Changed Files (pull_request) Successful in 7s
CI / Checkstyle Main (pull_request) Has been skipped
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
CI / Docker frontend validation (pull_request) Successful in 28s
CI / Docker backend validation (pull_request) Successful in 1m30s
2025-05-05 07:54:34 +02:00
60cda9502d
Merge pull request 'feat(docker): remove random docker bullshit move compose.yml' (!157) from remove-docker-shit into main
Reviewed-on: #157
2025-05-02 08:08:32 +00:00
csimonis
70cb067d35 feat(docker): add Docker Compose for PostgreSQL service
All checks were successful
CI / Get Changed Files (pull_request) Successful in 19s
CI / Checkstyle Main (pull_request) Has been skipped
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
CI / Docker backend validation (pull_request) Successful in 2m4s
CI / Docker frontend validation (pull_request) Successful in 10s
2025-05-02 09:57:12 +02:00
93d002e1e6
Merge pull request 'chore(deps): update dependency gradle to v8.14' (!153) from renovate/all-minor-patch into main
All checks were successful
Release / Release (push) Successful in 1m1s
Release / Build Frontend Image (push) Successful in 26s
Release / Build Backend Image (push) Successful in 30s
Reviewed-on: #153
Reviewed-by: Jan K9f <jan@kjan.email>
2025-04-25 18:21:25 +00:00
cdb18c7e22
chore(deps): update dependency gradle to v8.14
All checks were successful
CI / Get Changed Files (pull_request) Successful in 7s
CI / Docker frontend validation (pull_request) Successful in 10s
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
CI / Checkstyle Main (pull_request) Successful in 1m9s
CI / Docker backend validation (pull_request) Successful in 1m46s
2025-04-25 18:19:18 +00:00
aa8821bdc2
Merge pull request 'feat(ci): add Docker validation jobs for frontend and backend' (!154) from update-pipelines into main
Reviewed-on: #154
2025-04-25 18:16:47 +00:00
85bf7b571d
feat(ci): add Docker validation jobs for frontend and backend
All checks were successful
CI / Get Changed Files (pull_request) Successful in 31s
CI / Docker backend validation (pull_request) Successful in 32s
CI / Docker frontend validation (pull_request) Successful in 35s
CI / oxlint (pull_request) Successful in 28s
CI / prettier (pull_request) Successful in 31s
CI / eslint (pull_request) Successful in 35s
CI / test-build (pull_request) Successful in 36s
CI / Checkstyle Main (pull_request) Successful in 1m27s
2025-04-25 20:12:36 +02:00
3770752ab4
Merge pull request 'chore(frontend): update project name and improve linting command' (!152) from add-oxlint-and-rename into main
All checks were successful
Release / Release (push) Successful in 1m1s
Release / Build Backend Image (push) Successful in 25s
Release / Build Frontend Image (push) Successful in 43s
Reviewed-on: #152
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
2025-04-25 07:16:18 +00:00
7b94fd56bc
feat(ci): add oxlint job to CI workflow
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / oxlint (pull_request) Successful in 30s
CI / prettier (pull_request) Successful in 34s
CI / eslint (pull_request) Successful in 38s
CI / test-build (pull_request) Successful in 37s
CI / Checkstyle Main (pull_request) Successful in 1m29s
- Introduced oxlint job to the CI workflow for enhanced linting checks.
- Updated ci.yml to include a new job `oxlint` that runs on frontend changes.
- Adjusted package.json scripts to separate oxlint from the general lint task.
2025-04-25 09:14:04 +02:00
f3adf78b50
chore(frontend): update project name and improve linting command
All checks were successful
CI / Get Changed Files (pull_request) Successful in 7s
CI / Checkstyle Main (pull_request) Has been skipped
CI / prettier (pull_request) Successful in 48s
CI / eslint (pull_request) Successful in 1m5s
CI / test-build (pull_request) Successful in 1m6s
2025-04-25 08:28:06 +02:00
96dcb843b6
Merge pull request 'fix(deps): update dependencies (major and minor) to v3.4.5' (!151) from renovate/dependencies-(major-and-minor) into main
All checks were successful
Release / Release (push) Successful in 1m11s
Release / Build Frontend Image (push) Successful in 1m3s
Release / Build Backend Image (push) Successful in 2m30s
Reviewed-on: #151
Reviewed-by: Jan K9f <jan@kjan.email>
2025-04-24 18:06:59 +00:00
500a80a12d
Merge pull request 'chore(deps): update plugin org.springframework.boot to v3.4.5' (!150) from renovate/all-minor-patch into main
Some checks failed
Release / Build Backend Image (push) Blocked by required conditions
Release / Build Frontend Image (push) Blocked by required conditions
Release / Release (push) Has been cancelled
Reviewed-on: #150
Reviewed-by: Jan K9f <jan@kjan.email>
2025-04-24 18:06:42 +00:00
4d48c9bfe5
fix(deps): update dependencies (major and minor) to v3.4.5
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 1m6s
2025-04-24 17:48:10 +00:00
24081ba366
chore(deps): update plugin org.springframework.boot to v3.4.5
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 1m26s
2025-04-24 17:48:07 +00:00
e985a21e05
Merge pull request 'chore: update favicon and change page title to Casino' (!149) from feat/icon-title into main
All checks were successful
Release / Release (push) Successful in 1m3s
Release / Build Backend Image (push) Successful in 26s
Release / Build Frontend Image (push) Successful in 51s
Reviewed-on: #149
2025-04-24 17:45:45 +00:00
52dcb7897d
Merge branch 'main' into feat/icon-title
All checks were successful
CI / Get Changed Files (pull_request) Successful in 7s
CI / Checkstyle Main (pull_request) Has been skipped
CI / prettier (pull_request) Successful in 29s
CI / eslint (pull_request) Successful in 35s
CI / test-build (pull_request) Successful in 35s
2025-04-24 14:25:00 +00:00
4bc56eb02f
Merge branch 'test' into feat/icon-title
All checks were successful
CI / Get Changed Files (pull_request) Successful in 7s
CI / Checkstyle Main (pull_request) Has been skipped
CI / prettier (pull_request) Successful in 27s
CI / eslint (pull_request) Successful in 32s
CI / test-build (pull_request) Successful in 53s
2025-04-24 14:24:34 +00:00
csimonis
c2d71d7c57 chore: increase icon size
All checks were successful
CI / Get Changed Files (pull_request) Successful in 7s
CI / prettier (pull_request) Successful in 25s
CI / eslint (pull_request) Successful in 31s
CI / Checkstyle Main (pull_request) Successful in 39s
CI / test-build (pull_request) Successful in 1m20s
2025-04-24 16:24:22 +02:00
eb7d28e290
Merge pull request 'refactor: define symbol counts to symbol enum instead of slot service' (!148) from refactor-symbol into main
All checks were successful
Release / Release (push) Successful in 1m0s
Release / Build Frontend Image (push) Successful in 26s
Release / Build Backend Image (push) Successful in 57s
Reviewed-on: #148
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
2025-04-24 13:56:32 +00:00
csimonis
8713baef26 chore: update favicon and change page title to Casino
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / Checkstyle Main (pull_request) Has been skipped
CI / prettier (pull_request) Successful in 23s
CI / eslint (pull_request) Successful in 27s
CI / test-build (pull_request) Successful in 34s
2025-04-24 15:53:19 +02:00
Phan Huy Tran
f71f38dfc2 refactor: define symbol counts to symbol enum instead of slot service
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 37s
2025-04-24 15:50:50 +02:00
d2038ee160
Merge pull request 'feat: add info route (CAS-59)' (!147) from feat-CAS-59-slotinfo into main
All checks were successful
Release / Release (push) Successful in 58s
Release / Build Frontend Image (push) Successful in 24s
Release / Build Backend Image (push) Successful in 1m1s
Reviewed-on: #147
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
2025-04-24 13:47:37 +00:00
Phan Huy Tran
6ab095e6db chore: bruh
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 38s
2025-04-24 15:42:29 +02:00
Phan Huy Tran
56ba9f783c feat: add info route
Some checks failed
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Failing after 25s
2025-04-24 15:40:39 +02:00
a22bfa4a60
Merge pull request 'feat(security): add frontend host configuration property' (!146) from bugfix/backend-cors into main
All checks were successful
Release / Release (push) Successful in 58s
Release / Build Frontend Image (push) Successful in 24s
Release / Build Backend Image (push) Successful in 58s
Reviewed-on: #146
2025-04-24 13:13:28 +00:00
csimonis
237005a7bd feat(security): add frontend host configuration property
All checks were successful
CI / Get Changed Files (pull_request) Successful in 25s
CI / eslint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 38s
2025-04-24 15:11:54 +02:00
2ff25f9897
Merge pull request 'refactor: throw and handle unsufficient funds exception' (!144) from refactor-unsufficient-funds into main
All checks were successful
Release / Release (push) Successful in 56s
Release / Build Frontend Image (push) Successful in 52s
Release / Build Backend Image (push) Successful in 1m5s
Reviewed-on: #144
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
2025-04-24 12:51:19 +00:00
dd4f754e7e
Merge pull request 'feat(docker): wait for backend host to resolve before start' (!145) from bugfix/frontend into main
Some checks failed
Release / Build Backend Image (push) Blocked by required conditions
Release / Build Frontend Image (push) Blocked by required conditions
Release / Release (push) Has been cancelled
Reviewed-on: #145
2025-04-24 12:50:52 +00:00
454aa47153
Merge branch 'main' into bugfix/frontend
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / Checkstyle Main (pull_request) Has been skipped
CI / prettier (pull_request) Successful in 24s
CI / eslint (pull_request) Successful in 26s
CI / test-build (pull_request) Successful in 32s
2025-04-24 12:49:58 +00:00
csimonis
9a901154b6 feat(docker): wait for backend host to resolve before start
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / Checkstyle Main (pull_request) Has been skipped
CI / prettier (pull_request) Successful in 47s
CI / eslint (pull_request) Successful in 52s
CI / test-build (pull_request) Successful in 57s
2025-04-24 14:48:40 +02:00
Phan Huy Tran
a22c127500 refactor: throw and handle unsufficient funds exception
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 40s
2025-04-24 14:48:30 +02:00
b9e48b8ada
Merge pull request 'refactor: throw and handle user not found exceptions' (!143) from refactor-user-not-found into main
All checks were successful
Release / Release (push) Successful in 58s
Release / Build Frontend Image (push) Successful in 25s
Release / Build Backend Image (push) Successful in 59s
Reviewed-on: #143
Reviewed-by: Jan K9f <jan@kjan.email>
2025-04-24 12:38:07 +00:00
ad5228ce27
Merge branch 'main' into refactor-user-not-found
All checks were successful
CI / Get Changed Files (pull_request) Successful in 9s
CI / eslint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 25s
2025-04-24 12:34:57 +00:00
Phan Huy Tran
1f4256124f refactor: throw and handle user not found exceptions
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / eslint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 39s
2025-04-24 14:33:38 +02:00
69b0289ce4
Merge pull request 'feat(deployment): add deployment for frontend' (!142) from feat/deployment into main
All checks were successful
Release / Release (push) Successful in 1m1s
Release / Build Backend Image (push) Successful in 23s
Release / Build Frontend Image (push) Successful in 1m6s
Reviewed-on: #142
2025-04-24 12:29:36 +00:00
csimonis
27473ef5b5 ci: update job name in release workflow configuration
All checks were successful
CI / Get Changed Files (pull_request) Successful in 17s
CI / prettier (pull_request) Successful in 34s
CI / eslint (pull_request) Successful in 36s
CI / Checkstyle Main (pull_request) Successful in 49s
CI / test-build (pull_request) Successful in 45s
2025-04-24 14:28:19 +02:00
csimonis
40e1ae5f87 chore(workflow): rename build-image and add frontend build
All checks were successful
CI / Get Changed Files (pull_request) Successful in 50s
CI / prettier (pull_request) Successful in 1m3s
CI / eslint (pull_request) Successful in 1m10s
CI / Checkstyle Main (pull_request) Successful in 1m18s
CI / test-build (pull_request) Successful in 1m16s
2025-04-24 14:25:10 +02:00
csimonis
36237874f7 feat(docker): add Docker configuration for frontend app 2025-04-24 14:23:17 +02:00
676473cfad
Merge pull request 'fix: improve docker pushing with version' (!141) from improve-docker-a-bit into main
All checks were successful
Release / Release (push) Successful in 59s
Release / Build Docker Image (push) Successful in 24s
Reviewed-on: #141
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
2025-04-24 10:42:28 +00:00
d2560c6049
chore: remove deploy workflow configuration file
All checks were successful
CI / Get Changed Files (pull_request) Successful in 9s
CI / prettier (pull_request) Successful in 31s
CI / eslint (pull_request) Successful in 37s
CI / test-build (pull_request) Successful in 46s
CI / Checkstyle Main (pull_request) Successful in 52s
2025-04-24 12:24:27 +02:00
d9324ee7f0
build(workflow): update Docker build and push actions
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / prettier (pull_request) Successful in 33s
CI / eslint (pull_request) Successful in 36s
CI / Checkstyle Main (pull_request) Successful in 49s
CI / test-build (pull_request) Successful in 48s
2025-04-24 12:23:31 +02:00
0f96b284db
feat(ci): add build-image job to release workflow 2025-04-24 12:19:55 +02:00
ef069d7d18
Merge pull request 'feat: implement api route for slots (CAS-4 CAS-58)' (!140) from feature-slots into main
All checks were successful
Deploy / Build Docker Image (push) Successful in 49s
Release / Release (push) Successful in 1m0s
Reviewed-on: #140
Reviewed-by: Jan K9f <jan@kjan.email>
2025-04-24 10:16:18 +00:00
Phan Huy Tran
f01f6f6477 chore: rebase
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 26s
2025-04-24 10:15:23 +00:00
Phan Huy Tran
c93c386469 style: bruh 2025-04-24 10:15:23 +00:00
Phan Huy Tran
29732e63b9 refactor: balance in favor of the house 2025-04-24 10:15:23 +00:00
Phan Huy Tran
a26aeab86a feat: refactor and balance winnings 2025-04-24 10:15:23 +00:00
Phan Huy Tran
7a0dd0593b feat: implement slots api route 2025-04-24 10:15:23 +00:00
934e60e80d
Merge pull request 'feat(ci): add deployment workflow for backend' (!139) from feat/deployment into main
All checks were successful
Deploy / Build Docker Image (push) Successful in 14s
Release / Release (push) Successful in 1m3s
Reviewed-on: #139
Reviewed-by: Jan K9f <jan@kjan.email>
2025-04-24 10:14:27 +00:00
csimonis
41124af20e ci: update deployment workflow for main branch
All checks were successful
CI / Get Changed Files (pull_request) Successful in 10s
CI / eslint (pull_request) Successful in 37s
CI / prettier (pull_request) Successful in 31s
CI / Checkstyle Main (pull_request) Successful in 55s
CI / test-build (pull_request) Successful in 32s
2025-04-24 12:11:06 +02:00
csimonis
af005ce019 ci: update login action to use secrets for credentials
All checks were successful
CI / Get Changed Files (pull_request) Successful in 7s
Deploy / Build Docker Image (push) Successful in 40s
CI / eslint (pull_request) Successful in 35s
CI / Checkstyle Main (pull_request) Successful in 53s
CI / prettier (pull_request) Successful in 29s
CI / test-build (pull_request) Successful in 44s
2025-04-24 12:10:19 +02:00
csimonis
3b2ce7e772 chore: test
Some checks failed
Deploy / Build Docker Image (push) Failing after 3s
CI / Get Changed Files (pull_request) Successful in 6s
CI / Checkstyle Main (pull_request) Successful in 42s
CI / prettier (pull_request) Successful in 59s
CI / eslint (pull_request) Successful in 1m7s
CI / test-build (pull_request) Successful in 42s
2025-04-24 12:08:34 +02:00
csimonis
44b68528e3 ci: fix casing in deploy workflow for image tags
Some checks failed
CI / Get Changed Files (pull_request) Successful in 8s
CI / eslint (pull_request) Successful in 36s
CI / prettier (pull_request) Successful in 32s
CI / Checkstyle Main (pull_request) Successful in 58s
CI / test-build (pull_request) Successful in 40s
Deploy / Build Docker Image (push) Failing after 7s
2025-04-23 14:38:30 +02:00
csimonis
1c58db60d3 style(deploy.yml): fix indentation in deploy workflow steps
Some checks failed
Deploy / Build Docker Image (push) Failing after 5s
CI / Get Changed Files (pull_request) Successful in 6s
CI / prettier (pull_request) Successful in 29s
CI / eslint (pull_request) Successful in 33s
CI / Checkstyle Main (pull_request) Successful in 52s
CI / test-build (pull_request) Successful in 55s
2025-04-23 14:37:58 +02:00
csimonis
25b7e90517 build: update Dockerfile path in deploy workflow
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Successful in 33s
CI / prettier (pull_request) Successful in 35s
CI / Checkstyle Main (pull_request) Successful in 48s
CI / test-build (pull_request) Successful in 45s
2025-04-23 14:33:11 +02:00
csimonis
4f377e1e87 feat(ci): add deployment workflow and update Dockerfile
All checks were successful
CI / Get Changed Files (pull_request) Successful in 23s
CI / eslint (pull_request) Successful in 31s
CI / prettier (pull_request) Successful in 30s
CI / Checkstyle Main (pull_request) Successful in 48s
CI / test-build (pull_request) Successful in 38s
2025-04-23 14:29:36 +02:00
b07a3a935a
Merge pull request 'refactor: remove unused imports and clean up code' (!138) from refactor/imports into main
All checks were successful
Release / Release (push) Successful in 1m1s
Reviewed-on: #138
Reviewed-by: lziemke <lea.z4@schule.bremen.de>
2025-04-23 11:44:22 +00:00
csimonis
0cc8ff50aa style: format import statements for readability
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / prettier (pull_request) Successful in 30s
CI / eslint (pull_request) Successful in 35s
CI / Checkstyle Main (pull_request) Successful in 49s
CI / test-build (pull_request) Successful in 45s
2025-04-23 13:43:12 +02:00
csimonis
6f3f3791c3 refactor: remove unused imports and clean up code
Some checks failed
CI / Get Changed Files (pull_request) Successful in 6s
CI / prettier (pull_request) Failing after 29s
CI / eslint (pull_request) Successful in 36s
CI / test-build (pull_request) Successful in 44s
CI / Checkstyle Main (pull_request) Successful in 59s
2025-04-23 13:39:55 +02:00
csimonis
66e5d730dd refactor: reorganize import statements and clean up code 2025-04-23 13:39:49 +02:00
a677b1fbdb
Merge pull request 'feat: add transaction history to homepage (CAS-56)' (!137) from feature/transaction-history into main
All checks were successful
Release / Release (push) Successful in 58s
Reviewed-on: #137
Reviewed-by: Phan Huy Tran <ptran@noreply.localhost>
2025-04-23 10:38:30 +00:00
csimonis
070be95928 style(transaction-history): Adjust heading and paragraph styles
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / prettier (pull_request) Successful in 34s
CI / eslint (pull_request) Successful in 36s
CI / Checkstyle Main (pull_request) Successful in 50s
CI / test-build (pull_request) Successful in 46s
2025-04-23 12:32:23 +02:00
csimonis
d46ec45f4a style: format HTML and TypeScript files for consistency
All checks were successful
CI / Get Changed Files (pull_request) Successful in 32s
CI / prettier (pull_request) Successful in 31s
CI / eslint (pull_request) Successful in 37s
CI / test-build (pull_request) Successful in 44s
CI / Checkstyle Main (pull_request) Successful in 1m12s
2025-04-23 12:30:10 +02:00
csimonis
0eaccb4453 style(transaction-history): adjust button icon size and spacing
Some checks failed
CI / Get Changed Files (pull_request) Successful in 10s
CI / prettier (pull_request) Failing after 31s
CI / eslint (pull_request) Failing after 33s
CI / Checkstyle Main (pull_request) Successful in 47s
CI / test-build (pull_request) Successful in 45s
2025-04-23 12:27:38 +02:00
csimonis
35184807c0 feat(transactions): add pagination support for user transactions
Some checks failed
CI / Get Changed Files (pull_request) Successful in 6s
CI / Checkstyle Main (pull_request) Successful in 50s
CI / prettier (pull_request) Failing after 52s
CI / eslint (pull_request) Failing after 57s
CI / test-build (pull_request) Successful in 1m3s
2025-04-23 12:26:41 +02:00
csimonis
157e774e86 feat(transaction-history): add disabled state styling for buttons
Some checks failed
CI / Get Changed Files (pull_request) Successful in 6s
CI / Checkstyle Main (pull_request) Successful in 46s
CI / prettier (pull_request) Failing after 52s
CI / eslint (pull_request) Failing after 58s
CI / test-build (pull_request) Successful in 1m1s
2025-04-23 11:54:54 +02:00
csimonis
03d67ef362 feat: add pagination support for user transactions retrieval 2025-04-23 11:54:54 +02:00
csimonis
9817fb95db feat(transaction-history): add transaction history feature with modal 2025-04-23 11:54:54 +02:00
csimonis
d6077645d9 feat(transaction): add transaction retrieval and DTO mapping 2025-04-23 11:54:54 +02:00
5575955440
Merge pull request 'feat: add create and delete routes for lootboxes, remove initial creation of lootboxes' (!136) from feature-lootbox-handling into main
All checks were successful
Release / Release (push) Successful in 56s
Reviewed-on: #136
Reviewed-by: Jan K9f <jan@kjan.email>
2025-04-23 09:12:10 +00:00
Phan Huy Tran
389018af85 feat: add create and delete routes for lootboxes, remove initial creation of lootboxes
All checks were successful
CI / Get Changed Files (pull_request) Successful in 25s
CI / eslint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 38s
2025-04-23 11:09:14 +02:00
5a207dd5d3
Merge pull request 'chore: update images' (!134) from update-some-images into main
All checks were successful
Release / Release (push) Successful in 52s
Reviewed-on: https://git.kballsjan.de/SZUT/casino/pulls/134
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
2025-04-23 08:22:26 +00:00
2f022784a5
Merge pull request 'chore: delete sadly deceased http requests' (!135) from chore-remove-http-requests into main
All checks were successful
Release / Release (push) Successful in 1m0s
Reviewed-on: #135
Reviewed-by: Jan K9f <jan@kjan.email>
2025-04-23 08:21:13 +00:00
Phan Huy Tran
cf9a5c6dbe chore: delete sadly deceased http requests
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 27s
2025-04-23 10:20:07 +02:00
db43b69e2a
chore: update image assets for frontend
All checks were successful
CI / Get Changed Files (pull_request) Successful in 7s
CI / Checkstyle Main (pull_request) Has been skipped
CI / prettier (pull_request) Successful in 25s
CI / eslint (pull_request) Successful in 28s
CI / test-build (pull_request) Successful in 33s
2025-04-23 10:18:51 +02:00
e19de2d57b
chore: update poker.webp asset file
All checks were successful
CI / Get Changed Files (pull_request) Successful in 28s
CI / Checkstyle Main (pull_request) Has been skipped
CI / prettier (pull_request) Successful in 29s
CI / eslint (pull_request) Successful in 34s
CI / test-build (pull_request) Successful in 41s
2025-04-23 10:04:26 +02:00
7244bab007
Merge pull request 'chore(deps): update dependency typescript-eslint to v8.31.0' (!127) from renovate/devdependencies-(non-major) into main
All checks were successful
Release / Release (push) Successful in 57s
Reviewed-on: #127
Reviewed-by: Jan K9f <jan@kjan.email>
2025-04-23 07:55:12 +00:00
c78abe5bab
chore(deps): update dependency typescript-eslint to v8.31.0
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / Checkstyle Main (pull_request) Has been skipped
CI / prettier (pull_request) Successful in 25s
CI / eslint (pull_request) Successful in 30s
CI / test-build (pull_request) Successful in 36s
2025-04-23 07:53:44 +00:00
a6bf4f3f73
Merge pull request 'fix: fix release pipeline' (!133) from fix-pipeline2 into main
All checks were successful
Release / Release (push) Successful in 59s
Reviewed-on: #133
Reviewed-by: Phan Huy Tran <ptran@noreply.localhost>
2025-04-23 07:45:59 +00:00
ed2d512cb0
ci: remove eslint installation from CI workflow
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Successful in 29s
CI / Checkstyle Main (pull_request) Successful in 44s
CI / prettier (pull_request) Successful in 42s
CI / test-build (pull_request) Successful in 44s
2025-04-23 09:43:45 +02:00
465967ce73
chore: update eslint version and remove package.json
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / prettier (pull_request) Successful in 25s
CI / Checkstyle Main (pull_request) Successful in 37s
CI / test-build (pull_request) Successful in 36s
CI / eslint (pull_request) Successful in 22s
2025-04-23 09:41:36 +02:00
1bd0de1737
ci: add eslint installation to CI workflow
Some checks failed
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Failing after 28s
CI / prettier (pull_request) Successful in 30s
CI / Checkstyle Main (pull_request) Successful in 43s
CI / test-build (pull_request) Successful in 43s
2025-04-23 09:37:24 +02:00
ddb772e7fc
chore: update .gitignore and add package.json for eslint
Some checks failed
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Failing after 26s
CI / prettier (pull_request) Successful in 28s
CI / Checkstyle Main (pull_request) Successful in 42s
CI / test-build (pull_request) Successful in 41s
2025-04-23 09:35:08 +02:00
f6dd50dc44
Merge branch 'main' into fix-pipeline2
Some checks failed
CI / Get Changed Files (pull_request) Successful in 8s
CI / prettier (pull_request) Successful in 28s
CI / Checkstyle Main (pull_request) Successful in 48s
CI / test-build (pull_request) Successful in 36s
CI / eslint (pull_request) Failing after 37s
2025-04-23 07:16:50 +00:00
eda1fc8417
Merge pull request 'refactor: replace switch statement with if statement' (!132) from refactor-webhook into main
Some checks are pending
Release / Release (push) Waiting to run
Reviewed-on: #132
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
2025-04-23 07:16:24 +00:00
17bc204029
style(workflow): standardize quotes and formatting in YAML
Some checks failed
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Failing after 29s
CI / prettier (pull_request) Successful in 33s
CI / Checkstyle Main (pull_request) Successful in 52s
CI / test-build (pull_request) Successful in 50s
2025-04-23 09:15:15 +02:00
Phan Huy Tran
94ca93e510 refactor: replace switch statement with ugly a if statement (no go idiomatic btw)
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 37s
2025-04-23 09:14:19 +02:00
1fe3148019
Merge pull request 'fix: avoid serialization error, remove debug statement' (!131) from fix-stripe into main
Some checks are pending
Release / Release (push) Waiting to run
Reviewed-on: #131
Reviewed-by: Jan K9f <jan@kjan.email>
2025-04-23 07:07:12 +00:00
Phan Huy Tran
93dc3f9f10 fix: avoid serialization error, remove debug statement
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 38s
2025-04-23 09:05:44 +02:00
0291450eb9
Merge pull request 'feat(security): allow access to webhook endpoint' (!128) from bugfix/deposit into main
Some checks are pending
Release / Release (push) Waiting to run
Reviewed-on: #128
Reviewed-by: Jan K9f <jan@kjan.email>
Reviewed-by: Phan Huy Tran <ptran@noreply.localhost>
Reviewed-by: Jan-Marlon Leibl <jleibl@proton.me>
2025-04-23 06:59:50 +00:00
0b6bf37921
Merge branch 'main' into bugfix/deposit
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 36s
2025-04-23 06:59:00 +00:00
2aaf79410d
Merge pull request 'ci: add ubuntu-latest to workflow jobs configuration' (!130) from fix-pipelines into main
Reviewed-on: #130
2025-04-23 06:58:54 +00:00
24d2a93c7f
ci: add ubuntu-latest to workflow jobs configuration
All checks were successful
CI / Get Changed Files (pull_request) Successful in 5s
CI / prettier (pull_request) Successful in 1m51s
CI / eslint (pull_request) Successful in 1m59s
CI / test-build (pull_request) Successful in 2m7s
CI / Checkstyle Main (pull_request) Successful in 2m47s
2025-04-23 08:52:55 +02:00
csimonis
aa78ccc630 feat(security): allow access to webhook endpoint
Some checks failed
CI / Get Changed Files (pull_request) Successful in 5s
CI / Checkstyle Main (pull_request) Has been cancelled
CI / eslint (pull_request) Has been cancelled
CI / prettier (pull_request) Has been cancelled
CI / test-build (pull_request) Has been cancelled
2025-04-23 08:42:27 +02:00
9ec6d8f413
Merge pull request 'chore(deps): update dependency typescript-eslint to v8.29.1' (!126) from renovate/devdependencies-(non-major) into main
All checks were successful
Release / Release (push) Successful in 58s
Reviewed-on: #126
Reviewed-by: Jan K9f <jan@kjan.email>
2025-04-07 20:25:36 +00:00
f680a8829c
chore(deps): update dependency typescript-eslint to v8.29.1
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / Checkstyle Main (pull_request) Has been skipped
CI / prettier (pull_request) Successful in 41s
CI / eslint (pull_request) Successful in 1m37s
CI / test-build (pull_request) Successful in 1m42s
2025-04-07 18:02:33 +00:00
ae1015c901
chore: remove unused file a 2025-04-07 19:28:48 +02:00
73a6f3bd0b
test: test 2025-04-07 19:28:31 +02:00
b803055307
Merge pull request 'feat: add authentik for authentication' (!58) from feature/authentik into main
All checks were successful
Release / Release (push) Successful in 1m7s
Reviewed-on: #58
Reviewed-by: Phan Huy Tran <ptran@noreply.localhost>
2025-04-04 13:26:02 +00:00
c942b4bb39
style: remove unnecessary blank line in config file
Some checks failed
CI / Get Changed Files (pull_request) Successful in 5s
CI / Checkstyle Main (pull_request) Has been cancelled
CI / eslint (pull_request) Has been cancelled
CI / prettier (pull_request) Has been cancelled
CI / test-build (pull_request) Has been cancelled
2025-04-03 12:02:59 +02:00
c765ef87e3
refactor: remove unused storage factory code and comments
Some checks failed
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Successful in 24s
CI / test-build (pull_request) Successful in 31s
CI / prettier (pull_request) Failing after 56s
CI / Checkstyle Main (pull_request) Successful in 1m30s
2025-04-03 11:58:58 +02:00
02453449cd
refactor(user): clean up comments and rename variables
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Successful in 25s
CI / test-build (pull_request) Successful in 31s
CI / prettier (pull_request) Successful in 56s
CI / Checkstyle Main (pull_request) Successful in 2m12s
2025-04-03 11:51:55 +02:00
25c68e230d
Merge branch 'main' into feature/authentik
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / prettier (pull_request) Successful in 55s
CI / Checkstyle Main (pull_request) Successful in 1m1s
CI / eslint (pull_request) Successful in 1m43s
CI / test-build (pull_request) Successful in 1m55s
2025-04-03 11:44:49 +02:00
87c822dbd7
Merge pull request 'feat(blackjack): add animated number component and usage' (!123) from task/CAS-50/add_rest_blackjack_logic_with_frontend_animations into main
All checks were successful
Release / Release (push) Successful in 1m4s
Reviewed-on: #123
Reviewed-by: Jan K9f <jan@kjan.email>
2025-04-03 08:07:07 +00:00
b5a6582905
style(blackjack): format code and adjust whitespace
All checks were successful
CI / Get Changed Files (pull_request) Successful in 7s
CI / Checkstyle Main (pull_request) Has been skipped
CI / eslint (pull_request) Successful in 36s
CI / prettier (pull_request) Successful in 40s
CI / test-build (pull_request) Successful in 51s
2025-04-03 10:05:31 +02:00
28f7b15d4c
refactor: remove unnecessary comments and variables
Some checks failed
CI / Get Changed Files (pull_request) Successful in 6s
CI / Checkstyle Main (pull_request) Has been skipped
CI / prettier (pull_request) Failing after 23s
CI / eslint (pull_request) Successful in 1m41s
CI / test-build (pull_request) Successful in 1m53s
2025-04-03 10:04:28 +02:00
4b70a4ac4a
feat(blackjack): add animated number component and usage 2025-04-03 10:04:28 +02:00
64f701c651
refactor(login-success): remove unnecessary blank line
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / prettier (pull_request) Successful in 23s
CI / Checkstyle Main (pull_request) Successful in 31s
CI / eslint (pull_request) Successful in 1m20s
CI / test-build (pull_request) Successful in 1m37s
2025-04-02 16:36:26 +02:00
0e1946d190
refactor(auth): clean up login and logout logic
Some checks failed
CI / Get Changed Files (pull_request) Successful in 7s
CI / eslint (pull_request) Successful in 25s
CI / test-build (pull_request) Successful in 32s
CI / prettier (pull_request) Failing after 59s
CI / Checkstyle Main (pull_request) Successful in 1m29s
2025-04-02 16:33:28 +02:00
9de08ab233
refactor: remove debug logs from auth components
Some checks failed
CI / Get Changed Files (pull_request) Successful in 7s
CI / prettier (pull_request) Failing after 23s
CI / eslint (pull_request) Failing after 28s
CI / test-build (pull_request) Successful in 1m16s
CI / Checkstyle Main (pull_request) Successful in 1m22s
2025-04-02 16:27:35 +02:00
2e76446328
feat(auth): improve logout functionality and token management
Some checks failed
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Successful in 26s
CI / test-build (pull_request) Successful in 33s
CI / prettier (pull_request) Failing after 50s
CI / Checkstyle Main (pull_request) Successful in 1m7s
2025-04-02 16:24:40 +02:00
47f4a4d558
style(user.service.ts): format code for clarity and consistency
All checks were successful
CI / Get Changed Files (pull_request) Successful in 7s
CI / prettier (pull_request) Successful in 26s
CI / Checkstyle Main (pull_request) Successful in 41s
CI / test-build (pull_request) Successful in 41s
CI / eslint (pull_request) Successful in 51s
2025-04-02 16:21:56 +02:00
e37dcecd3f
refactor: update imports and type definitions in services
Some checks failed
CI / Get Changed Files (pull_request) Successful in 7s
CI / eslint (pull_request) Successful in 26s
CI / test-build (pull_request) Successful in 31s
CI / prettier (pull_request) Failing after 54s
CI / Checkstyle Main (pull_request) Successful in 1m57s
2025-04-02 16:20:37 +02:00
d3b7e7d5e7
refactor: improve type annotations in services and config
Some checks failed
CI / Get Changed Files (pull_request) Successful in 6s
CI / prettier (pull_request) Successful in 23s
CI / Checkstyle Main (pull_request) Successful in 31s
CI / eslint (pull_request) Successful in 1m30s
CI / test-build (pull_request) Failing after 1m43s
2025-04-02 16:15:31 +02:00
617654caeb
style: Fix formatting and spacing in multiple files
Some checks failed
CI / Get Changed Files (pull_request) Successful in 7s
CI / prettier (pull_request) Successful in 22s
CI / Checkstyle Main (pull_request) Successful in 53s
CI / eslint (pull_request) Failing after 1m8s
CI / test-build (pull_request) Successful in 1m35s
2025-04-02 16:11:53 +02:00
fa09a8533f
refactor(deposit, user): rename Keycloak to Authentik user info
Some checks failed
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Failing after 25s
CI / test-build (pull_request) Successful in 33s
CI / prettier (pull_request) Failing after 56s
CI / Checkstyle Main (pull_request) Successful in 2m0s
2025-04-02 16:09:34 +02:00
d7fe0e3965
Merge branch 'main' into feature/authentik
Some checks failed
CI / Get Changed Files (pull_request) Successful in 6s
CI / prettier (pull_request) Failing after 22s
CI / Checkstyle Main (pull_request) Failing after 35s
CI / eslint (pull_request) Failing after 1m41s
CI / test-build (pull_request) Successful in 1m48s
2025-04-02 16:00:01 +02:00
80d5c1e413
Merge pull request 'refactor: rename keycloakId to authentikId in codebase' (!122) from fix-authentik into feature/authentik
Some checks failed
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Failing after 20s
CI / test-build (pull_request) Failing after 24s
CI / prettier (pull_request) Failing after 51s
CI / Checkstyle Main (pull_request) Successful in 2m11s
Reviewed-on: #122
2025-04-02 13:52:17 +00:00
8317349507
refactor: rename keycloakId to authentikId in codebase
Some checks failed
CI / Get Changed Files (pull_request) Successful in 6s
CI / prettier (pull_request) Failing after 46s
CI / Checkstyle Main (pull_request) Successful in 49s
CI / eslint (pull_request) Failing after 1m2s
CI / test-build (pull_request) Failing after 1m9s
2025-04-02 15:49:58 +02:00
a2f1a40931
Merge pull request 'task/CAS-50/add_rest_blackjack_logic_with_frontend_animations' (!121) from task/CAS-50/add_rest_blackjack_logic_with_frontend_animations into main
All checks were successful
Release / Release (push) Successful in 51s
Reviewed-on: #121
2025-04-02 11:09:07 +00:00
csimonis
7eebd12699 feat(login): log user info on successful login success page
Some checks failed
CI / Get Changed Files (pull_request) Successful in 8s
CI / eslint (pull_request) Failing after 24s
CI / test-build (pull_request) Failing after 30s
CI / prettier (pull_request) Failing after 50s
CI / Checkstyle Main (pull_request) Successful in 1m19s
2025-04-02 13:07:10 +02:00
3d7ee92cf2
refactor(debt-dialog): update timerSubscription type to Subscription
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Successful in 22s
CI / test-build (pull_request) Successful in 36s
CI / prettier (pull_request) Successful in 43s
CI / Checkstyle Main (pull_request) Successful in 1m46s
2025-04-02 13:07:01 +02:00
7bec17dd52
style: Format code for readability and consistency
Some checks failed
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Failing after 20s
CI / prettier (pull_request) Successful in 43s
CI / test-build (pull_request) Successful in 32s
CI / Checkstyle Main (pull_request) Successful in 1m52s
2025-04-02 13:04:22 +02:00
775205b54c
style(blackjack): remove commented modal sections from HTML 2025-04-02 13:04:19 +02:00
eb5b94c7bb
Merge pull request 'fix(deps): update dependency ajv-formats to v3' (!120) from renovate/major-dependencies-(major-and-minor) into main
All checks were successful
Release / Release (push) Successful in 58s
Reviewed-on: #120
Reviewed-by: Jan K9f <jan@kjan.email>
2025-04-02 11:03:59 +00:00
40c402ae36
feat: add hand value display to dealer and player hands
Some checks failed
CI / Get Changed Files (pull_request) Successful in 6s
CI / prettier (pull_request) Failing after 20s
CI / test-build (pull_request) Successful in 35s
CI / eslint (pull_request) Failing after 44s
CI / Checkstyle Main (pull_request) Successful in 51s
2025-04-02 13:03:04 +02:00
801edfe89e
feat(blackjack): add balance display to game result component 2025-04-02 12:58:12 +02:00
68a226b677
feat(debt-dialog): add debt warning dialog for negative balance 2025-04-02 12:50:51 +02:00
faa0a1495b
fix(deps): update dependency ajv-formats to v3
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / Checkstyle Main (pull_request) Has been skipped
CI / prettier (pull_request) Successful in 22s
CI / eslint (pull_request) Successful in 1m36s
CI / test-build (pull_request) Successful in 1m42s
2025-04-02 10:42:58 +00:00
823cb88807
Merge pull request 'Update the stripe api' (!119) from fix-renovate into main
All checks were successful
Release / Release (push) Successful in 56s
Reviewed-on: #119
Reviewed-by: Phan Huy Tran <ptran@noreply.localhost>
2025-04-02 10:21:33 +00:00
0aa7ad1031
style: Fix missing newline at end of files
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Successful in 1m3s
CI / prettier (pull_request) Successful in 51s
CI / test-build (pull_request) Successful in 1m23s
CI / Checkstyle Main (pull_request) Successful in 3m40s
2025-04-02 12:17:35 +02:00
b1b8c939a6
Merge branch 'main' into fix-renovate
Some checks failed
CI / Get Changed Files (pull_request) Successful in 6s
CI / prettier (pull_request) Successful in 23s
CI / Checkstyle Main (pull_request) Failing after 38s
CI / eslint (pull_request) Successful in 1m1s
CI / test-build (pull_request) Successful in 1m30s
2025-04-02 12:15:23 +02:00
6182ff717f
feat(deposit): enhance payment session handling and error logging
Some checks failed
CI / Get Changed Files (pull_request) Successful in 7s
CI / prettier (pull_request) Successful in 27s
CI / Checkstyle Main (pull_request) Failing after 1m0s
CI / eslint (pull_request) Successful in 1m54s
CI / test-build (pull_request) Successful in 2m2s
2025-04-02 12:12:13 +02:00
4c3f42d347
Merge pull request 'fix(deps): update dependency ajv to v8.17.1' (!117) from renovate/dependencies-(major-and-minor) into main
All checks were successful
Release / Release (push) Successful in 1m10s
Reviewed-on: #117
Reviewed-by: Jan K9f <jan@kjan.email>
2025-04-02 10:03:53 +00:00
9981ebc9d1
fix(deps): update dependencies (major and minor)
Some checks failed
CI / Get Changed Files (pull_request) Successful in 7s
CI / eslint (pull_request) Successful in 30s
CI / test-build (pull_request) Successful in 37s
CI / prettier (pull_request) Successful in 1m2s
CI / Checkstyle Main (pull_request) Failing after 2m20s
2025-04-02 10:01:44 +00:00
ab80f5d285
fix(deps): update dependency ajv to v8.17.1
All checks were successful
CI / Get Changed Files (pull_request) Successful in 7s
CI / Checkstyle Main (pull_request) Has been skipped
CI / eslint (pull_request) Successful in 31s
CI / test-build (pull_request) Successful in 40s
CI / prettier (pull_request) Successful in 45s
2025-04-02 10:01:37 +00:00
ac6e3be52c
Merge pull request 'Add all the renovate changes' (!115) from renovate-test into main
All checks were successful
Release / Release (push) Successful in 58s
Reviewed-on: #115
2025-04-02 10:00:20 +00:00
3c64b9ec8b
build: update stripe-java dependency version to 20.136.0
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / Checkstyle Main (pull_request) Has been skipped
CI / prettier (pull_request) Successful in 23s
CI / eslint (pull_request) Successful in 1m26s
CI / test-build (pull_request) Successful in 1m50s
2025-04-02 11:54:06 +02:00
6b3a8a41fd
ci: remove debug job from CI workflow
Some checks failed
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Successful in 29s
CI / test-build (pull_request) Successful in 35s
CI / prettier (pull_request) Successful in 1m0s
CI / Checkstyle Main (pull_request) Failing after 1m52s
2025-04-02 11:45:35 +02:00
06318a8b57
build(frontend): update ajv and ajv-formats versions
Some checks failed
CI / Get Changed Files (pull_request) Successful in 7s
CI / prettier (pull_request) Successful in 24s
CI / Checkstyle Main (pull_request) Failing after 33s
CI / eslint (pull_request) Failing after 1m38s
CI / test-build (pull_request) Successful in 1m51s
2025-04-02 11:42:53 +02:00
5d15f40a30
Merge pull request 'feat(blackjack): add split functionality to the game' (!116) from task/CAS-50/add_rest_blackjack_logic_with_frontend_animations into main
All checks were successful
Release / Release (push) Successful in 48s
Reviewed-on: #116
Reviewed-by: Jan K9f <jan@kjan.email>
2025-04-02 09:41:18 +00:00
4c83419a31
Merge branch 'main' into task/CAS-50/add_rest_blackjack_logic_with_frontend_animations
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / eslint (pull_request) Successful in 21s
CI / test-build (pull_request) Successful in 28s
CI / prettier (pull_request) Successful in 42s
CI / Checkstyle Main (pull_request) Successful in 1m47s
2025-04-02 09:38:43 +00:00
d22c4c243f
feat(game-info): add placeholder and disable bet input
All checks were successful
CI / Get Changed Files (pull_request) Successful in 7s
CI / eslint (pull_request) Successful in 25s
CI / prettier (pull_request) Successful in 26s
CI / Checkstyle Main (pull_request) Successful in 41s
CI / test-build (pull_request) Successful in 42s
2025-04-02 11:38:14 +02:00
f60ce73e65
build(frontend): add ajv-formats dependency to package.json
Some checks failed
CI / Get Changed Files (pull_request) Successful in 6s
CI / prettier (pull_request) Successful in 24s
CI / Checkstyle Main (pull_request) Failing after 32s
CI / eslint (pull_request) Failing after 1m35s
CI / test-build (pull_request) Failing after 1m45s
2025-04-02 11:36:55 +02:00
bd82262049
ci: add debug step to CI workflow for better logging
Some checks failed
CI / Get Changed Files (pull_request) Successful in 7s
CI / eslint (pull_request) Failing after 24s
CI / test-build (pull_request) Failing after 27s
CI / prettier (pull_request) Successful in 1m3s
CI / Checkstyle Main (pull_request) Failing after 2m1s
2025-04-02 11:34:46 +02:00
6b4adfca0a
build(frontend): update angular compiler version to 19.2.4
Some checks failed
CI / Get Changed Files (pull_request) Successful in 10s
CI / eslint (pull_request) Failing after 35s
CI / prettier (pull_request) Successful in 39s
CI / test-build (pull_request) Failing after 42s
CI / Checkstyle Main (pull_request) Failing after 51s
2025-04-02 11:31:39 +02:00
1fc62af66d
build(frontend): update rxjs version to ~7.8.2
Some checks failed
CI / Get Changed Files (pull_request) Successful in 7s
CI / prettier (pull_request) Successful in 26s
CI / Checkstyle Main (pull_request) Failing after 36s
CI / eslint (pull_request) Failing after 1m26s
CI / test-build (pull_request) Failing after 1m24s
2025-04-02 11:31:08 +02:00
e9c4d4fbed
refactor(BlackJackService): simplify card dealing logic
All checks were successful
CI / Get Changed Files (pull_request) Successful in 5s
CI / prettier (pull_request) Successful in 21s
CI / test-build (pull_request) Successful in 40s
CI / eslint (pull_request) Successful in 48s
CI / Checkstyle Main (pull_request) Successful in 52s
2025-04-02 11:29:16 +02:00
1916c04f4a
chore: update lint command in package.json
Some checks failed
CI / Get Changed Files (pull_request) Successful in 7s
CI / eslint (pull_request) Failing after 20s
CI / test-build (pull_request) Failing after 25s
CI / prettier (pull_request) Successful in 1m0s
CI / Checkstyle Main (pull_request) Failing after 2m12s
2025-04-02 11:28:01 +02:00
575a6651d6
build(frontend): update Angular CLI version in package.json
Some checks failed
CI / Get Changed Files (pull_request) Successful in 9s
CI / eslint (pull_request) Failing after 33s
CI / prettier (pull_request) Successful in 34s
CI / Checkstyle Main (pull_request) Failing after 51s
CI / test-build (pull_request) Failing after 23s
2025-04-02 11:25:24 +02:00
3ef5530e77
feat(blackjack): add split functionality to the game
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / prettier (pull_request) Successful in 19s
CI / Checkstyle Main (pull_request) Successful in 50s
CI / eslint (pull_request) Successful in 53s
CI / test-build (pull_request) Successful in 1m12s
2025-04-02 11:25:03 +02:00
942a47c1b2
build(frontend): update Angular dependencies to v19.0.0
Some checks failed
CI / Get Changed Files (pull_request) Successful in 6s
CI / prettier (pull_request) Successful in 23s
CI / Checkstyle Main (pull_request) Failing after 33s
CI / eslint (pull_request) Failing after 1m17s
CI / test-build (pull_request) Failing after 1m23s
2025-04-02 11:20:36 +02:00
ff98cab6ac
Merge pull request 'feat: Create api routes for lootboxes (CAS-43)' (!110) from feat/lootboxes into main
All checks were successful
Release / Release (push) Successful in 1m22s
Reviewed-on: #110
Reviewed-by: Jan K9f <jan@kjan.email>
Reviewed-by: lziemke <lea.z4@schule.bremen.de>
2025-04-02 09:18:54 +00:00
c64fccb236
Merge pull request 'chore(deps): update devdependencies (non-major)' (!114) from renovate/devdependencies-(non-major) into renovate-test
Some checks failed
CI / Get Changed Files (pull_request) Successful in 6s
CI / prettier (pull_request) Successful in 18s
CI / Checkstyle Main (pull_request) Failing after 31s
CI / eslint (pull_request) Successful in 59s
CI / test-build (pull_request) Failing after 58s
Reviewed-on: #114
2025-04-02 09:17:38 +00:00
210500783f
Merge pull request 'fix(deps): update dependencies (major and minor)' (!113) from renovate/major-dependencies-(major-and-minor) into renovate-test
Reviewed-on: #113
2025-04-02 09:16:18 +00:00
ec994616ee
Merge branch 'main' into feat/lootboxes
All checks were successful
CI / Get Changed Files (pull_request) Successful in 7s
CI / eslint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 38s
2025-04-02 09:15:31 +00:00
Phan Huy Tran
948240ba1e fix: fix wrong reward getting returned, refactor to service
All checks were successful
CI / Get Changed Files (pull_request) Successful in 7s
CI / eslint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 39s
2025-04-02 11:15:08 +02:00
Phan Huy Tran
b963595ab4 feat: manage balance
All checks were successful
CI / Get Changed Files (pull_request) Successful in 7s
CI / eslint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 1m29s
2025-04-02 11:04:20 +02:00
aa613a95e3
fix(deps): update dependencies (major and minor)
Some checks failed
CI / Get Changed Files (pull_request) Successful in 6s
CI / prettier (pull_request) Successful in 19s
CI / Checkstyle Main (pull_request) Failing after 31s
CI / eslint (pull_request) Successful in 55s
CI / test-build (pull_request) Failing after 52s
2025-04-02 09:02:01 +00:00
38f4617fb0
chore(deps): update devdependencies (non-major)
Some checks failed
CI / Get Changed Files (pull_request) Successful in 6s
CI / Checkstyle Main (pull_request) Has been skipped
CI / eslint (pull_request) Successful in 20s
CI / test-build (pull_request) Failing after 21s
CI / prettier (pull_request) Successful in 34s
2025-04-02 09:01:53 +00:00
626e28ab65
Merge pull request 'feat: add stand and get game features to blackjack game with animations' (!105) from task/CAS-50/add_rest_blackjack_logic_with_frontend_animations into main
All checks were successful
Release / Release (push) Successful in 1m1s
Reviewed-on: #105
Reviewed-by: Jan K9f <jan@kjan.email>
2025-04-02 08:28:43 +00:00
4a7c54eab8
style: format code for consistency and readability
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Successful in 19s
CI / test-build (pull_request) Successful in 27s
CI / prettier (pull_request) Successful in 40s
CI / Checkstyle Main (pull_request) Successful in 1m28s
2025-04-02 10:26:11 +02:00
e983b21e07
feat(blackjack): refresh user balance on game state change 2025-04-02 10:25:43 +02:00
Phan Huy Tran
8a6bc95c92 feat: add route to get all lootboxes 2025-04-02 10:18:51 +02:00
08b12d238e
feat(blackjack): add PLAYER_WON state to BlackJackState
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Successful in 18s
CI / test-build (pull_request) Successful in 28s
CI / prettier (pull_request) Successful in 59s
CI / Checkstyle Main (pull_request) Successful in 2m18s
2025-04-02 10:14:19 +02:00
d400986c34
refactor(blackjack): update import paths for modules 2025-04-02 10:12:29 +02:00
5d803e4b8b
feat(landing): add NavbarComponent to landing page component 2025-04-02 10:12:29 +02:00
6508a233b2
style(game-controls): fix formatting in constructor method 2025-04-02 10:12:29 +02:00
889863aad6
refactor(game-controls): update import paths for consistency 2025-04-02 10:12:29 +02:00
ba854be5db
style: fix formatting in constructor definitions 2025-04-02 10:12:29 +02:00
1d9eec4546
refactor(blackjack): update import paths for components 2025-04-02 10:12:29 +02:00
56c63d48f6
style(tsconfig): update path mappings to array syntax 2025-04-02 10:12:29 +02:00
db3d2e7b82
style(tsconfig): fix path configuration formatting 2025-04-02 10:12:29 +02:00
2a11675fb6
style: format constructor style in components 2025-04-02 10:12:28 +02:00
2405c00f49
refactor: update imports to use absolute paths 2025-04-02 10:12:28 +02:00
b4caf70ffe
refactor: update import paths for better readability 2025-04-02 10:12:28 +02:00
defe26d0c1
refactor(blackjack): move GameState to feature folder 2025-04-02 10:12:28 +02:00
2d8b137e69
style: format code and add missing newlines 2025-04-02 10:12:28 +02:00
4b569157aa
feat: add game state enum and refactor game components 2025-04-02 10:12:28 +02:00
349e4ce1ec
refactor(blackjack): remove unnecessary comments and clean code 2025-04-02 10:12:28 +02:00
deac128935
style(blackjack): format code for better readability 2025-04-02 10:12:28 +02:00
acdbea5a99
feat(blackjack): add action indicators and loading states 2025-04-02 10:12:28 +02:00
d2b22b561d
feat: add double down feature to blackjack game 2025-04-02 10:12:19 +02:00
d90fcdcf1e
feat: add stand and get game features to blackjack game 2025-04-02 10:11:26 +02:00
Phan Huy Tran
e4bcd9d791 refactor: use many to many relation for lootboxes and rewards 2025-04-02 10:08:23 +02:00
Phan Huy Tran
084d478cd9 feat: create repositories
All checks were successful
CI / Get Changed Files (pull_request) Successful in 7s
CI / eslint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 1m28s
2025-04-02 09:18:17 +02:00
Phan Huy Tran
1878ed8fe4 feat: create lootbox and rewards entity 2025-04-02 09:15:37 +02:00
4e8530c861 Merge pull request 'refactor: refactor state logic' (!106) from refactor/state-logic into main
All checks were successful
Release / Release (push) Successful in 49s
Reviewed-on: #106
2025-03-27 17:25:00 +00:00
Phan Huy Tran
cb6c1550b7 refactor: refactor state logic
All checks were successful
CI / Get Changed Files (pull_request) Successful in 9s
CI / eslint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 54s
2025-03-27 15:46:07 +01:00
ed6071a0ba Merge pull request 'feat: add balance when player wins with blackjack in first round' (!104) from feat/blackjack-win-on-start into main
All checks were successful
Release / Release (push) Successful in 1m12s
Reviewed-on: #104
Reviewed-by: Jan K9f <jan@kjan.email>
2025-03-27 13:34:38 +00:00
Phan Huy Tran
ffd651d74b feat: add balance when player wins gets blackjack in first round
All checks were successful
CI / Get Changed Files (pull_request) Successful in 30s
CI / eslint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 1m19s
2025-03-27 14:18:03 +01:00
4fa7b63b04 Merge pull request 'feat: validate game state on hit (CAS-51)' (!103) from feat/hit-state-validation into main
All checks were successful
Release / Release (push) Successful in 41s
Reviewed-on: #103
Reviewed-by: Jan K9f <jan@kjan.email>
2025-03-27 13:07:37 +00:00
4b4de32e1d Merge pull request 'feat(blackjack): add player lost state in game logic (CAS-51)' (!102) from update-state-on-hit into main
Some checks failed
Release / Release (push) Has been cancelled
Reviewed-on: #102
Reviewed-by: Phan Huy Tran <ptran@noreply.localhost>
2025-03-27 13:07:03 +00:00
Phan Huy Tran
4764c12909 feat: validate game state on hit
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 1m45s
2025-03-27 14:05:13 +01:00
e9a8267208
feat(blackjack): add player lost state in game logic
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / eslint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 1m1s
2025-03-27 14:03:33 +01:00
d7690e630e Merge pull request 'chore(deps): update plugin org.springframework.boot to v3.4.4' (!84) from renovate/all-minor-patch into main
All checks were successful
Release / Release (push) Successful in 40s
Reviewed-on: #84
Reviewed-by: Jan K9f <jan@kjan.email>
2025-03-27 12:53:46 +00:00
8ec97d7f2f Merge pull request 'fix(deps): update dependencies (major and minor)' (!85) from renovate/dependencies-(major-and-minor) into main
Some checks failed
Release / Release (push) Has been cancelled
Reviewed-on: #85
Reviewed-by: Jan K9f <jan@kjan.email>
2025-03-27 12:53:27 +00:00
36f2d80d5c Merge pull request 'feat(blackjack): add hit endpoint for blackjack game (CAS-51)' (!97) from add-hitting into main
Some checks failed
Release / Release (push) Has been cancelled
Reviewed-on: #97
Reviewed-by: Phan Huy Tran <ptran@noreply.localhost>
2025-03-27 12:52:41 +00:00
Phan Huy Tran
7a7d24c8ea fix: fix playercards, dealercards and deck referencing the same database entity
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 34s
2025-03-27 13:50:17 +01:00
2b8d45f6ec Merge pull request 'Update README.md' (!99) from jank-patch-1 into main
Reviewed-on: #99
2025-03-27 12:02:02 +00:00
aca389a9b0 fix(deps): update dependencies (major and minor)
All checks were successful
CI / Get Changed Files (pull_request) Successful in 7s
CI / eslint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 1m36s
2025-03-27 12:01:53 +00:00
bbb991a25b Update README.md
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / Checkstyle Main (pull_request) Has been skipped
CI / eslint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
2025-03-27 11:59:49 +00:00
500a76dd7a player gets way to many cards and I dont know why pls help
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 35s
2025-03-27 12:50:59 +01:00
59562e5b64 fix(BlackJackGameController): improve game existence check 2025-03-27 12:50:59 +01:00
bd5539bb42 feat(blackjack): implement hit action for blackjack game 2025-03-27 12:50:59 +01:00
ed5960877d feat(blackjack): add hit endpoint for blackjack game 2025-03-27 12:50:55 +01:00
deb5b6525f Merge pull request 'feat: Implement player winning state at startup' (!98) from feat/state-enum into main
All checks were successful
Release / Release (push) Successful in 48s
Reviewed-on: #98
Reviewed-by: Jan K9f <jan@kjan.email>
2025-03-27 11:49:37 +00:00
Phan Huy Tran
90abd13a2c feat: handle player drawing blackjack at the start of the game
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 36s
2025-03-27 12:45:52 +01:00
Phan Huy Tran
caa210a80e refactor: add blackjack state enum 2025-03-27 12:08:57 +01:00
4b23f3c67f Merge pull request 'feat: add deck to blackjack game instead of random cards' (!96) from feat/deck into main
All checks were successful
Release / Release (push) Successful in 50s
Reviewed-on: #96
Reviewed-by: Jan K9f <jan@kjan.email>
2025-03-27 10:54:49 +00:00
4f6add087b Merge pull request 'docs: add optional watchexec command to README.md' (!95) from add-some-docs into main
Reviewed-on: #95
Reviewed-by: Phan Huy Tran <ptran@noreply.localhost>
2025-03-27 10:42:27 +00:00
Phan Huy Tran
55daca72c0 feat: add deck to blackjack game instead of random cards
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 1m24s
2025-03-27 11:40:50 +01:00
71cda97dab
docs: add optional watchexec command to README.md
All checks were successful
CI / Get Changed Files (pull_request) Successful in 25s
CI / Checkstyle Main (pull_request) Has been skipped
CI / eslint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
2025-03-27 10:47:46 +01:00
cc92f234d7 Merge pull request 'feat(blackjack): implement game start and controls functionality' (!94) from task/CAS-50/add_frontend_game_start into main
All checks were successful
Release / Release (push) Successful in 48s
Reviewed-on: #94
2025-03-26 14:39:15 +00:00
99f9f8d3c3
feat(blackjack): implement game start and controls functionality
All checks were successful
CI / Get Changed Files (pull_request) Successful in 7s
CI / eslint (pull_request) Successful in 20s
CI / test-build (pull_request) Successful in 28s
CI / prettier (pull_request) Successful in 34s
CI / Checkstyle Main (pull_request) Successful in 1m1s
2025-03-26 15:30:55 +01:00
d0ba0eb71d Merge pull request 'feat: Implement starting a Blackjack game (CAS-50)' (!89) from feat/blackjack into main
All checks were successful
Release / Release (push) Successful in 50s
Reviewed-on: #89
Reviewed-by: Jan K9f <jan@kjan.email>
2025-03-26 13:47:13 +00:00
Phan Huy Tran
ca87c684b1 refactor: Extract game creation logic to service
All checks were successful
CI / Get Changed Files (pull_request) Successful in 29s
CI / eslint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 1m19s
2025-03-26 14:31:32 +01:00
Phan Huy Tran
1b9bc90920 feat: Adjust json responses 2025-03-26 14:20:31 +01:00
Phan Huy Tran
85d2b218aa feat: Add user relation to black jack game entity 2025-03-26 13:03:06 +00:00
Phan Huy Tran
64e41b663e feat: Subtract user balance, persist game 2025-03-26 13:03:06 +00:00
Phan Huy Tran
b2b0bb2f44 feat: Validate bet amount 2025-03-26 13:03:06 +00:00
Phan Huy Tran
1a4b3f073f fix: add openid scope to get bearer token request 2025-03-26 13:03:06 +00:00
8cb045fcbe feat(blackjack): add BlackJack game creation functionality 2025-03-26 13:03:06 +00:00
Phan Huy Tran
24ea51318f feat: Add card class 2025-03-26 13:03:06 +00:00
3df8926e8a Merge pull request 'chore: update Hibernate ddl-auto setting to 'update'' (#93) from fix/db-deletion into main
All checks were successful
Release / Release (push) Successful in 31s
Reviewed-on: #93
Reviewed-by: Jan K9f <jan@kjan.email>
2025-03-26 12:41:12 +00:00
ad9fb7e735 chore: update Hibernate ddl-auto setting to 'update'
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 26s
2025-03-26 12:39:40 +00:00
67b83bcf63 Merge pull request 'feat(game): add blackjack game component and routing' (#92) from task/CAS-49/add_base_styling_for_blackjack into main
All checks were successful
Release / Release (push) Successful in 48s
Reviewed-on: #92
2025-03-26 12:36:20 +00:00
03ce527087
refactor(blackjack): rename event emitters for clarity
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / Checkstyle Main (pull_request) Has been skipped
CI / prettier (pull_request) Successful in 37s
CI / eslint (pull_request) Successful in 39s
CI / test-build (pull_request) Successful in 46s
2025-03-26 13:35:07 +01:00
5e5fe603f9
style: update card background colors in templates 2025-03-26 13:35:07 +01:00
a639888a33 Merge branch 'main' into task/CAS-49/add_base_styling_for_blackjack
Some checks failed
CI / Get Changed Files (pull_request) Successful in 7s
CI / Checkstyle Main (pull_request) Has been skipped
CI / prettier (pull_request) Successful in 24s
CI / test-build (pull_request) Successful in 37s
CI / eslint (pull_request) Failing after 50s
2025-03-26 12:27:47 +00:00
3da534f3ae
feat(security): add CORS support and update security config
Some checks failed
CI / Get Changed Files (pull_request) Successful in 9s
CI / eslint (pull_request) Failing after 29s
CI / prettier (pull_request) Failing after 32s
CI / test-build (pull_request) Failing after 58s
CI / Checkstyle Main (pull_request) Successful in 1m24s
2025-03-26 13:27:42 +01:00
9a9447961f Merge pull request 'style(navbar): update text from 'Balance' to 'Guthaben'' (#91) from translation into main
All checks were successful
Release / Release (push) Successful in 59s
Reviewed-on: #91
2025-03-26 12:27:38 +00:00
eb153f4459
feat(game): add blackjack game component and routing
Some checks failed
CI / Get Changed Files (pull_request) Successful in 6s
CI / Checkstyle Main (pull_request) Has been skipped
CI / prettier (pull_request) Successful in 16s
CI / eslint (pull_request) Failing after 43s
CI / test-build (pull_request) Successful in 46s
2025-03-26 13:26:38 +01:00
cd84d0c949
style(navbar): update text from 'Balance' to 'Guthaben'
All checks were successful
CI / Get Changed Files (pull_request) Successful in 5s
CI / Checkstyle Main (pull_request) Has been skipped
CI / eslint (pull_request) Successful in 37s
CI / prettier (pull_request) Successful in 41s
CI / test-build (pull_request) Successful in 41s
2025-03-26 13:21:29 +01:00
csimonis
242b72ca45
idek man
Some checks failed
CI / Get Changed Files (pull_request) Successful in 6s
CI / prettier (pull_request) Failing after 23s
CI / Checkstyle Main (pull_request) Successful in 44s
CI / test-build (pull_request) Failing after 55s
CI / eslint (pull_request) Failing after 57s
2025-03-26 11:10:19 +01:00
csimonis
e848b548b5
wip 2025-03-26 11:10:19 +01:00
144f033beb
chore: remove keycloak 2025-03-26 11:10:19 +01:00
f547d05f64
wip 2025-03-26 11:10:18 +01:00
33683f565f
wip 2025-03-26 11:09:28 +01:00
374175d386 Merge branch 'main' into renovate/all-minor-patch
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 41s
2025-03-26 10:07:06 +00:00
32aa753452 Merge pull request 'feat(home): add router to clear query parameters' (#88) from task/remove_success_url_parameter into main
All checks were successful
Release / Release (push) Successful in 50s
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
Reviewed-on: #88
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
Reviewed-by: Phan Huy Tran <ptran@noreply.localhost>
2025-03-26 10:04:23 +00:00
ce17741e72
style(home): format constructor for better readability
All checks were successful
CI / Get Changed Files (pull_request) Successful in 9s
CI / Checkstyle Main (pull_request) Has been skipped
CI / prettier (pull_request) Successful in 20s
CI / test-build (pull_request) Successful in 31s
CI / eslint (pull_request) Successful in 36s
2025-03-26 11:03:28 +01:00
cafa2c148f chore(deps): update plugin org.springframework.boot to v3.4.4
All checks were successful
CI / Get Changed Files (pull_request) Successful in 7s
CI / eslint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 2m50s
2025-03-26 10:01:43 +00:00
af90108b3b
refactor(home): remove unnecessary comment from code
Some checks failed
CI / Get Changed Files (pull_request) Successful in 17s
CI / Checkstyle Main (pull_request) Has been skipped
CI / prettier (pull_request) Failing after 39s
CI / eslint (pull_request) Successful in 42s
CI / test-build (pull_request) Successful in 38s
2025-03-26 11:00:43 +01:00
cf42e725cc
feat(home): add router to clear query parameters
Some checks failed
CI / Get Changed Files (pull_request) Successful in 41s
CI / Checkstyle Main (pull_request) Has been skipped
CI / prettier (pull_request) Failing after 42s
CI / eslint (pull_request) Successful in 56s
CI / test-build (pull_request) Successful in 1m13s
2025-03-26 10:58:25 +01:00
c42c5577cf Merge pull request 'docs: Add docs for local stripe development' (#87) from docs/stripe-dev into main
Reviewed-on: #87
Reviewed-by: jleibl <jleibl@proton.me>
2025-03-26 09:14:13 +00:00
Phan Huy Tran
75d9a4e2fb docs: Add docs for local stripe development
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / Checkstyle Main (pull_request) Has been skipped
CI / eslint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
2025-03-26 09:40:57 +01:00
6349ad0bab Merge pull request 'refactor: Switch stripe tokens to use the casino stripe account' (#86) from refactor/stripe-account-swtich into main
All checks were successful
Release / Release (push) Successful in 56s
Reviewed-on: #86
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
2025-03-26 08:16:22 +00:00
Phan Huy Tran
f8013d2438 refactor: Switch stripe tokens to use the casino stripe account
All checks were successful
CI / Get Changed Files (pull_request) Successful in 25s
CI / prettier (pull_request) Successful in 52s
CI / Checkstyle Main (pull_request) Successful in 59s
CI / eslint (pull_request) Successful in 1m12s
CI / test-build (pull_request) Successful in 1m16s
2025-03-26 09:14:07 +01:00
c97cb51c6a Merge pull request 'chore(deps): update devdependencies (non-major)' (#80) from renovate/devdependencies-(non-major) into main
All checks were successful
Release / Release (push) Successful in 54s
Reviewed-on: #80
Reviewed-by: Jan Gleytenhoover <jan@kjan.email>
2025-03-16 08:10:24 +00:00
c590cfaec5 chore(package.json): downgrade typescript version to 5.5.0
All checks were successful
CI / Get Changed Files (pull_request) Successful in 7s
CI / Checkstyle Main (pull_request) Has been skipped
CI / prettier (pull_request) Successful in 16s
CI / eslint (pull_request) Successful in 41s
CI / test-build (pull_request) Successful in 46s
2025-03-16 09:06:30 +01:00
814cf0e9fa chore: update typescript version in package.json
Some checks failed
CI / Get Changed Files (pull_request) Successful in 27s
CI / Checkstyle Main (pull_request) Has been skipped
CI / prettier (pull_request) Successful in 37s
CI / test-build (pull_request) Failing after 48s
CI / eslint (pull_request) Successful in 32s
2025-03-16 09:04:27 +01:00
1df00211d5 chore(deps): update devdependencies (non-major)
Some checks failed
CI / Get Changed Files (pull_request) Successful in 29s
CI / Checkstyle Main (pull_request) Has been skipped
CI / prettier (pull_request) Successful in 34s
CI / eslint (pull_request) Successful in 51s
CI / test-build (pull_request) Failing after 54s
2025-03-13 15:02:53 +00:00
fbaa612980 Merge pull request 'feat: Save balance after successful payment' (#81) from feature/save-balance into main
All checks were successful
Release / Release (push) Successful in 45s
Reviewed-on: #81
Reviewed-by: Jan Gleytenhoover <jan@kjan.email>
2025-03-13 14:18:31 +00:00
Phan Huy Tran
07a5cee330 checkstyle
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / prettier (pull_request) Successful in 19s
CI / eslint (pull_request) Successful in 34s
CI / Checkstyle Main (pull_request) Successful in 38s
CI / test-build (pull_request) Successful in 41s
2025-03-13 15:10:16 +01:00
Phan Huy Tran
d25b894f38 feat: Save balance after successful payment
Some checks failed
CI / Get Changed Files (pull_request) Successful in 9s
CI / eslint (pull_request) Successful in 39s
CI / prettier (pull_request) Successful in 37s
CI / test-build (pull_request) Successful in 42s
CI / Checkstyle Main (pull_request) Failing after 1m22s
2025-03-13 15:02:32 +01:00
ce7c30b9ae Merge pull request 'chore(deps): update dorny/paths-filter action to v3' (#75) from renovate/dorny-paths-filter-3.x into main
Reviewed-on: #75
Reviewed-by: Jan Gleytenhoover <jan@kjan.email>
2025-03-13 10:08:35 +00:00
5c3b74bede chore(deps): update dorny/paths-filter action to v3
All checks were successful
CI / Get Changed Files (pull_request) Successful in 10s
CI / prettier (pull_request) Successful in 24s
CI / eslint (pull_request) Successful in 43s
CI / test-build (pull_request) Successful in 43s
CI / Checkstyle Main (pull_request) Successful in 1m49s
2025-03-13 10:02:48 +00:00
d81cf1f68f Merge pull request 'fix(deps): update dependencies (major and minor)' (#62) from renovate/dependencies-(major-and-minor) into main
All checks were successful
Release / Release (push) Successful in 48s
Reviewed-on: #62
Reviewed-by: Jan Gleytenhoover <jan@kjan.email>
2025-03-13 09:49:25 +00:00
ec9468943a Merge pull request 'chore: remove unused file a from the backend directory' (#74) from fix-a into main
All checks were successful
Release / Release (push) Successful in 48s
Reviewed-on: #74
2025-03-13 09:10:54 +00:00
61bc89e62f
chore: remove unused file a from the backend directory
All checks were successful
CI / Get Changed Files (pull_request) Successful in 27s
CI / eslint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 49s
2025-03-13 10:07:29 +01:00
a0968e784a Merge pull request 'ci: update CI workflows to include path filters' (#73) from pipeline-rules into main
All checks were successful
Release / Release (push) Successful in 45s
Reviewed-on: #73
2025-03-13 09:04:46 +00:00
ebd16b6503 fix(deps): update dependencies (major and minor)
All checks were successful
CI / eslint (pull_request) Successful in 28s
CI / prettier (pull_request) Successful in 36s
CI / test-build (pull_request) Successful in 43s
CI / Checkstyle Main (pull_request) Successful in 1m42s
2025-03-13 07:02:20 +00:00
70fe8d8c88 Merge pull request 'chore(deps): update postgres docker tag to v17' (#68) from renovate/postgres-17.x into main
All checks were successful
Release / Release (push) Successful in 43s
Reviewed-on: #68
Reviewed-by: Jan Gleytenhoover <jan@kjan.email>
2025-03-13 06:50:38 +00:00
d722f0af76 chore(deps): update postgres docker tag to v17
All checks were successful
CI / eslint (pull_request) Successful in 28s
CI / prettier (pull_request) Successful in 25s
CI / test-build (pull_request) Successful in 44s
CI / Checkstyle Main (pull_request) Successful in 1m32s
2025-03-13 06:44:49 +00:00
0227146da7
ci: improve checkstyle report caching in CI workflow
All checks were successful
CI / Get Changed Files (pull_request) Successful in 7s
CI / prettier (pull_request) Successful in 19s
CI / eslint (pull_request) Successful in 21s
CI / test-build (pull_request) Successful in 28s
CI / Checkstyle Main (pull_request) Successful in 37s
2025-03-12 21:08:49 +01:00
fd7c92ebb1
ci: update CI workflow to check for changed files
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Successful in 20s
CI / prettier (pull_request) Successful in 26s
CI / test-build (pull_request) Successful in 27s
CI / Checkstyle Main (pull_request) Successful in 1m57s
2025-03-12 21:06:25 +01:00
db37f0de35
chore: add new file a to the backend directory
All checks were successful
CI / Checkstyle Main (pull_request) Has been skipped
CI / eslint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
2025-03-12 21:05:03 +01:00
763afdc546
ci: update CI workflows to include path filters
All checks were successful
CI / Checkstyle Main (pull_request) Has been skipped
CI / eslint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
2025-03-12 21:03:40 +01:00
dc5275d043 Merge pull request 'chore(deps): update all non-major dependencies' (#59) from renovate/all-minor-patch into main
All checks were successful
Release / Release (push) Successful in 47s
Reviewed-on: #59
Reviewed-by: Jan Gleytenhoover <jan@kjan.email>
2025-03-12 19:26:53 +00:00
7cc33c69e5 Merge pull request 'Add styleguide based on current design' (#57) from styleguide into main
All checks were successful
Release / Release (push) Successful in 52s
Reviewed-on: #57
Reviewed-by: jleibl <jleibl@proton.me>
2025-03-12 19:08:46 +00:00
3092f4a688 chore(deps): update all non-major dependencies
All checks were successful
CI / prettier (pull_request) Successful in 24s
CI / eslint (pull_request) Successful in 42s
CI / test-build (pull_request) Successful in 51s
CI / Checkstyle Main (pull_request) Successful in 2m7s
2025-03-12 19:02:41 +00:00
cd098f717c Merge branch 'main' into styleguide
All checks were successful
CI / prettier (pull_request) Successful in 46s
CI / eslint (pull_request) Successful in 54s
CI / Checkstyle Main (pull_request) Successful in 1m4s
CI / test-build (pull_request) Successful in 1m3s
2025-03-12 18:53:16 +00:00
09fdd83192 Merge pull request 'Rename variables to non dom element names' (#71) from fix/rename-to-not-standard-dom-elements into main
All checks were successful
Release / Release (push) Successful in 1m44s
Reviewed-on: #71
2025-03-12 18:52:30 +00:00
8c9d7c498b
style(home): format HTML and TypeScript code for clarity
All checks were successful
CI / prettier (pull_request) Successful in 22s
CI / Checkstyle Main (pull_request) Successful in 31s
CI / eslint (pull_request) Successful in 37s
CI / test-build (pull_request) Successful in 44s
2025-03-12 19:26:07 +01:00
abc4277e84
refactor(deposit): rename close event emitter for clarity 2025-03-12 19:25:11 +01:00
a7d98e1150
feat: rename event emitter for confirmation modal closure
Some checks failed
CI / prettier (pull_request) Failing after 20s
CI / Checkstyle Main (pull_request) Successful in 31s
CI / eslint (pull_request) Successful in 37s
CI / test-build (pull_request) Successful in 42s
2025-03-12 19:20:51 +01:00
7bbabc46f3 Merge pull request 'chore(deps): update https://github.com/actions/cache action to v4' (#67) from renovate/https-github.com-actions-cache-4.x into main
All checks were successful
Release / Release (push) Successful in 1m8s
Reviewed-on: #67
Reviewed-by: Jan Gleytenhoover <jan@kjan.email>
2025-03-12 18:01:55 +00:00
ba1415e8b0 Merge pull request 'chore(deps): update actions/checkout action to v4' (#64) from renovate/actions-checkout-4.x into main
All checks were successful
Release / Release (push) Successful in 1m10s
Reviewed-on: #64
Reviewed-by: Jan Gleytenhoover <jan@kjan.email>
2025-03-12 17:46:48 +00:00
f7c344faa6 chore(deps): update https://github.com/actions/cache action to v4
All checks were successful
CI / eslint (pull_request) Successful in 19s
CI / test-build (pull_request) Successful in 27s
CI / prettier (pull_request) Successful in 57s
CI / Checkstyle Main (pull_request) Successful in 1m20s
2025-03-12 16:04:42 +00:00
910895ed82 chore(deps): update actions/checkout action to v4
All checks were successful
CI / eslint (pull_request) Successful in 27s
CI / prettier (pull_request) Successful in 40s
CI / test-build (pull_request) Successful in 1m25s
CI / Checkstyle Main (pull_request) Successful in 2m20s
2025-03-12 16:04:02 +00:00
1ad34b1ae1 Merge pull request 'chore(deps): update actions/cache action to v4' (#63) from renovate/actions-cache-4.x into main
All checks were successful
Release / Release (push) Successful in 1m8s
Reviewed-on: #63
Reviewed-by: Jan Gleytenhoover <jan@kjan.email>
2025-03-12 15:43:04 +00:00
79b83fc4c8 chore(deps): update actions/cache action to v4
All checks were successful
CI / Checkstyle Main (pull_request) Successful in 46s
CI / eslint (pull_request) Successful in 50s
CI / prettier (pull_request) Successful in 1m3s
CI / test-build (pull_request) Successful in 1m9s
2025-03-12 15:03:14 +00:00
e8944c46a4
chore: remove unused Tailwind CSS configuration file
All checks were successful
CI / prettier (pull_request) Successful in 18s
CI / Checkstyle Main (pull_request) Successful in 27s
CI / eslint (pull_request) Successful in 35s
CI / test-build (pull_request) Successful in 43s
2025-03-12 14:49:11 +01:00
a3da0f9a4d
style: Update color theme in styles.css file
All checks were successful
CI / eslint (pull_request) Successful in 21s
CI / test-build (pull_request) Successful in 28s
CI / prettier (pull_request) Successful in 40s
CI / Checkstyle Main (pull_request) Successful in 1m12s
2025-03-12 14:45:20 +01:00
e0afebb397
style: update Tailwind CSS import in styles.css
Some checks failed
CI / prettier (pull_request) Successful in 19s
CI / Checkstyle Main (pull_request) Successful in 27s
CI / eslint (pull_request) Successful in 37s
CI / test-build (pull_request) Failing after 42s
2025-03-12 14:38:08 +01:00
8012112f6c
style(tailwind): update color keys for consistency
Some checks failed
CI / prettier (pull_request) Successful in 19s
CI / Checkstyle Main (pull_request) Successful in 27s
CI / eslint (pull_request) Successful in 46s
CI / test-build (pull_request) Failing after 51s
2025-03-12 14:31:55 +01:00
e9159abf3d
feat: add MIT License and update README for clarity
Some checks failed
CI / prettier (pull_request) Successful in 37s
CI / eslint (pull_request) Successful in 41s
CI / test-build (pull_request) Failing after 51s
CI / Checkstyle Main (pull_request) Successful in 56s
2025-03-12 14:29:21 +01:00
520c8f8343
docs: update README with style guide and license details
All checks were successful
CI / prettier (pull_request) Successful in 18s
CI / Checkstyle Main (pull_request) Successful in 27s
CI / eslint (pull_request) Successful in 35s
CI / test-build (pull_request) Successful in 42s
2025-03-12 14:21:12 +01:00
f826e1e203
docs: add style guide for casino gaming platform 2025-03-12 14:18:42 +01:00
8b2d8f7e05 Merge pull request 'update-readme' (#56) from update-readme into main
All checks were successful
Release / Release (push) Successful in 45s
Reviewed-on: #56
2025-03-12 13:11:19 +00:00
877ce2a6dd Merge pull request 'chore: Configure Renovate' (#55) from renovate/configure into main
All checks were successful
Release / Release (push) Successful in 50s
Reviewed-on: #55
Reviewed-by: Jan Gleytenhoover <jan@kjan.email>
2025-03-12 13:09:14 +00:00
c73a1a3af2
docs: add Claude Assistant Guide to documentation
All checks were successful
CI / eslint (pull_request) Successful in 20s
CI / prettier (pull_request) Successful in 26s
CI / test-build (pull_request) Successful in 27s
CI / Checkstyle Main (pull_request) Successful in 51s
2025-03-12 14:07:53 +01:00
9fbb339261
docs: update README for Casino Gaming Platform details 2025-03-12 14:04:10 +01:00
730a076710 chore(deps): add renovate.json
All checks were successful
CI / prettier (pull_request) Successful in 20s
CI / eslint (pull_request) Successful in 36s
CI / test-build (pull_request) Successful in 43s
CI / Checkstyle Main (pull_request) Successful in 47s
2025-03-12 13:01:23 +00:00
efef0aad42 Merge pull request 'fix pipes' (#54) from migr into main
All checks were successful
Release / Release (push) Successful in 1m8s
Reviewed-on: #54
2025-03-12 12:36:19 +00:00
319db88e24 Update .gitea/workflows/ci.yml
All checks were successful
CI / eslint (pull_request) Successful in 35s
CI / prettier (pull_request) Successful in 45s
CI / test-build (pull_request) Successful in 48s
CI / Checkstyle Main (pull_request) Successful in 1m3s
2025-03-12 12:30:26 +00:00
77549bbdfd Update .gitea/workflows/ci.yml
Some checks failed
CI / eslint (pull_request) Successful in 25s
CI / prettier (pull_request) Successful in 27s
CI / Checkstyle Main (pull_request) Successful in 37s
CI / test-build (pull_request) Successful in 36s
CI / Test (pull_request) Failing after 1m33s
2025-03-12 12:27:31 +00:00
b69640a1bd Update .gitea/workflows/ci.yml
Some checks failed
CI / eslint (pull_request) Successful in 25s
CI / prettier (pull_request) Successful in 27s
CI / test-build (pull_request) Successful in 38s
CI / Test (pull_request) Failing after 1m59s
CI / Checkstyle Main (pull_request) Successful in 4m22s
2025-03-12 12:25:30 +00:00
e3182ecaae Update .gitea/workflows/ci.yml
Some checks failed
CI / prettier (pull_request) Successful in 24s
CI / eslint (pull_request) Successful in 26s
CI / test-build (pull_request) Successful in 31s
CI / Test (pull_request) Failing after 1m45s
CI / Checkstyle Main (pull_request) Failing after 14s
2025-03-12 12:17:34 +00:00
f33e58cacf Update .gitea/workflows/ci.yml
Some checks failed
CI / prettier (pull_request) Successful in 22s
CI / test-build (pull_request) Successful in 38s
CI / Test (pull_request) Failing after 1m1s
CI / eslint (pull_request) Successful in 1m44s
CI / Checkstyle Main (pull_request) Successful in 6m30s
2025-03-12 12:13:04 +00:00
77c636968b Update .gitea/workflows/ci.yml
Some checks failed
CI / prettier (pull_request) Successful in 46s
CI / Test (pull_request) Failing after 53s
CI / Checkstyle Main (pull_request) Failing after 1m27s
CI / eslint (pull_request) Successful in 1m30s
CI / test-build (pull_request) Successful in 1m37s
2025-03-12 12:10:21 +00:00
49d908060a Update .gitea/workflows/release.yml
Some checks failed
CI / prettier (pull_request) Successful in 24s
CI / test-build (pull_request) Successful in 40s
CI / Test (pull_request) Failing after 1m4s
CI / eslint (pull_request) Successful in 1m10s
CI / Checkstyle Main (pull_request) Failing after 1m26s
2025-03-12 12:02:59 +00:00
2d8510c6a4 Update .gitea/workflows/ci.yml
Some checks failed
CI / eslint (pull_request) Has been cancelled
CI / Checkstyle Main (pull_request) Has been cancelled
CI / test-build (pull_request) Has been cancelled
CI / prettier (pull_request) Has been cancelled
CI / Test (pull_request) Has been cancelled
2025-03-12 12:02:33 +00:00
564cc84c79 Update .gitea/workflows/ci.yml
Some checks failed
CI / Test (pull_request) Has been cancelled
CI / eslint (pull_request) Has been cancelled
CI / prettier (pull_request) Has been cancelled
CI / test-build (pull_request) Has been cancelled
CI / Checkstyle Main (pull_request) Has been cancelled
2025-03-12 12:01:04 +00:00
27a225fffc Update release.config.cjs
Some checks failed
CI / Checkstyle Main (pull_request) Has been cancelled
CI / Test (pull_request) Has been cancelled
CI / eslint (pull_request) Has been cancelled
CI / prettier (pull_request) Has been cancelled
CI / test-build (pull_request) Has been cancelled
2025-03-12 12:00:22 +00:00
Hop In, I Have Puppies AND WiFi
f855dc521d Merge pull request 'Remove unused imports in security config and user entity (CAS-0)' (!53) from task/CAS-0/RemoveUnusedImports into main
Reviewed-on: https://git.simonis.lol/projects/casino/pulls/53
Reviewed-by: Huy <ptran@noreply@simonis.lol>
2025-03-06 11:51:23 +00:00
f2bd399c05 Merge pull request 'add test for backend' (!42) from tests/backend into main
Reviewed-on: https://git.simonis.lol/projects/casino/pulls/42
Reviewed-by: Huy <ptran@noreply@simonis.lol>
2025-03-06 11:50:06 +00:00
Hop In, I Have Puppies AND WiFi
9a8543cbfe Merge branch 'main' into task/CAS-0/RemoveUnusedImports 2025-03-06 11:49:59 +00:00
Hop In, I Have Puppies AND WiFi
259ada7523 Merge pull request 'Correct spelling of "Klarna" in footer text (CAS-0)' (!52) from task/CAS-0/FixKlarnaTextInFooter into main
Reviewed-on: https://git.simonis.lol/projects/casino/pulls/52
Reviewed-by: Klan Jattenhoff <jan@kjan.email>
2025-03-06 11:48:26 +00:00
1d7d84706d
refactor: remove unused imports in security config and user entity 2025-03-06 12:45:24 +01:00
bb7bac9a67
style(footer): correct spelling of "Klarna" in footer text 2025-03-06 12:42:18 +01:00
Hop In, I Have Puppies AND WiFi
e53a08441b Merge pull request 'Improve card styling and transitions in HTML (CAS-0)' (!51) from task/CAS-0/UpdateGameGalleryStyling into main
Reviewed-on: https://git.simonis.lol/projects/casino/pulls/51
2025-03-06 11:41:31 +00:00
e5ac810a67
style(home): Improve card styling and transitions in HTML 2025-03-06 12:37:51 +01:00
Hop In, I Have Puppies AND WiFi
bd4e7521c0 Merge pull request 'Implement modal animations with GSAP (CAS-0)' (!50) from task/CAS-0/adjust-animations-for-dialogs into main
Reviewed-on: https://git.simonis.lol/projects/casino/pulls/50
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
Reviewed-by: Huy <ptran@noreply@simonis.lol>
2025-03-06 11:31:59 +00:00
9c12ccd716
style: format code for better readability and consistency 2025-03-06 11:56:00 +01:00
1569922fda
refactor(deposit): remove unnecessary comments in code 2025-03-06 11:55:01 +01:00
08a1a5e877
feat(deposit): implement modal animations with GSAP 2025-03-06 11:52:31 +01:00
Hop In, I Have Puppies AND WiFi
c651337d30 Merge pull request 'Add current user balance display in navbar (CAS-26)' (!49) from task/CAS-26/add-balance-to-nav into main
Reviewed-on: https://git.simonis.lol/projects/casino/pulls/49
Reviewed-by: Klan Jattenhoff <jan@kjan.email>
Reviewed-by: lziemke <lea.z4@schule.bremen.de>
2025-03-05 11:15:47 +00:00
d61ef4df7e Merge pull request 'feature/confirmation-modal-after-deposit (CAS-29)' (!48) from feature/confirmation-modal-after-deposit into main
Reviewed-on: https://git.simonis.lol/projects/casino/pulls/48
Reviewed-by: Klan Jattenhoff <jan@kjan.email>
Reviewed-by: Hop In, I Have Puppies AND WiFi <jleibl@noreply@simonis.lol>
2025-03-05 11:11:12 +00:00
1768cf6536
style(user.service): fix string formatting in getCurrentUser method 2025-03-05 12:08:06 +01:00
454e99f812
feat(navbar): update balance display and use signal for state 2025-03-05 12:07:20 +01:00
564601f7bc
feat(navbar): add current user balance display in navbar 2025-03-05 12:05:46 +01:00
Lea
15a92b984c style: linter and prettier 2025-03-05 12:04:48 +01:00
Lea
212bee3bd2 feat: implemented confirmation modal for depositing money 2025-03-05 12:04:48 +01:00
f172e00d0a chore: add success bool to success / cancel url 2025-03-05 12:04:48 +01:00
Lea
95889fc937 fix: closing of deposit confirmation modal 2025-03-05 12:04:48 +01:00
Lea
caf2794489 comfirmation modal for deposit and refactoring 2025-03-05 12:04:48 +01:00
Hop In, I Have Puppies AND WiFi
63db07b6ae Merge pull request 'Update Java language version to 23' (!46) from task/CAS-0/UpdateJavaVersion into main
Reviewed-on: https://git.simonis.lol/projects/casino/pulls/46
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
2025-03-05 10:09:20 +00:00
Hop In, I Have Puppies AND WiFi
a1850a9705 Merge branch 'main' into task/CAS-0/UpdateJavaVersion 2025-03-05 10:03:50 +00:00
4d251a21c3
build(ci): update Java version in CI workflow 2025-03-05 10:21:55 +01:00
909dab2876
build: update Java language version to 23 2025-03-05 10:17:11 +01:00
6ff6c1eb5e Merge pull request 'fix: add correct redirect url after deposit' (!45) from bugfix/deposit into main
Reviewed-on: https://git.simonis.lol/projects/casino/pulls/45
Reviewed-by: lziemke <lea.z4@schule.bremen.de>
Reviewed-by: Klan Jattenhoff <jan@kjan.email>
2025-03-05 08:19:53 +00:00
bba33135d5
fix: change redirect route 2025-03-05 09:14:10 +01:00
c102f6ea65
fix: typo 2025-03-05 09:00:41 +01:00
f011ade4a8
fix: add frontend host to application properties 2025-03-05 08:59:34 +01:00
204970856b
fix: add correct redirect url after deposit 2025-03-05 08:57:14 +01:00
925a9d540d Merge pull request 'feature: removed angular materials and implemented new deposit modal' (!44) from feature/deposit-modal into main
Reviewed-on: https://git.simonis.lol/projects/casino/pulls/44
Reviewed-by: Huy <ptran@noreply@simonis.lol>
Reviewed-by: Klan Jattenhoff <jan@kjan.email>
2025-02-26 12:31:14 +00:00
Lea
65ed49df2a style: removed angular material lines 2025-02-26 13:26:51 +01:00
Lea
a6e3ae1a33 style: removed missed angular material lines 2025-02-26 13:22:52 +01:00
Lea
6c6e2b5cb5 style:fixed prettier and eslint 2025-02-26 13:13:44 +01:00
Lea
25492f3e68 style: fixed prettier and hopefully eslint 2025-02-26 13:13:44 +01:00
Lea
604d593fdc feature: removed angular materials and implemented new deposit modal 2025-02-26 13:13:44 +01:00
Huy
0100df89f5 Merge pull request 'refactor: Change balance type to BigDecimal for better precision' (!43) from refactor/money-precision into main
Reviewed-on: https://git.simonis.lol/projects/casino/pulls/43
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
Reviewed-by: Kjan Jattenhoff <jan@kjan.email>
2025-02-26 11:10:25 +00:00
Phan Huy Tran
aa6ec4397f revert: revert 2025-02-26 11:06:40 +01:00
Phan Huy Tran
aef0f09d09 refactor: Change balance type to bigdecimal for better precision 2025-02-26 11:05:06 +01:00
74f598a24c
remove comment 2025-02-26 11:01:26 +01:00
39a9ca1831 add test to ci 2025-02-26 09:57:54 +00:00
834cb559ef add test for health controller 2025-02-26 09:57:54 +00:00
cf569386ad add test for user controller 2025-02-26 09:57:54 +00:00
Huy
9c5e05f29d Merge pull request 'refactor: refactor and clean up of home.component.ts' (!41) from refactor/home into main
Reviewed-on: https://git.simonis.lol/projects/casino/pulls/41
Reviewed-by: Kjan Jattenhoff <jan@kjan.email>
Reviewed-by: Huy <ptran@noreply@simonis.lol>
2025-02-26 09:46:14 +00:00
Lea
cfd59d876d prettier 2025-02-26 10:43:32 +01:00
Lea
f09935564d refactor: refactor and clean up of home.component.ts 2025-02-26 10:18:56 +01:00
Huy
9104c6eb2c Merge pull request 'fix: Redirect to homepage after login' (!40) from fix/home-redirect into main
Reviewed-on: https://git.simonis.lol/projects/casino/pulls/40
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
Reviewed-by: lziemke <lea.z4@schule.bremen.de>
2025-02-26 09:10:10 +00:00
33f962a02c Merge branch 'main' into fix/home-redirect 2025-02-26 09:06:06 +00:00
Phan Huy Tran
3b1a97c08a fix: Redirect to homepage after login 2025-02-26 10:03:34 +01:00
Huy
11213ec5f0 Merge pull request 'chore: Add http requests for user' (!39) from chore/add-user-requests into main
Reviewed-on: https://git.simonis.lol/projects/casino/pulls/39
Reviewed-by: We ball <jan@kjan.email>
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
2025-02-26 09:02:28 +00:00
Phan Huy Tran
24be28af1b chore: Add http requests for user 2025-02-26 09:58:33 +01:00
cc8f553d66 Merge pull request 'feat: add homepage ui and images' (!38) from feature/homepage-games-preview into main
Reviewed-on: https://git.simonis.lol/projects/casino/pulls/38
Reviewed-by: We ball <jan@kjan.email>
Reviewed-by: Huy <ptran@noreply@simonis.lol>
2025-02-19 12:06:35 +00:00
Lea
428c33b000 formatted 2025-02-19 13:02:13 +01:00
Lea
09ccad479e added images for the games 2025-02-19 13:02:13 +01:00
Lea
a933f0b397 implemented better ui and pseudo data 2025-02-19 13:02:13 +01:00
Hop In, I Have Puppies AND WiFi
b9ce80a28a Merge pull request 'feat: add user managment' (!32) from feat/user-managment into main
Reviewed-on: https://git.simonis.lol/projects/casino/pulls/32
Reviewed-by: Huy <ptran@noreply@simonis.lol>
Reviewed-by: Hop In, I Have Puppies AND WiFi <jleibl@noreply@simonis.lol>
2025-02-19 11:57:30 +00:00
8303c906aa Merge pull request 'Add cache to other pipelines' (!36) from feature/custom-pipeline-images into main
Reviewed-on: https://git.simonis.lol/projects/casino/pulls/36
Reviewed-by: Huy <ptran@noreply@simonis.lol>
2025-02-19 11:55:50 +00:00
Hop In, I Have Puppies AND WiFi
219cbfca0e Merge pull request 'refactor(routes): change home route to lazy loading' (!37) from task/lazy-load-homepage into main
Reviewed-on: https://git.simonis.lol/projects/casino/pulls/37
Reviewed-by: We ball <jan@kjan.email>
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
2025-02-19 11:55:12 +00:00
11c6634d6c
fix: build 2025-02-19 12:50:13 +01:00
356a599dd5
chore: remove unused Dockerfile from bunPipeline 2025-02-19 12:48:40 +01:00
0c7c2ae9fa
chore: remove obsolete Docker build workflow file 2025-02-19 12:48:03 +01:00
c75c62b396 Merge pull request 'Fix caching of pipeline' (!34) from fix/improve-checkstyle-pipeline into main
Reviewed-on: https://git.simonis.lol/projects/casino/pulls/34
Reviewed-by: Hop In, I Have Puppies AND WiFi <jleibl@noreply@simonis.lol>
Reviewed-by: Huy <ptran@noreply@simonis.lol>
2025-02-19 11:47:50 +00:00
8547bd1fa3
ci: remove lint job from CI configuration 2025-02-19 12:36:22 +01:00
da047eef70
style: prettier 2025-02-19 12:31:07 +01:00
da50d19f9d
ci: update CI workflow to use Super-linter for linting 2025-02-19 12:30:07 +01:00
5cb08ca5f8
ci: update build command in CI workflow 2025-02-19 12:27:29 +01:00
8da1ff8acd
ci: update CI runner to vps-4 from ubuntu-latest 2025-02-19 12:24:55 +01:00
7bd06dee62
refactor(user): reorganize imports and code structure 2025-02-19 12:23:45 +01:00
72f56928d4
ci: add linelint job to CI workflow 2025-02-19 12:23:32 +01:00
6c025cc8d2
fix: lazy load login success component 2025-02-19 12:18:12 +01:00
642f5727e5
ci: update build output directory in CI workflow 2025-02-19 12:16:50 +01:00
8d4901601f
chore: adjust login success view 2025-02-19 12:09:53 +01:00
355d1b0c06
ci: update frontend build process in CI workflow 2025-02-19 12:09:22 +01:00
877b6f77b2
chore: move classes add balance fix routes 2025-02-19 12:06:49 +01:00
0590a2f9ee
build(ci): add caching for frontend dependencies and dist 2025-02-19 12:05:59 +01:00
ef8111cc7e
ci: update node_modules path in CI workflow config 2025-02-19 12:01:14 +01:00
a091387c1c
fix: 500 when loggin in 2025-02-19 11:59:36 +01:00
2392dac519
ci: update path in CI workflow configuration 2025-02-19 11:58:56 +01:00
fadedb0bcd
ci: Fix node_modules path in CI workflow configuration 2025-02-19 11:57:08 +01:00
59263dca71
ci: update path for node_modules in CI workflow 2025-02-19 11:54:35 +01:00
a19ddeed47
ci: update cache paths in CI configuration 2025-02-19 11:50:07 +01:00
bd26ded681
ci: update CI workflow for bun installation and caching 2025-02-19 11:45:20 +01:00
5afdbad461
refactor 2025-02-19 11:43:53 +01:00
2326d41a96
satisfy quality tools 2025-02-19 11:43:53 +01:00
df9fa9f275
fix: fix some stuff 2025-02-19 11:43:53 +01:00
793f3f6834
feat: add user creation on login (wip) 2025-02-19 11:43:49 +01:00
c55fcd9ea0
ci: update CI workflow to install dependencies correctly 2025-02-19 11:40:53 +01:00
7533f1139c
ci: update workflow trigger for bun.yml file 2025-02-19 11:38:18 +01:00
6fb3f2bef2
ci: remove time command from CI workflow script 2025-02-19 11:36:51 +01:00
bb24af241c
ci: add timing to node_modules symlink creation step 2025-02-19 11:35:44 +01:00
c258f1014d
ci: update dependency installation to use symlink 2025-02-19 11:30:20 +01:00
0b61ce11e1
build(ci): update container image for CI jobs 2025-02-19 11:27:01 +01:00
876d174f8f
ci: update CI workflow to remove bun installation step 2025-02-19 11:24:45 +01:00
c0e7f5f7f8
ci: add bun install to CI workflow for frontend setup 2025-02-19 11:21:29 +01:00
c7acd8271a
ci: update CI workflow to copy node_modules instead of bun 2025-02-19 11:19:48 +01:00
aaff4a543b
ci: update path in CI workflow for proper execution 2025-02-19 11:18:14 +01:00
82a3f4d195
ci: update CI workflow command to change directory first 2025-02-19 11:09:08 +01:00
483446cdd9
build: update Dockerfile to include CMD instruction 2025-02-19 11:08:43 +01:00
562a93bbf1
refactor(home): change HomeComponent to default export 2025-02-19 11:07:46 +01:00
840d6b5bfd
refactor(routes): change home route to lazy loading 2025-02-19 11:06:57 +01:00
36be142de1
ci: simplify command in CI workflow configuration 2025-02-19 11:04:31 +01:00
50d0782e02
ci: update CI workflow for frontend directory listing 2025-02-19 10:45:29 +01:00
4ce4f86419
ci: update checkout step in CI workflow to change dir 2025-02-19 10:44:04 +01:00
313950e998
ci: add command to list files in CI workflow 2025-02-19 10:42:43 +01:00
aa2bb187ce
ci: update CI container image for test-build job 2025-02-19 10:37:19 +01:00
c0ad17490e
build(Dockerfile): update Dockerfile for bun installation 2025-02-19 10:34:55 +01:00
4c376f8375
build: update Dockerfile and workflow context path 2025-02-19 10:33:12 +01:00
3433641025
ci: update paths in bun.yml for build triggers 2025-02-19 10:30:05 +01:00
9d8509731f
ci: update Docker password variable in workflow file 2025-02-19 10:27:06 +01:00
ba776f0ec1
ci: update Docker login action to version 3 2025-02-19 10:25:16 +01:00
f8db9221a6
ci: update login-action reference in workflow file 2025-02-19 10:24:36 +01:00
0d67c0e305
ci: add Docker.io login step to workflow configuration 2025-02-19 10:22:40 +01:00
586044a23d
chore: clean up Dockerfile by removing unused jobs section 2025-02-19 10:18:38 +01:00
a50b9be463
ci: update runner to vps-4 in workflow configuration 2025-02-19 10:16:43 +01:00
0d45d9659a
chore: rename bun-image.yml to bun.yml 2025-02-19 10:12:45 +01:00
ecdcea4994
ci: remove main branch restriction from workflow 2025-02-19 10:12:16 +01:00
a8a7d4296a
feat: add Dockerfile and CI workflow for image build 2025-02-19 10:11:18 +01:00
13245cdab6
ci: update CI workflow by removing unnecessary caching steps 2025-02-19 09:54:41 +01:00
9d4fb96daf
ci: update tree command in CI workflow 2025-02-19 09:52:09 +01:00
1bc2ca5f9a
ci: add tree command to CI workflow 2025-02-19 09:47:55 +01:00
Hop In, I Have Puppies AND WiFi
44c7d8be57 Merge pull request 'navbar: update navbar text to German language' (!35) from task/translate-navbar into main
Reviewed-on: https://git.simonis.lol/projects/casino/pulls/35
Reviewed-by: We ball <jan@kjan.email>
2025-02-19 08:44:56 +00:00
aa39a42df6
docs(navbar): update navbar text to German language 2025-02-19 09:40:14 +01:00
455ebdbe91
ci: add caching for Gradle build outputs 2025-02-19 09:36:57 +01:00
204b205b44
ci: add caching for Gradle dependencies in CI workflow 2025-02-19 09:26:38 +01:00
3cd1f63dba Merge pull request 'chore(docker): remove version from docker-compose file' (!33) from task/adjust-docker-compose into main
Reviewed-on: https://git.simonis.lol/projects/casino/pulls/33
Reviewed-by: We ball <jan@kjan.email>
2025-02-19 08:22:48 +00:00
1c5f5524fa
ci: remove caching step from CI workflow 2025-02-19 09:20:43 +01:00
0868ef0776
chore(docker): remove version from docker-compose file 2025-02-19 09:07:08 +01:00
Huy
695a1073a9 Merge pull request 'fix: Remove material css' (!31) from chore/remove-material-styles into main
Reviewed-on: https://git.simonis.lol/projects/casino/pulls/31
2025-02-19 07:25:08 +00:00
Phan Huy Tran
47ca56deb4 fix: Remove material css 2025-02-13 13:19:12 +01:00
Hop In, I Have Puppies AND WiFi
0878ed46db Merge pull request 'feat(landing): add landing component (CAS-8)' (!10) from task/landing-page into main
Reviewed-on: https://git.simonis.lol/projects/casino/pulls/10
Reviewed-by: Huy <ptran@noreply@simonis.lol>
Reviewed-by: jank1619 <jan@kjan.email>
2025-02-13 12:09:13 +00:00
04626e92d1
refactor: remove unused navbar component import 2025-02-13 13:02:54 +01:00
9fe473302c
refactor(landing): restructure landing page components and templates 2025-02-13 12:49:22 +01:00
8514d6d73f
style: Update footer and navbar HTML structure and classes 2025-02-13 12:49:22 +01:00
84de8e0c86
style(landing-page): update class names for consistency 2025-02-13 12:49:22 +01:00
b570e8e9ab
style: Fix formatting and add missing newlines in HTML and CSS 2025-02-13 12:49:22 +01:00
8e986727ec
feat(landing-page): add welcome bonus and game carousel 2025-02-13 12:49:20 +01:00
b2f4d9d0d8
feat: add navbar component to multiple pages 2025-02-13 12:48:59 +01:00
e5bd173be9
feat(navbar): implement login/logout buttons based on state 2025-02-13 12:48:59 +01:00
325bc118ee
feat: add footer component and FontAwesome integration 2025-02-13 12:48:59 +01:00
29305a75b1
chore: remove unused dependencies from package.json 2025-02-13 12:48:59 +01:00
c679952ef9
chore(navbar): remove unused SCSS file and reference 2025-02-13 12:48:59 +01:00
70044fc3c7
style(navbar): update navbar colors to use variables 2025-02-13 12:48:58 +01:00
21fa5a21e2
chore: remove unused tailwind configuration file 2025-02-13 12:48:58 +01:00
61add61113
feat: add navbar component to the application 2025-02-13 12:48:58 +01:00
e6f054f10e
refactor: rename landing component and remove unused files 2025-02-13 12:48:58 +01:00
ea26f5dd80
feat(landing): add landing component with animations and services 2025-02-13 12:48:58 +01:00
ff0e03003a
style(landing): remove instant withdrawals section and update styles 2025-02-13 12:48:58 +01:00
7106ebd0ef
style(animated-button): add cursor-pointer to button class 2025-02-13 12:48:57 +01:00
5e84afba90
refactor: remove unused imports and clear image URLs 2025-02-13 12:48:57 +01:00
eede85295e
refactor: improve code structure and add change detection 2025-02-13 12:48:57 +01:00
5c34014841
feat: implement animated buttons and winner ticker component 2025-02-13 12:48:57 +01:00
313080ceac
feat(landing): add landing component with animations and services 2025-02-13 12:48:57 +01:00
Huy
77b7f822d8 Merge pull request 'chore: remove unused css' (!30) from chore/remove-unused into main
Reviewed-on: https://git.simonis.lol/projects/casino/pulls/30
Reviewed-by: jank1619 <jan@kjan.email>
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
2025-02-13 11:47:31 +00:00
c8c62b91f3 Merge branch 'main' into chore/remove-unused 2025-02-13 11:41:17 +00:00
cfd1d01f6f Merge pull request 'Add checkstyle linter for java' (!27) from ci/java-pipes into main
Reviewed-on: https://git.simonis.lol/projects/casino/pulls/27
2025-02-13 11:39:30 +00:00
Phan Huy Tran
7e5424d0cb chore: remove unused css 2025-02-13 12:33:30 +01:00
dc07ad5b0d
ci: update Gradle check to use checkstyleMain 2025-02-13 12:26:52 +01:00
96bd5ac704
chore: fix file paths and add missing newlines 2025-02-13 12:26:43 +01:00
Huy
9cafe178a4 Merge pull request 'feat: Display deposit form as modal (CAS-34)' (!28) from feat/payment-modal into main
Reviewed-on: https://git.simonis.lol/projects/casino/pulls/28
Reviewed-by: jank1619 <jan@kjan.email>
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
2025-02-13 11:26:22 +00:00
5e24e3d020
style(checkstyle): remove unused SuppressionFilter module 2025-02-13 12:18:13 +01:00
4a9c769bbc
build: add checkstyle configuration file path 2025-02-13 12:14:52 +01:00
Phan Huy Tran
b0c43e0b7c style: Run prettier 2025-02-13 12:12:05 +01:00
Phan Huy Tran
a0751ae3c6 style: Run linters 2025-02-13 12:10:07 +01:00
d117f5912a
build: update Checkstyle container image version 2025-02-13 12:00:38 +01:00
966d99f43c
build: add Java 22 setup to CI workflow 2025-02-13 11:57:00 +01:00
Phan Huy Tran
3fc290ecd1 feat: Add basic styling 2025-02-13 11:56:14 +01:00
193f444f4f
build: add checkstyle plugin and update reports settings 2025-02-13 11:49:42 +01:00
c49f7ca55d
ci: update working directory for backend steps 2025-02-13 11:45:40 +01:00
7b82445230
ci: change CI runner to vps-4 for checkstyle job 2025-02-13 11:42:05 +01:00
582f8b1a6c
ci: add step to navigate to backend directory 2025-02-13 11:41:18 +01:00
4a4bbbc683
ci: add checkstyle job to CI workflow 2025-02-13 11:40:34 +01:00
Phan Huy Tran
55502b771d fix: Remove deposit route 2025-02-13 11:35:54 +01:00
Phan Huy Tran
c7d62bb4e3 feat: payment modal 2025-02-13 11:35:30 +01:00
702e54b5da Merge pull request 'feat: add deposit with stripe (CAS-28)' (!23) from feat/stripe into main
Reviewed-on: https://git.simonis.lol/projects/casino/pulls/23
Reviewed-by: Huy <ptran@noreply@simonis.lol>
Reviewed-by: jank1619 <jan@kjan.email>
2025-02-13 10:12:50 +00:00
b7a60f0c53
style: run eslint 2025-02-13 11:11:08 +01:00
13dfc3cf5b Merge branch 'main' into feat/stripe 2025-02-13 10:09:52 +00:00
e2927abe60
refactor: add lombok attributes to dto 2025-02-13 11:07:59 +01:00
1f49bc6a3d
refactor: add dynamic host to success url 2025-02-13 11:05:23 +01:00
Huy
b71858c79d Merge pull request 'style: Configure and run eslint' (!26) from style/configure-eslint into main
Reviewed-on: https://git.simonis.lol/projects/casino/pulls/26
Reviewed-by: jank1619 <jan@kjan.email>
2025-02-13 10:04:53 +00:00
43db82da8f
ci: add eslint job to CI workflow 2025-02-13 11:00:53 +01:00
Phan Huy Tran
3bea232dfb style: Run prettier 2025-02-13 10:58:29 +01:00
Phan Huy Tran
372449cd04 style: Configure and run eslint 2025-02-13 10:58:13 +01:00
7b020aee75
refactor: run prettier 2025-02-13 10:42:53 +01:00
cd6ace28f4
style: style form 2025-02-13 10:42:39 +01:00
da01e272d7
refactor: outsource stripe key to environment 2025-02-13 10:38:32 +01:00
Huy
19ab3933d6 Merge pull request 'refactor: Redirect to orginal route after login, restructure project files' (!24) from refactor/auth-guard into main
Reviewed-on: https://git.simonis.lol/projects/casino/pulls/24
Reviewed-by: jank1619 <jan@kjan.email>
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
2025-02-13 09:36:55 +00:00
Phan Huy Tran
704cc22858 refactor: Redirect to orginal route after login, restructure project files 2025-02-13 09:35:34 +00:00
29d3c53b19 Merge pull request 'build: update release configuration for plugins and rules' (!25) from update-release-config into main
Reviewed-on: https://git.simonis.lol/projects/casino/pulls/25
2025-02-13 09:34:54 +00:00
c4252c97e7
refactor: refactor application.properties 2025-02-13 10:33:06 +01:00
9a63954e4b
build: update release configuration for plugins and rules 2025-02-13 10:30:46 +01:00
55cd5fefed
prettier 2025-02-13 10:29:22 +01:00
6ba4937538
feat: add form validation 2025-02-13 10:29:08 +01:00
1d0162d250
feat: make stripe functional 2025-02-13 10:23:02 +01:00
177dd78592
wip 2025-02-13 09:42:42 +01:00
Huy
0ef2f58379 Merge pull request 'feat: Convert login button to hompage button when user is authenticated (CAS-33)' (!22) from feat/login-to-homepage-button into main
Reviewed-on: https://git.simonis.lol/projects/casino/pulls/22
Reviewed-by: jank1619 <jan@kjan.email>
Reviewed-by: Hop In, I Have Puppies AND WiFi <jleibl@noreply@simonis.lol>
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
2025-02-12 11:35:01 +00:00
Phan Huy Tran
ab3bc5587e refactor: remove oninit 2025-02-12 12:33:52 +01:00
Phan Huy Tran
22086a88fa style: Run prettier 2025-02-12 12:21:45 +01:00
Phan Huy Tran
3a2b92b3ff feat: Convert login button to hompage button when user is authenticated 2025-02-12 12:19:31 +01:00
9289a72acf Merge pull request 'style: Update CSS formatting and add theme variables' (!20) from task/add-theming-styles into main
Reviewed-on: https://git.simonis.lol/projects/casino/pulls/20
Reviewed-by: jank1619 <jan@kjan.email>
Reviewed-by: Huy <ptran@noreply@simonis.lol>
2025-02-12 10:48:02 +00:00
aea34424b8
style: Update CSS syntax and fix color case sensitivity 2025-02-12 11:46:52 +01:00
21bdbab1cf
style: Update CSS formatting and add theme variables 2025-02-12 11:45:12 +01:00
9d9399056f Merge pull request 'ci: add CI workflow configuration file' (!15) from ci/pipelines into main
Reviewed-on: https://git.simonis.lol/projects/casino/pulls/15
Reviewed-by: Huy <ptran@noreply@simonis.lol>
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
2025-02-12 10:41:43 +00:00
2d955eed1a ci: remove caching from CI workflow configuration 2025-02-12 10:38:17 +00:00
dc1482c320 ci: add prettier job to CI workflow 2025-02-12 10:38:17 +00:00
343704959b ci: update runner from remote to vps-4 in workflows 2025-02-12 10:38:17 +00:00
ac3c84106d ci: improve CI workflow with step names for clarity 2025-02-12 10:38:17 +00:00
3e1e42fa31 ci: update CI script for better readability 2025-02-12 10:38:17 +00:00
f51d32ba5f ci: add cd command to frontend in CI workflow 2025-02-12 10:38:17 +00:00
cb80b041a6 ci: update CI workflow to use new container image 2025-02-12 10:38:17 +00:00
d1aa0222a1 ci: change runner to remote in CI configuration 2025-02-12 10:38:17 +00:00
e270b8abe5 ci: add CI workflow configuration file 2025-02-12 10:38:17 +00:00
9dd14cd944 Merge pull request 'chore(deployment): add deployment for backend' (!16) from deployment/backend into main
Reviewed-on: https://git.simonis.lol/projects/casino/pulls/16
Reviewed-by: jank1619 <jan@kjan.email>
Reviewed-by: Huy <ptran@noreply@simonis.lol>
2025-02-12 10:37:25 +00:00
Huy
6072e81299 Merge pull request 'feat: Add proper redirects to login and logout buttons (CAS-1)' (!17) from feature/login-logout-redirect into main
Reviewed-on: https://git.simonis.lol/projects/casino/pulls/17
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
Reviewed-by: jank1619 <jan@kjan.email>
2025-02-12 10:37:21 +00:00
6a823bf02e Merge branch 'main' into deployment/backend 2025-02-12 10:37:15 +00:00
0836830df2
refactor: Add default value to db host 2025-02-12 11:35:57 +01:00
Phan Huy Tran
c64152b99f style: format code with prettier 2025-02-12 11:16:29 +01:00
a958d9f6ac
refactor: Whoops 2025-02-12 11:15:33 +01:00
Phan Huy Tran
fab3680c07 feat: Add proper redirects to login and logout button 2025-02-12 11:15:27 +01:00
9778a1e6d5
refactor: Refactor dockerfile 2025-02-12 11:15:00 +01:00
3113eee414
chore(deployment): add deployment for backend 2025-02-12 11:13:24 +01:00
Huy
0870f5a73d Merge pull request 'feat: Implement Login and Logout functionality, protect authenticated routes' (!12) from feature/oauth into main
Reviewed-on: https://git.simonis.lol/projects/casino/pulls/12
Reviewed-by: lziemke <lea.z4@schule.bremen.de>
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
2025-02-12 10:00:53 +00:00
Phan Huy Tran
13769e0df5 fix: Translate login to german 2025-02-12 11:00:29 +01:00
Phan Huy Tran
4b9574ac96 fix: fix routing 2025-02-12 11:00:29 +01:00
Phan Huy Tran
f6bcc1be11 Prettier and rebase 2025-02-12 11:00:29 +01:00
Phan Huy Tran
c3f9ba7bca Add nested route config for authentication 2025-02-12 11:00:29 +01:00
Phan Huy Tran
dc993b2879 Add alerts 2025-02-12 11:00:29 +01:00
Phan Huy Tran
53f21a220f Add logout and login functionality 2025-02-12 11:00:29 +01:00
Phan Huy Tran
f10de66c12 Refactor auth guard 2025-02-12 11:00:29 +01:00
Phan Huy Tran
fa30fc3305 Protect homepage with keycloak 2025-02-12 11:00:29 +01:00
315 changed files with 18723 additions and 3032 deletions

20
.gitea/labeler.yml Normal file
View file

@ -0,0 +1,20 @@
frontend:
- changed-files:
- any-glob-to-any-file:
- "frontend/**"
backend:
- changed-files:
- any-glob-to-any-file:
- "backend/**"
ci:
- changed-files:
- any-glob-to-any-file:
- ".gitea/**"
docs:
- changed-files:
- any-glob-to-any-file:
- "projektdokumentation/**"

19
.gitea/size.yml Normal file
View file

@ -0,0 +1,19 @@
buckets:
- maxSize: 80
label: size/small
comment: null
- maxSize: 200
label: size/medium
comment: null
- maxSize: 2000
label: size/large
comment: >
👮‍♀️⚠️ This is a friendly reminder that the diff size of this PR is bigger than
200 lines we aim for. Please consider splitting this PR into more digestible pieces!
- maxSize: Infinity
label: size/huge
comment: >
👮‍♀️🛑 This PR's diff size is quite huge.
Hopefully you know what you're doing.
If you did not commit a lot of autogenerated files intentionally,
there are few good reasons for this.

295
.gitea/workflows/ci.yml Normal file
View file

@ -0,0 +1,295 @@
name: CI
on:
pull_request:
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
jobs:
changed_files:
name: Get Changed Files
runs-on: ubuntu-latest
outputs:
backend: ${{ steps.filter.outputs.backend }}
frontend: ${{ steps.filter.outputs.frontend }}
workflow: ${{ steps.filter.outputs.workflow }}
steps:
- uses: actions/checkout@v4
- name: Check for file changes
uses: dorny/paths-filter@v3
id: filter
with:
filters: |
backend:
- 'backend/**'
frontend:
- 'frontend/**'
workflow:
- '.gitea/workflows/**'
test-backend:
runs-on: ubuntu-latest
name: "Backend Tests"
needs: changed_files
if: ${{ needs.changed_files.outputs.backend == 'true' || needs.changed_files.outputs.workflow == 'true' }}
container:
image: "cimg/openjdk:23.0-node"
steps:
- name: "Checkout"
uses: actions/checkout@v4
- name: "Run tests"
working-directory: ./backend
run: |
./gradlew test
- name: "Cache checkstyle results"
uses: actions/upload-artifact@v4
with:
name: checkstyle-results
path: backend/build/reports/checkstyle
- name: "Stop Gradle"
working-directory: ./backend
run: ./gradlew --stop
checkstyle:
runs-on: ubuntu-latest
name: "Checkstyle Main"
needs: changed_files
if: ${{ needs.changed_files.outputs.backend == 'true' || needs.changed_files.outputs.workflow == 'true' }}
container:
image: "cimg/openjdk:23.0-node"
steps:
- name: "Checkout"
uses: actions/checkout@v4
- name: "Cache Gradle dependencies"
uses: https://github.com/actions/cache@v4
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
backend/build/reports/checkstyle
key: gradle-${{ runner.os }}-${{ hashFiles('backend/**/*.java', 'backend/config/checkstyle/checkstyle.xml') }}
restore-keys: |
gradle-${{ runner.os }}-
- name: "Check cache for checkstyle reports"
id: check-cache
run: |
if [ -d "backend/build/reports/checkstyle" ] && [ -f "backend/build/reports/checkstyle/main.xml" ]; then
echo "Cache hit! Using cached checkstyle results"
echo "cache-hit=true" >> $GITHUB_OUTPUT
else
echo "Cache miss! Running checkstyle check"
echo "cache-hit=false" >> $GITHUB_OUTPUT
fi
- name: "Run checkstyle"
if: steps.check-cache.outputs.cache-hit != 'true'
working-directory: ./backend
run: |
gradle checkstyleMain
- name: "Cache checkstyle results"
if: steps.check-cache.outputs.cache-hit != 'true'
uses: actions/upload-artifact@v4
with:
name: checkstyle-results
path: backend/build/reports/checkstyle
- name: "Stop Gradle"
if: steps.check-cache.outputs.cache-hit != 'true'
working-directory: ./backend
run: gradle --stop
validate-docker-frontend:
runs-on: ubuntu-latest
name: Docker frontend validation
needs: changed_files
if: ${{ needs.changed_files.outputs.frontend == 'true' || needs.changed_files.outputs.workflow == 'true' }}
container:
image: catthehacker/ubuntu:act-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Build
uses: docker/build-push-action@v6
with:
context: frontend/
file: frontend/.docker/Dockerfile
push: false
validate-docker-backend:
runs-on: ubuntu-latest
name: Docker backend validation
needs: changed_files
if: ${{ needs.changed_files.outputs.backend == 'true' || needs.changed_files.outputs.workflow == 'true' }}
container:
image: catthehacker/ubuntu:act-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Build
uses: docker/build-push-action@v6
with:
context: backend/
file: backend/.docker/Dockerfile
push: false
eslint:
runs-on: docker
container:
image: git.kjan.de/actions/runner-bun:latest
name: eslint
needs: changed_files
if: ${{ needs.changed_files.outputs.frontend == 'true' || needs.changed_files.outputs.workflow == 'true' }}
steps:
- name: Checkout Code
uses: actions/checkout@v4
- uses: actions/cache@v4
working-directory: ./frontend
with:
path: |
frontend/node_modules/
key: ${{ runner.os }}-bun-
restore-keys: |
${{ runner.os }}-bun-
- name: Install dependencies
run: |
cd frontend
bun install
- name: Run Eslint
run: |
cd frontend
bun run lint
playwright:
runs-on: ubuntu-latest
name: Playwright
needs: changed_files
container:
image: git.kjan.de/actions/runner-casino-playwright:latest
if: ${{ needs.changed_files.outputs.frontend == 'true' || needs.changed_files.outputs.workflow == 'true' }}
steps:
- name: Checkout Code
uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: "temurin" # See 'Supported distributions' for available options
java-version: "23"
- name: Install bun
uses: oven-sh/setup-bun@v2
- uses: actions/cache@v4
working-directory: ./frontend
with:
path: |
frontend/node_modules/
key: ${{ runner.os }}-bun-
restore-keys: |
${{ runner.os }}-bun-
- run: bun add -g concurrently
- name: Install dependencies
run: |
cd frontend
bun install
- uses: actions/setup-node@v4
with:
node-version: 22.12
working-directory: ./frontend
- name: Run Playwright tests
env:
CI: true
SPRING_PROFILES_ACTIVE: inmemory
working-directory: ./frontend
run: bash -c "source $HOME/.cargo/env && bunx playwright test"
oxlint:
runs-on: docker
name: oxlint
needs: changed_files
if: ${{ needs.changed_files.outputs.frontend == 'true' || needs.changed_files.outputs.workflow == 'true' }}
container:
image: git.kjan.de/actions/runner-bun:latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- uses: actions/cache@v4
working-directory: ./frontend
with:
path: |
frontend/node_modules/
key: ${{ runner.os }}-bun-
restore-keys: |
${{ runner.os }}-bun-
- name: Install dependencies
run: |
cd frontend
bun install
- name: Run oxlint
run: |
cd frontend
bun run oxlint
prettier:
runs-on: docker
name: prettier
needs: changed_files
if: ${{ needs.changed_files.outputs.frontend == 'true' || needs.changed_files.outputs.workflow == 'true' }}
container:
image: git.kjan.de/actions/runner-bun:latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- uses: actions/cache@v4
working-directory: ./frontend
with:
path: |
frontend/node_modules/
key: ${{ runner.os }}-bun-
restore-keys: |
${{ runner.os }}-bun-
- name: Install dependencies
run: |
cd frontend
bun install
- name: Run prettier
run: |
cd frontend
bun run format:check
test-build:
runs-on: docker
name: test-build
needs: changed_files
if: ${{ needs.changed_files.outputs.frontend == 'true' || needs.changed_files.outputs.workflow == 'true' }}
container:
image: git.kjan.de/actions/runner-bun:latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- uses: actions/cache@v4
working-directory: ./frontend
with:
path: |
frontend/node_modules/
key: ${{ runner.os }}-bun-
restore-keys: |
${{ runner.os }}-bun-
- uses: actions/cache@v4
working-directory: ./frontend
with:
path: |
frontend/dist/
key: ${{ runner.os }}-dist-
restore-keys: |
${{ runner.os }}-dist-
- name: Install dependencies
run: |
cd frontend
bun install
- name: Test build
run: |
cd frontend
bun run build

View file

@ -0,0 +1,124 @@
name: Claude Gitea PR Interaction via Comment
on:
issue_comment:
types: [created]
jobs:
claude-interact-on-comment:
runs-on: ubuntu-latest
if: |
github.event.issue.pull_request &&
contains(github.event.comment.body, '@Claude')
steps:
- name: Check out code
uses: actions/checkout@v4
with:
fetch-depth: 0 # Required for git diff against main/master
- name: Set Tea Version
id: tea_version
run: echo "version=0.9.2" >> $GITHUB_OUTPUT # Check for the latest stable version
- name: Download Tea CLI
run: |
TEA_VERSION=$(echo "${{ steps.tea_version.outputs.version }}")
wget "https://gitea.com/gitea/tea/releases/download/v${TEA_VERSION}/tea-${TEA_VERSION}-linux-amd64" -O tea
chmod +x tea
sudo mv tea /usr/local/bin/tea
- name: Verify Tea Installation
run: tea --version
- name: Add Gitea Login
env:
GITEA_URL: ${{ secrets._GITEA_URL }}
GITEA_TOKEN: ${{ secrets._GITEA_TOKEN }}
run: |
if [ -z "$GITEA_URL" ]; then
echo "Error: GITEA_URL secret is not set."
exit 1
fi
if [ -z "$GITEA_TOKEN" ]; then
echo "Error: GITEA_TOKEN secret is not set."
exit 1
fi
INSECURE_FLAG=""
if [[ "${GITEA_URL}" == http://* ]]; then
INSECURE_FLAG="--insecure"
fi
tea login add --name mygitea --url "$GITEA_URL" --token "$GITEA_TOKEN" $INSECURE_FLAG
- name: Install bun
uses: oven-sh/setup-bun@v2
- name: Install claude-code
run: bun i -g @anthropic-ai/claude-code
- name: Claude Process PR Comment
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
PR_NUMBER: ${{ github.event.issue.number }}
COMMENT_BODY: ${{ github.event.comment.body }}
COMMENT_AUTHOR: ${{ github.event.comment.user.login }}
GITEA_URL: ${{ secrets._GITEA_URL }}
run: |
claude --allowedTools "Bash(tea:*)" --allowedTools "Bash(git:*)" --allowedTools "Read" --allowedTools "Grep" --allowedTools "WebFetch" --allowedTools "Glob" --allowedTools "LS" -p "You are an AI assistant integrated with Gitea (at ${GITEA_URL}) via the 'tea' CLI.
You have been invoked because user '${COMMENT_AUTHOR}' left the following comment on Pull Request #${PR_NUMBER}:
---
${COMMENT_BODY}
---
Your primary task is to:
1. Carefully understand the user's request within their comment.
2. Use the 'tea' CLI to perform the requested action(s) on Pull Request #${PR_NUMBER}.
3. If the request is to review the PR, fetch the diff against the PR's base branch (e.g., 'git fetch origin main && git diff origin/main...HEAD' or similar; adapt branch name if necessary, or use 'tea pr diff ${PR_NUMBER}') and provide constructive feedback.
4. For other actions, translate the user's intent into the appropriate 'tea' command.
**How to Post Reviews and Other Feedback:**
- When you provide a review, post it as a comment using:
\`tea pr comment ${PR_NUMBER} \"Claude's Review:\n[Your detailed review, mentioning files and line numbers.]\"\`
- For other informational responses or clarifications, also use \`tea pr comment ...\`.
**Critical: Handling Approval, Rejection, or Merge Requests:**
Pull Request approval, rejection, and merging are critical actions and should not be used to 'cheat' the review process. You cannot verify Gitea user permissions.
- If a user comments asking you to directly approve (e.g., '@claude approve this'), merge, or reject a PR:
1. **Do NOT blindly execute these commands.**
2. **Approval/Merge:**
- State in a comment (using \`tea pr comment ...\`) that direct approval/merge requests via you are typically for convenience after a proper human review process has been implicitly completed or if the requester is a designated maintainer explicitly overriding.
- If the PR has not been reviewed by you yet, and the comment implies a review is also needed, perform the review FIRST and post it.
- You should only consider proceeding with a \`tea pr approve ${PR_NUMBER}\` or \`tea pr merge ${PR_NUMBER}\` command if:
a. The comment explicitly states that all necessary human reviews are complete and this is just a formal step by a trusted user.
b. OR, your own comprehensive review found no critical issues and the request seems appropriate in context.
- If in doubt, default to posting your review (if applicable) and stating that a maintainer should perform the final approval/merge. Your goal is to assist, not to bypass established review procedures.
3. **Rejection/Requesting Changes:**
- If asked to reject or request changes, you should typically base this on your own review of the PR's changes.
- First, perform a review if you haven't already.
- Then, you can use \`tea pr reject ${PR_NUMBER} \"Claude's Review Summary: [summary of reasons for rejection/changes based on your review]\"\`. Ensure your detailed review is also available as a comment.
Examples of interpreting comments and generating appropriate \`tea\` commands (keeping the above critical guidelines in mind):
- User: '@claude LGTM, approve this' -> You: First, consider if a review is implied or done. If so, and you agree, you might generate \`tea pr approve ${PR_NUMBER}\`. If not, you might generate \`tea pr comment ${PR_NUMBER} \"Claude: I can approve this if the standard review process is complete. Have maintainers reviewed this?\"\` or perform your own review and then comment.
- User: '@claude please review this PR' -> You: Get diffs, review, then generate \`tea pr comment ${PR_NUMBER} \"Claude's Review: ...\"\`.
- User: '@claude close this PR' -> You: Generate \`tea pr close ${PR_NUMBER}\` and optionally \`tea pr comment ${PR_NUMBER} \"Claude: PR #${PR_NUMBER} has been closed as requested.\"\`.
- User: '@claude add label enhancement' -> You: Generate \`tea pr label ${PR_NUMBER} --add enhancement\` and \`tea pr comment ${PR_NUMBER} \"Claude: Label 'enhancement' added to PR #${PR_NUMBER}.\"\`
- User: '@claude what are the labels on this PR?' -> You: Generate \`tea pr label ${PR_NUMBER} --list\` (this command outputs to stdout, which is fine for your internal use). Then, to inform the user, you generate: \`tea pr comment ${PR_NUMBER} \"Claude: The current labels are: [output from tea pr label --list].\"\` (You'll need to capture the output of the first command to formulate the second if the tool allows such chaining, otherwise, focus on commands that directly achieve the user's goal or report information). *Self-correction: The Bash tool can capture output. So, if you need to run a \`tea\` command to get information for yourself, do so, then use that information to formulate your \`tea pr comment ...\` to the user.*
**IMPORTANT GUIDELINES FOR YOUR OPERATION AND RESPONSE GENERATION:**
- **Your SOLE METHOD of communicating back to the user on Gitea is by generating a \`tea pr comment ${PR_NUMBER} \"...\"\` command.** This is non-negotiable. Do not output plain text messages intended for the user. Your response *is* the command.
- **Use the 'tea' CLI for ALL Gitea interactions.** This includes fetching PR details, diffs, labels, status, and posting comments, reviews, approvals, etc.
- **For PR reviews, ALWAYS analyze the diff.** Use \`tea pr diff ${PR_NUMBER}\` or git commands to get the diff. Make sure to mention specific files and line numbers in your review comment.
- **Be precise with 'tea' commands.** If a user's request is ambiguous, DO NOT GUESS. Instead, generate a \`tea pr comment ${PR_NUMBER} \"Claude Asks: [Your clarifying question]\"\` command to ask for more details.
- **Execute only necessary 'tea' command(s).** If a user asks for a review, your primary output should be the \`tea pr comment ...\` command containing the review. If they ask to add a label, your output should be \`tea pr label ...\` and then a confirmation \`tea pr comment ...\`.
- **Ensure reviews are professional, constructive, and helpful.**
- **If you need to perform an action AND then report on it, generate both \`tea\` commands sequentially.** For example, to add a label and confirm:
\`tea pr label ${PR_NUMBER} --add bug\`
\`tea pr comment ${PR_NUMBER} "Claude: I've added the 'bug' label."\`
The GitHub Actions workflow will execute these commands one after another.
- **If a user's request cannot be fulfilled using the 'tea' CLI or the allowed tools, explain this limitation by generating a \`tea pr comment ...\` command.** For example: \`tea pr comment ${PR_NUMBER} "Claude: I cannot perform that action as it's outside my current capabilities or allowed tools."\`
- **Think step-by-step.** 1. Understand request. 2. Identify necessary `tea` command(s). 3. If it's a review, get the diff. 4. Formulate the `tea` command(s) as your direct output.
**Final Check before outputting:**
"Is my entire response that's intended for the Gitea user wrapped in a \`tea pr comment ${PR_NUMBER} '...' \` command (or another appropriate \`tea\` command if it's an action like \`tea pr label ...\`)? If not, I must fix it."
You are now ready to process the comment. Remember, your output will be executed in a shell. Generate only the \`tea\` command(s) needed.
"

View file

@ -0,0 +1,16 @@
name: Claude PR Review
on:
pull_request:
types: [opened, synchronize] # Runs on new PRs and updates
jobs:
claude-code:
runs-on: ubuntu-latest
steps:
- name: Claude
uses: https://git.kjan.de/actions/claude-pr-review@v1.0.4
with:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
GITEA_URL: ${{ secrets._GITEA_URL }}
GITEA_CLAUDE_TOKEN: ${{ secrets._GITEA_TOKEN }}

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

@ -0,0 +1,29 @@
name: Build docs
on:
pull_request:
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: projektdokumentation
FILE: Projektdokumentation.tex
steps:
- name: Checkout
uses: actions/checkout@v4
- name: LaTeX compile
working-directory: ${{ env.DIR }}
run: latexmk -pdf ${{ env.FILE }}
- name: Upload artifacts
uses: https://git.kjan.de/actions/upload-artifact@v3 # Do not upgrade
with:
name: Doku
path: projektdokumentation/Projektdokumentation.pdf

View file

@ -0,0 +1,14 @@
name: "Pull Request Labeler"
on:
pull_request_target:
jobs:
labeler:
permissions:
contents: read
pull-requests: write
runs-on: ubuntu-latest
steps:
- uses: actions/labeler@v5
with:
configuration-path: ".gitea/labeler.yml"

View file

@ -3,6 +3,11 @@ on:
push:
branches:
- "main"
paths:
- "backend/**"
- "frontend/**"
- ".gitea/workflows/release.yml"
- "release.config.cjs"
env:
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
@ -12,11 +17,11 @@ permissions:
jobs:
release:
runs-on: ubuntu-latest
name: Release
runs-on: remote
permissions:
contents: write
issues: write
issues: write
pull-requests: write
id-token: write
steps:
@ -24,4 +29,66 @@ jobs:
uses: https://git.kjan.de/actions/semantic-release@main
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
build-backend-image:
needs: release
runs-on: ubuntu-latest
name: Build Backend Image
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0 # Ensure full history is available
- name: Extract tag
run: |
TAG=$(git describe --tags --abbrev=0)
echo "TAG=$TAG" >> $GITHUB_ENV
- name: Checkout
uses: actions/checkout@v4
- name: Login
uses: docker/login-action@v3
with:
registry: git.kjan.de
username: ${{ secrets.DOCKER_USER }}
password: ${{ secrets.DOCKER_PASS }}
- name: Build and push
uses: docker/build-push-action@v6
with:
context: backend/
file: backend/.docker/Dockerfile
push: true
tags: |
git.kjan.de/szut/casino-backend:latest
git.kjan.de/szut/casino-backend:${{ env.TAG }}
build-frontend-image:
needs: release
runs-on: ubuntu-latest
name: Build Frontend Image
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0 # Ensure full history is available
- name: Extract tag
run: |
TAG=$(git describe --tags --abbrev=0)
echo "TAG=$TAG" >> $GITHUB_ENV
- name: Checkout
uses: actions/checkout@v4
- name: Login
uses: docker/login-action@v3
with:
registry: git.kjan.de
username: ${{ secrets.DOCKER_USER }}
password: ${{ secrets.DOCKER_PASS }}
- name: Build and push
uses: docker/build-push-action@v6
with:
context: frontend/
file: frontend/.docker/Dockerfile
push: true
tags: |
git.kjan.de/szut/casino-frontend:latest
git.kjan.de/szut/casino-frontend:${{ env.TAG }}

17
.gitea/workflows/size.yml Normal file
View file

@ -0,0 +1,17 @@
name: Label PRs based on size
on: [pull_request]
jobs:
add_pr_size_label:
runs-on: ubuntu-latest
name: Check PR size
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Label and comment PR
uses: boschresearch/pr-size-labeler@v5.0.1
with:
bucketConfigFile: ".gitea/size.yml"

View file

@ -0,0 +1,15 @@
name: "Close stale issues and PRs"
on:
workflow_dispatch:
schedule:
- cron: "@hourly"
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v9
with:
stale-pr-message: "Will be closed in x days bc yo mom is a bitch. im not telling you when it will be closed fuckface"
days-before-pr-stale: 2
days-before-pr-close: 3

2
.gitignore vendored
View file

@ -1,3 +1,3 @@
.idea
.DS_Store
.vscode
.vscode

41
CLAUDE.md Normal file
View file

@ -0,0 +1,41 @@
# Casino Gaming Platform - Claude Assistant Guide
## Build Commands
### Frontend
- Build: `bun run build` or `bunx @angular/cli build`
- Start dev server: `bun run start` or `bunx @angular/cli serve --proxy-config src/proxy.conf.json`
- Format: `bun run format` or `prettier --write "src/**/*.{ts,html,css,scss}"`
### Backend
- Build: `./gradlew build` or `./gradlew clean build`
- Run: `./gradlew bootRun`
- Generate JAR: `./gradlew bootJar`
## Lint/Test Commands
### Frontend
- Lint: `bun run lint` or `ng lint`
- Test all: `bun run test` or `bunx @angular/cli test`
- Test single file: `bunx @angular/cli test --include=path/to/test.spec.ts`
### Backend
- Test all: `./gradlew test`
- Test single class: `./gradlew test --tests "FullyQualifiedClassName"`
- Checkstyle: `./gradlew checkstyleMain checkstyleTest`
## Code Style Guidelines
### Frontend (Angular)
- Use PascalCase for class names with suffixes (Component, Service)
- Use kebab-case for component selectors with "app-" prefix
- File naming: `name.component.ts`, `name.service.ts`
- Import order: Angular → third-party → local
- Use RxJS catchError for HTTP error handling
### Backend (Java)
- Use PascalCase for classes with descriptive suffixes (Controller, Service, Entity)
- Use camelCase for methods and variables
- Domain-driven package organization
- Prefix DTOs with domain and suffix with "Dto"
- Use Spring's global exception handling with custom exceptions

21
LICENSE Normal file
View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2025 Casino Gaming Platform
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

206
README.md
View file

@ -1,34 +1,194 @@
# How to: Semantic Commit Messages
# Casino Gaming Platform
See how a minor change to your commit message style can make you a better programmer.
An online gaming platform offering various casino-style games with virtual currency support. This project features a modern tech stack with Angular frontend, Spring Boot backend, and complete user authentication.
Please refer to our [Style Guide](https://git.kjan.de/SZUT/casino/wiki/Frontend#design-system) for design guidelines and component standards.
## Features
- Multiple casino games: Poker, Blackjack, Slots, Plinko, Liars Dice, and Lootboxes
- User authentication and account management via Keycloak
- Virtual currency deposit system using Stripe payments
- Transaction history tracking
- Responsive modern UI built with Angular and TailwindCSS
## Tech Stack
### Frontend
- Angular 20
- TailwindCSS
- Keycloak integration
- Stripe payment integration
### Backend
- Spring Boot (Java)
- PostgreSQL database
- Keycloak for authentication/authorization
- Stripe API for payment processing
### Infrastructure
- Docker containerization for all services
## Getting Started
### Prerequisites
- [Docker](https://docs.docker.com/get-docker/)
- [Docker Compose](https://docs.docker.com/compose/install/) (included with Docker Desktop for Windows and Mac)
- Java JDK 17+
- Node.js 18+
### Setting Up the Environment
1. Clone the repository
```bash
git clone <repository-url>
cd casino
```
2. Start the Docker services
```bash
cd docker
docker-compose up -d
```
This will start:
- PostgreSQL database
- Keycloak authentication server
### Running the Backend
1. Navigate to the backend directory
```bash
cd backend
```
2. Start the Spring Boot application
```bash
./gradlew bootRun
```
You may optionally install [watchexec](https://github.com/watchexec/watchexec?tab=readme-ov-file) and use this command to autorecompile the backend on file changes:
```bash
watchexec -r -e java ./gradlew :bootRun
```
The backend will be available at:
- API endpoint: <http://localhost:8080>
- Swagger documentation: <http://localhost:8080/swagger>
### Running the Frontend
1. Navigate to the frontend directory
```bash
cd frontend
```
2. Install dependencies
```bash
npm install
```
3. Start the development server
```bash
npm run dev
```
The frontend will be available at <http://localhost:4200>
### Local Stripe integration
1. Install the Stripe CLI
<https://stripe.com/docs/stripe-cli>
2. Login to the casino stripe account
```
stripe login --api-key <casino-stripe-secret-key>
```
3. Start webhook forwarding
```
stripe listen --forward-to localhost:8080/webhook
```
## Database Management
### Postgres Management
#### Database cleanup (if needed)
```bash
cd docker
docker-compose down
docker volume rm local_lf8_starter_postgres_data
docker-compose up -d
```
#### Setting up IntelliJ Database View
1. Run the Docker container with PostgreSQL database
2. Open `application.properties` in the resources folder and copy the database URL
3. Open the Database tab in IntelliJ
4. Click on the database icon with key in the Database toolbar
5. Click the plus sign and select "Datasource from URL"
6. Paste the DB URL and select PostgreSQL driver, confirm with OK
7. Enter username `lf8_starter` and password `secret`
8. In the Schemas tab, uncheck all options and only check `lf8_starter_db` and `public`
## Authentication
The application uses Keycloak for authentication. To get a bearer token for API testing:
1. Open `requests/getBearerToken.http`
2. Click the green arrow next to the request
3. Copy the `access_token` from the response
## Development Guidelines
### Commit Message Format
We follow semantic commit messages to maintain clear project history.
Format: `<type>(<scope>): <subject>`
`<scope>` is optional
Where `<type>` is one of:
## Example
- `feat`: New feature
- `fix`: Bug fix
- `docs`: Documentation changes
- `style`: Formatting, missing semicolons, etc; no code change
- `refactor`: Code refactoring
- `test`: Adding or refactoring tests
- `chore`: Updating build tasks, etc; no production code change
Examples:
```
feat: add hat wobble
^--^ ^------------^
| |
| +-> Summary in present tense.
|
+-------> Type: chore, docs, feat, fix, refactor, style, or test.
feat: add user balance display
fix(auth): resolve token expiration issue
docs: update API documentation
```
More Examples:
- `feat`: (new feature for the user, not a new feature for build script)
- `fix`: (bug fix for the user, not a fix to a build script)
- `docs`: (changes to the documentation)
- `style`: (formatting, missing semi colons, etc; no production code change)
- `refactor`: (refactoring production code, eg. renaming a variable)
- `test`: (adding missing tests, refactoring tests; no production code change)
- `chore`: (updating grunt tasks etc; no production code change)
References:
- https://www.conventionalcommits.org/
- https://seesparkbox.com/foundry/semantic_commit_messages
- http://karma-runner.github.io/1.0/dev/git-commit-msg.html
- [Conventional Commits](https://www.conventionalcommits.org/)
- [Semantic Commit Messages](https://seesparkbox.com/foundry/semantic_commit_messages)
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

View file

@ -0,0 +1,20 @@
FROM gradle:jdk23 AS builder
WORKDIR /app
COPY gradlew build.gradle.kts settings.gradle.kts config ./
COPY gradle gradle
RUN chmod +x gradlew
RUN gradle dependencies
COPY src src
RUN gradle clean build -x test -x checkstyleMain -x checkstyleTest -x compileTestJava
FROM openjdk:23-jdk-slim AS runtime
WORKDIR /app
COPY --from=builder /app/build/libs/*.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]

2
backend/.dockerignore Normal file
View file

@ -0,0 +1,2 @@
.gradle
build

View file

@ -1,59 +1,137 @@
# Starter für das LF08 Projekt
# Casino Gaming Platform - Backend API
## Requirements
* Docker https://docs.docker.com/get-docker/
* Docker compose (bei Windows und Mac schon in Docker enthalten) https://docs.docker.com/compose/install/
A Spring Boot backend application providing REST APIs for a casino gaming platform with multiple games, user management, authentication, and payment processing.
## Endpunkt
```
http://localhost:8080
```
## Swagger
```
http://localhost:8080/swagger
```
## Features
### Games
- **Blackjack** - Classic card game with deck management
- **Coinflip** - Simple heads/tails betting game
- **Dice** - Dice rolling game
- **Slots** - Slot machine with symbols and payouts
- **Lootboxes** - Reward system with configurable prizes
# Postgres
### Terminal öffnen
für alles gilt, im Terminal im Ordner docker/local sein
### User Management
- User registration and authentication
- OAuth2 integration (Google, GitHub)
- Email verification and password reset
- Balance management and transaction history
### Payment System
- Deposit functionality with webhook support
- Transaction tracking and status management
- Balance updates and fund validation
## Tech Stack
- **Java 17** with Spring Boot
- **Spring Security** with JWT authentication
- **Spring Data JPA** with PostgreSQL
- **OAuth2** for social login
- **Email service** for notifications
- **OpenAPI/Swagger** for API documentation
## Build & Run
### Prerequisites
- Java 17+
- Gradle
- Docker & Docker Compose (for PostgreSQL)
### Build Commands
```bash
# Build the application
./gradlew build
# Clean build
./gradlew clean build
# Run the application
./gradlew bootRun
# Generate JAR file
./gradlew bootJar
```
### Testing
```bash
# Run all tests
./gradlew test
# Run specific test class
./gradlew test --tests "FullyQualifiedClassName"
# Run checkstyle
./gradlew checkstyleMain checkstyleTest
```
## API Endpoints
The application runs on `http://localhost:8080`
### API Documentation
- **Swagger UI**: `http://localhost:8080/swagger-ui.html`
- **OpenAPI Spec**: `http://localhost:8080/v3/api-docs`
### Main Endpoints
- `/api/auth/**` - Authentication and user management
- `/api/games/blackjack/**` - Blackjack game operations
- `/api/games/coinflip/**` - Coinflip game operations
- `/api/games/dice/**` - Dice game operations
- `/api/games/slots/**` - Slot machine operations
- `/api/lootboxes/**` - Lootbox management
- `/api/deposits/**` - Payment and deposit handling
- `/api/users/**` - User profile management
- `/api/health` - Health check endpoint
## Database Setup
### PostgreSQL with Docker
```bash
# Start PostgreSQL container
cd docker/local
```
### Postgres starten
```bash
docker compose up
```
Achtung: Der Docker-Container läuft dauerhaft! Wenn er nicht mehr benötigt wird, sollten Sie ihn stoppen.
### Postgres stoppen
```bash
# Stop PostgreSQL container
docker compose down
```
### Postgres Datenbank wipen, z.B. bei Problemen
```bash
# Reset database (if needed)
docker compose down
docker volume rm local_lf8_starter_postgres_data
docker compose up
```
### Intellij-Ansicht für Postgres Datenbank einrichten
```bash
1. Lasse den Docker-Container mit der PostgreSQL-Datenbank laufen
2. im Ordner resources die Datei application.properties öffnen und die URL der Datenbank kopieren
3. rechts im Fenster den Reiter Database öffnen
4. In der Database-Symbolleiste auf das Datenbanksymbol mit dem Schlüssel klicken
5. auf das Pluszeichen klicken
6. Datasource from URL auswählen
7. URL der DB einfügen und PostgreSQL-Treiber auswählen, mit OK bestätigen
8. Username lf8_starter und Passwort secret eintragen (siehe application.properties), mit Apply bestätigen
9. im Reiter Schemas alle Häkchen entfernen und lediglich vor lf8_starter_db und public Häkchen setzen
10. mit Apply und ok bestätigen
```
# Keycloak
### Database Configuration
Database connection settings are configured in `src/main/resources/application.properties`
### Keycloak Token
1. Auf der Projektebene [GetBearerToken.http](../GetBearerToken.http) öffnen.
2. Neben der Request auf den grünen Pfeil drücken
3. Aus dem Reponse das access_token kopieren
### IntelliJ Database Setup
1. Start the PostgreSQL Docker container
2. Open `application.properties` and copy the database URL
3. In IntelliJ, open the Database tab (right panel)
4. Click the database icon with key in the toolbar
5. Click the plus (+) icon
6. Select "Datasource from URL"
7. Paste the database URL and select PostgreSQL driver
8. Enter credentials (username: `lf8_starter`, password: `secret`)
9. In Schemas tab, uncheck all except `lf8_starter_db` and `public`
10. Apply and confirm
## Authentication
The application supports multiple authentication methods:
- JWT-based authentication
- OAuth2 (Google, GitHub)
- Email/password with verification
### Getting Bearer Token
For API testing, use the provided HTTP client file:
1. Open `GetBearerToken.http` at project root
2. Execute the request
3. Copy the `access_token` from the response
4. Use in Authorization header: `Bearer <token>`
## Configuration
Key configuration files:
- `application.properties` - Main application configuration
- `SecurityConfig.java` - Security and CORS settings
- `OpenAPIConfiguration.java` - API documentation setup

View file

@ -1,7 +1,22 @@
plugins {
java
id("org.springframework.boot") version "3.3.3"
id("io.spring.dependency-management") version "1.1.6"
id("org.springframework.boot") version "3.5.0"
id("io.spring.dependency-management") version "1.1.7"
id("checkstyle")
}
checkstyle {
configFile = file("$rootDir/config/checkstyle/checkstyle.xml")
}
tasks.withType<Checkstyle> {
reports {
// Disable HTML report
html.required.set(false)
// Disable XML report
xml.required.set(false)
}
}
group = "de.szut"
@ -9,7 +24,7 @@ version = "0.0.1-SNAPSHOT"
java {
toolchain {
languageVersion = JavaLanguageVersion.of(22)
languageVersion = JavaLanguageVersion.of(23)
}
}
@ -24,6 +39,7 @@ repositories {
}
dependencies {
implementation("com.stripe:stripe-java:29.2.0")
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
implementation("org.springframework.boot:spring-boot-starter-web")
compileOnly("org.projectlombok:lombok")
@ -31,10 +47,15 @@ dependencies {
testImplementation("org.springframework.boot:spring-boot-starter-test")
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
implementation("org.springframework.boot:spring-boot-starter-security")
implementation("org.springframework.boot:spring-boot-starter-oauth2-resource-server:3.3.3")
implementation("org.springframework.boot:spring-boot-starter-oauth2-client:3.3.3")
implementation("org.springframework.boot:spring-boot-starter-oauth2-resource-server:3.5.0")
implementation("org.springframework.boot:spring-boot-starter-oauth2-client:3.5.0")
runtimeOnly("org.postgresql:postgresql")
implementation("org.springdoc:springdoc-openapi-starter-webmvc-ui:2.6.0")
implementation("org.springdoc:springdoc-openapi-starter-webmvc-ui:2.8.9")
implementation("io.jsonwebtoken:jjwt-api:0.12.6")
runtimeOnly("io.jsonwebtoken:jjwt-impl:0.12.6")
runtimeOnly("io.jsonwebtoken:jjwt-jackson:0.12.6")
implementation("org.springframework.boot:spring-boot-starter-mail")
runtimeOnly("com.h2database:h2")
}
tasks.withType<Test> {

View file

@ -0,0 +1,18 @@
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
"-//Puppy Crawl//DTD Check Configuration 1.3//EN"
"https://checkstyle.org/dtds/configuration_1_3.dtd"
>
<module name="Checker">
<property name="severity" value="error"/>
<property name="tabWidth" value="4"/>
<module name="LineLength">
<property name="max" value="500"/>
</module>
<module name="FileTabCharacter">
<property name="eachLine" value="true"/>
</module>
<module name="NewlineAtEndOfFile"/>
</module>

Binary file not shown.

View file

@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.2-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME

10
backend/gradlew vendored
View file

@ -15,6 +15,8 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
#
##############################################################################
#
@ -84,7 +86,7 @@ done
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
@ -112,7 +114,7 @@ case "$( uname )" in #(
NONSTOP* ) nonstop=true ;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
CLASSPATH="\\\"\\\""
# Determine the Java command to use to start the JVM.
@ -203,7 +205,7 @@ fi
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Collect all arguments for the java command:
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# and any embedded shellness will be escaped.
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
# treated as '${Hostname}' itself on the command line.
@ -211,7 +213,7 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
org.gradle.wrapper.GradleWrapperMain \
-jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
"$@"
# Stop when "xargs" is not available.

6
backend/gradlew.bat vendored
View file

@ -13,6 +13,8 @@
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@rem SPDX-License-Identifier: Apache-2.0
@rem
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@ -68,11 +70,11 @@ goto fail
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
set CLASSPATH=
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
:end
@rem End local scope for the variables with windows NT shell

View file

@ -1,6 +0,0 @@
POST http://localhost:9090/realms/LF12/protocol/openid-connect/token
Content-Type: application/x-www-form-urlencoded
grant_type=password&client_id=lf12&username=lf12_test_user&password=secret
> {% client.global.set("token", response.body.access_token); %}

View file

@ -1 +0,0 @@
GET localhost:8080/health

View file

@ -1,10 +1,20 @@
package de.szut.casino;
import de.szut.casino.lootboxes.LootBoxEntity;
import de.szut.casino.lootboxes.LootBoxRepository;
import de.szut.casino.lootboxes.RewardEntity;
import de.szut.casino.lootboxes.RewardRepository;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.web.client.RestTemplate;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
@SpringBootApplication
public class CasinoApplication {
@ -16,4 +26,69 @@ public class CasinoApplication {
public static RestTemplate restTemplate() {
return new RestTemplate();
}
@Bean
public static JavaMailSenderImpl javaMailSenderImpl() {
return new JavaMailSenderImpl();
}
@Bean
public CommandLineRunner initData(LootBoxRepository lootBoxRepository, RewardRepository rewardRepository) {
return _ -> {
if (lootBoxRepository.count() == 0) {
LootBoxEntity basicLootBox = new LootBoxEntity();
basicLootBox.setName("Basic LootBox");
basicLootBox.setPrice(new BigDecimal("2"));
basicLootBox.setRewards(new ArrayList<>()); // Initialize the list
LootBoxEntity premiumLootBox = new LootBoxEntity();
premiumLootBox.setName("Premium LootBox");
premiumLootBox.setPrice(new BigDecimal("5"));
premiumLootBox.setRewards(new ArrayList<>()); // Initialize the list
lootBoxRepository.saveAll(Arrays.asList(basicLootBox, premiumLootBox));
RewardEntity commonReward = new RewardEntity();
commonReward.setValue(new BigDecimal("0.50"));
commonReward.setProbability(new BigDecimal("0.7"));
RewardEntity rareReward = new RewardEntity();
rareReward.setValue(new BigDecimal("2.00"));
rareReward.setProbability(new BigDecimal("0.25"));
RewardEntity epicReward = new RewardEntity();
epicReward.setValue(new BigDecimal("5.00"));
epicReward.setProbability(new BigDecimal("0.5"));
RewardEntity premiumCommon = new RewardEntity();
premiumCommon.setValue(new BigDecimal("2.00"));
premiumCommon.setProbability(new BigDecimal("0.6"));
RewardEntity premiumRare = new RewardEntity();
premiumRare.setValue(new BigDecimal("5.00"));
premiumRare.setProbability(new BigDecimal("0.3"));
RewardEntity legendaryReward = new RewardEntity();
legendaryReward.setValue(new BigDecimal("15.00"));
legendaryReward.setProbability(new BigDecimal("0.10"));
rewardRepository.saveAll(Arrays.asList(
commonReward, rareReward, epicReward,
premiumCommon, premiumRare, legendaryReward));
basicLootBox.getRewards().add(commonReward);
basicLootBox.getRewards().add(premiumRare);
premiumLootBox.getRewards().add(premiumCommon);
premiumLootBox.getRewards().add(premiumRare);
premiumLootBox.getRewards().add(legendaryReward);
lootBoxRepository.saveAll(Arrays.asList(basicLootBox, premiumLootBox));
System.out.println("Initial LootBoxes and rewards created successfully");
} else {
System.out.println("LootBoxes already exist, skipping initialization");
}
};
}
}

View file

@ -0,0 +1,68 @@
package de.szut.casino.blackjack;
import de.szut.casino.exceptionHandling.exceptions.UserBlackJackGameMismatchException;
import de.szut.casino.shared.dto.BetDto;
import de.szut.casino.user.UserEntity;
import de.szut.casino.user.UserService;
import jakarta.validation.Valid;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.Objects;
@Slf4j
@RestController
public class BlackJackGameController {
private final UserService userService;
private final BlackJackService blackJackService;
public BlackJackGameController(UserService userService, BlackJackService blackJackService) {
this.blackJackService = blackJackService;
this.userService = userService;
}
@GetMapping("/blackjack/{id}")
public ResponseEntity<Object> getGame(@PathVariable Long id) {
BlackJackGameEntity game = getBlackJackGame(id);
return ResponseEntity.ok(game);
}
@PostMapping("/blackjack/{id}/hit")
public ResponseEntity<Object> hit(@PathVariable Long id) {
BlackJackGameEntity game = getBlackJackGame(id);
return ResponseEntity.ok(blackJackService.hit(game));
}
@PostMapping("/blackjack/{id}/stand")
public ResponseEntity<Object> stand(@PathVariable Long id) {
BlackJackGameEntity game = getBlackJackGame(id);
return ResponseEntity.ok(blackJackService.stand(game));
}
@PostMapping("/blackjack/{id}/doubleDown")
public ResponseEntity<Object> doubleDown(@PathVariable Long id) {
BlackJackGameEntity game = getBlackJackGame(id);
return ResponseEntity.ok(blackJackService.doubleDown(game));
}
@PostMapping("/blackjack/start")
public ResponseEntity<Object> createBlackJackGame(@RequestBody @Valid BetDto betDto) {
return ResponseEntity.ok(blackJackService.createBlackJackGame(betDto));
}
private BlackJackGameEntity getBlackJackGame(Long gameId) {
UserEntity user = userService.getCurrentUser();
BlackJackGameEntity game = blackJackService.getBlackJackGame(gameId);
if (game == null || !Objects.equals(game.getUserId(), user.getId())) {
throw new UserBlackJackGameMismatchException(gameId);
}
return game;
}
}

View file

@ -0,0 +1,54 @@
package de.szut.casino.blackjack;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonManagedReference;
import de.szut.casino.user.UserEntity;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.hibernate.annotations.SQLRestriction;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
@Entity
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class BlackJackGameEntity {
@Id
@GeneratedValue
private Long id;
@ManyToOne
@JoinColumn(name = "user_id", nullable = false)
@JsonIgnore
private UserEntity user;
public Long getUserId() {
return user != null ? user.getId() : null;
}
@Enumerated(EnumType.STRING)
private BlackJackState state;
private BigDecimal bet;
@OneToMany(mappedBy = "game", cascade = CascadeType.ALL, orphanRemoval = true)
@JsonIgnore
@SQLRestriction("card_type = 'DECK'")
private List<CardEntity> deck = new ArrayList<>();
@OneToMany(mappedBy = "game", cascade = CascadeType.ALL, orphanRemoval = true)
@JsonManagedReference
@SQLRestriction("card_type = 'PLAYER'")
private List<CardEntity> playerCards = new ArrayList<>();
@OneToMany(mappedBy = "game", cascade = CascadeType.ALL, orphanRemoval = true)
@JsonManagedReference
@SQLRestriction("card_type = 'DEALER'")
private List<CardEntity> dealerCards = new ArrayList<>();
}

View file

@ -0,0 +1,8 @@
package de.szut.casino.blackjack;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Service;
@Service
public interface BlackJackGameRepository extends JpaRepository<BlackJackGameEntity, Long> {
}

View file

@ -0,0 +1,210 @@
package de.szut.casino.blackjack;
import de.szut.casino.exceptionHandling.exceptions.InsufficientFundsException;
import de.szut.casino.shared.dto.BetDto;
import de.szut.casino.shared.service.BalanceService;
import de.szut.casino.user.UserEntity;
import de.szut.casino.user.UserRepository;
import de.szut.casino.user.UserService;
import jakarta.transaction.Transactional;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.List;
@Service
public class BlackJackService {
private final BlackJackGameRepository blackJackGameRepository;
private final UserRepository userRepository;
private final BalanceService balanceService;
private final UserService userService;
private final DeckService deckService;
public BlackJackService(
BlackJackGameRepository blackJackGameRepository,
UserRepository userRepository,
BalanceService balanceService,
UserService userService,
DeckService deckService
) {
this.blackJackGameRepository = blackJackGameRepository;
this.userRepository = userRepository;
this.balanceService = balanceService;
this.userService = userService;
this.deckService = deckService;
}
public BlackJackGameEntity getBlackJackGame(Long id) {
return blackJackGameRepository.findById(id).orElse(null);
}
@Transactional
public BlackJackGameEntity createBlackJackGame(BetDto betDto) {
UserEntity user = userService.getCurrentUser();
if (!this.balanceService.hasFunds(user, betDto)) {
throw new InsufficientFundsException();
}
this.balanceService.subtractFunds(user, betDto.getBetAmount());
BlackJackGameEntity game = new BlackJackGameEntity();
game.setUser(user);
game.setBet(betDto.getBetAmount());
this.deckService.initializeDeck(game);
this.deckService.dealInitialCards(game);
game.setState(getState(game));
return processGameBasedOnState(game);
}
@Transactional
public BlackJackGameEntity hit(BlackJackGameEntity game) {
if (game.getState() != BlackJackState.IN_PROGRESS) {
return game;
}
this.deckService.dealCardToPlayer(game);
updateGameStateAndBalance(game);
return processGameBasedOnState(game);
}
@Transactional
public BlackJackGameEntity stand(BlackJackGameEntity game) {
if (game.getState() != BlackJackState.IN_PROGRESS) {
return game;
}
dealCardsToDealerUntilMinimumScore(game);
determineWinnerAndUpdateBalance(game);
return processGameBasedOnState(game);
}
@Transactional
public BlackJackGameEntity doubleDown(BlackJackGameEntity game) {
if (game.getState() != BlackJackState.IN_PROGRESS || game.getPlayerCards().size() != 2) {
return game;
}
UserEntity user = game.getUser();
BigDecimal additionalBet = game.getBet();
this.balanceService.subtractFunds(user, additionalBet);
game.setBet(game.getBet().add(additionalBet));
this.deckService.dealCardToPlayer(game);
updateGameStateAndBalance(game);
if (game.getState() == BlackJackState.IN_PROGRESS) {
return stand(game);
}
return game;
}
private BlackJackGameEntity processGameBasedOnState(BlackJackGameEntity game) {
if (game.getState() != BlackJackState.IN_PROGRESS) {
this.blackJackGameRepository.delete(game);
return game;
}
return blackJackGameRepository.save(game);
}
private void updateGameStateAndBalance(BlackJackGameEntity game) {
game.setState(getState(game));
if (game.getState() == BlackJackState.PLAYER_WON) {
updateUserBalance(game, true);
} else if (game.getState() == BlackJackState.PLAYER_LOST) {
updateUserBalance(game, false);
}
}
private void determineWinnerAndUpdateBalance(BlackJackGameEntity game) {
int playerValue = calculateHandValue(game.getPlayerCards());
int dealerValue = calculateHandValue(game.getDealerCards());
if (dealerValue > 21 || playerValue > dealerValue) {
game.setState(BlackJackState.PLAYER_WON);
updateUserBalance(game, true);
} else if (playerValue < dealerValue) {
game.setState(BlackJackState.PLAYER_LOST);
updateUserBalance(game, false);
} else {
game.setState(BlackJackState.DRAW);
updateUserBalance(game, false);
}
}
protected void updateUserBalance(BlackJackGameEntity game, boolean isWin) {
UserEntity user = game.getUser();
BigDecimal totalBet = game.getBet();
BigDecimal balance = user.getBalance();
if (isWin) {
balance = balance.add(totalBet.multiply(BigDecimal.valueOf(2)));
} else if (game.getState() == BlackJackState.DRAW) {
balance = balance.add(totalBet);
}
user.setBalance(balance);
userRepository.save(user);
}
private BlackJackState getState(BlackJackGameEntity game) {
int playerHandValue = calculateHandValue(game.getPlayerCards());
if (playerHandValue == 21) {
CardEntity hole = this.deckService.drawCardFromDeck(game);
hole.setCardType(CardType.DEALER);
game.getDealerCards().add(hole);
int dealerHandValue = calculateHandValue(game.getDealerCards());
if (dealerHandValue == 21) {
return BlackJackState.DRAW;
} else {
BigDecimal blackjackWinnings = game.getBet().multiply(new BigDecimal("1.5"));
UserEntity user = game.getUser();
user.setBalance(user.getBalance().add(blackjackWinnings));
return BlackJackState.PLAYER_BLACKJACK;
}
} else if (playerHandValue > 21) {
return BlackJackState.PLAYER_LOST;
}
return BlackJackState.IN_PROGRESS;
}
private int calculateHandValue(List<CardEntity> hand) {
int sum = 0;
int aceCount = 0;
for (CardEntity card : hand) {
sum += card.getRank().getValue();
if (card.getRank() == Rank.ACE) {
aceCount++;
}
}
while (sum > 21 && aceCount > 0) {
sum -= 10;
aceCount--;
}
return sum;
}
private void dealCardsToDealerUntilMinimumScore(BlackJackGameEntity game) {
while (calculateHandValue(game.getDealerCards()) < 17) {
this.deckService.dealCardToDealer(game);
}
}
}

View file

@ -0,0 +1,9 @@
package de.szut.casino.blackjack;
public enum BlackJackState {
IN_PROGRESS,
PLAYER_BLACKJACK,
PLAYER_LOST,
PLAYER_WON,
DRAW,
}

View file

@ -0,0 +1,40 @@
package de.szut.casino.blackjack;
import com.fasterxml.jackson.annotation.JsonBackReference;
import com.fasterxml.jackson.annotation.JsonIgnore;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Entity
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class CardEntity {
@Id
@GeneratedValue
@JsonIgnore
private Long id;
@ManyToOne
@JoinColumn(name = "game_id", nullable = false)
@JsonBackReference
private BlackJackGameEntity game;
@Enumerated(EnumType.STRING)
private Suit suit;
@Enumerated(EnumType.STRING)
private Rank rank;
@Enumerated(EnumType.STRING)
@JsonIgnore
private CardType cardType;
}
enum CardType {
DECK, PLAYER, DEALER
}

View file

@ -0,0 +1,57 @@
package de.szut.casino.blackjack;
import org.springframework.stereotype.Service;
import java.util.Random;
@Service
public class DeckService {
private final Random random;
public DeckService(Random random) {
this.random = random;
}
public void initializeDeck(BlackJackGameEntity game) {
for (Suit suit : Suit.values()) {
for (Rank rank : Rank.values()) {
CardEntity card = new CardEntity();
card.setGame(game);
card.setSuit(suit);
card.setRank(rank);
card.setCardType(CardType.DECK);
game.getDeck().add(card);
}
}
java.util.Collections.shuffle(game.getDeck(), random);
}
public CardEntity drawCardFromDeck(BlackJackGameEntity game) {
if (game.getDeck().isEmpty()) {
throw new IllegalStateException("Deck is empty");
}
return game.getDeck().removeFirst();
}
public void dealInitialCards(BlackJackGameEntity game) {
for (int i = 0; i < 2; i++) {
dealCardToPlayer(game);
}
dealCardToDealer(game);
}
public void dealCardToPlayer(BlackJackGameEntity game) {
CardEntity card = drawCardFromDeck(game);
card.setCardType(CardType.PLAYER);
game.getPlayerCards().add(card);
}
public void dealCardToDealer(BlackJackGameEntity game) {
CardEntity card = drawCardFromDeck(game);
card.setCardType(CardType.DEALER);
game.getDealerCards().add(card);
}
}

View file

@ -0,0 +1,31 @@
package de.szut.casino.blackjack;
import lombok.Getter;
@Getter
public enum Rank {
TWO("2", "Two", 2),
THREE("3", "Three", 3),
FOUR("4", "Four", 4),
FIVE("5", "Five", 5),
SIX("6", "Six", 6),
SEVEN("7", "Seven", 7),
EIGHT("8", "Eight", 8),
NINE("9", "Nine", 9),
TEN("10", "Ten", 10),
JACK("J", "Jack", 10),
QUEEN("Q", "Queen", 10),
KING("K", "King", 10),
ACE("A", "Ace", 11);
private final String symbol;
private final String displayName;
private final int value;
Rank(String symbol, String displayName, int value) {
this.symbol = symbol;
this.displayName = displayName;
this.value = value;
}
}

View file

@ -0,0 +1,20 @@
package de.szut.casino.blackjack;
import lombok.Getter;
@Getter
public enum Suit {
HEARTS("H", "Hearts"),
DIAMONDS("D", "Diamonds"),
CLUBS("C", "Clubs"),
SPADES("S", "Spades");
private final String symbol;
private final String displayName;
Suit(String symbol, String displayName) {
this.symbol = symbol;
this.displayName = displayName;
}
}

View file

@ -0,0 +1,6 @@
package de.szut.casino.coinflip;
public enum CoinSide {
HEAD,
TAILS;
}

View file

@ -0,0 +1,39 @@
package de.szut.casino.coinflip;
import de.szut.casino.exceptionHandling.exceptions.InsufficientFundsException;
import de.szut.casino.exceptionHandling.exceptions.UserNotFoundException;
import de.szut.casino.shared.service.BalanceService;
import de.szut.casino.user.UserEntity;
import de.szut.casino.user.UserService;
import jakarta.validation.Valid;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.Optional;
@RestController
public class CoinflipController {
private final UserService userService;
private final BalanceService balanceService;
private final CoinflipService coinflipService;
public CoinflipController(UserService userService, BalanceService balanceService, CoinflipService coinflipService) {
this.userService = userService;
this.balanceService = balanceService;
this.coinflipService = coinflipService;
}
@PostMapping("/coinflip")
public ResponseEntity<Object> coinFlip(@RequestBody @Valid CoinflipDto coinflipDto) {
UserEntity user = userService.getCurrentUser();
if (!this.balanceService.hasFunds(user, coinflipDto)) {
throw new InsufficientFundsException();
}
return ResponseEntity.ok(coinflipService.play(user, coinflipDto));
}
}

View file

@ -0,0 +1,23 @@
package de.szut.casino.coinflip;
import de.szut.casino.shared.dto.BetDto;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.math.BigDecimal;
@Getter
@Setter
@NoArgsConstructor
public class CoinflipDto extends BetDto {
@NotNull(message = "chosen side cannot be null")
private CoinSide coinSide;
public CoinflipDto(BigDecimal betAmount, CoinSide coinSide) {
super(betAmount);
this.coinSide = coinSide;
}
}

View file

@ -0,0 +1,16 @@
package de.szut.casino.coinflip;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
import java.math.BigDecimal;
@AllArgsConstructor
@Setter
@Getter
public class CoinflipResult {
private boolean isWin;
private BigDecimal payout;
private CoinSide coinSide;
}

View file

@ -0,0 +1,35 @@
package de.szut.casino.coinflip;
import de.szut.casino.shared.service.BalanceService;
import de.szut.casino.user.UserEntity;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.Random;
@Service
public class CoinflipService {
private final Random random;
private final BalanceService balanceService;
public CoinflipService(BalanceService balanceService, Random random) {
this.balanceService = balanceService;
this.random = random;
}
public CoinflipResult play(UserEntity user, CoinflipDto coinflipDto) {
this.balanceService.subtractFunds(user, coinflipDto.getBetAmount());
CoinSide coinSide = this.random.nextBoolean() ? CoinSide.HEAD : CoinSide.TAILS;
CoinflipResult coinflipResult = new CoinflipResult(false, BigDecimal.ZERO, coinSide);
if (coinSide == coinflipDto.getCoinSide()) {
coinflipResult.setWin(true);
BigDecimal payout = coinflipDto.getBetAmount().multiply(BigDecimal.TWO);
this.balanceService.addFunds(user, payout);
coinflipResult.setPayout(payout);
}
return coinflipResult;
}
}

View file

@ -0,0 +1,15 @@
package de.szut.casino.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.Random;
@Configuration
public class AppConfig {
@Bean
public Random random() {
return new Random();
}
}

View file

@ -1,7 +1,6 @@
package de.szut.casino.config;
import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
@ -58,4 +57,4 @@ public class OpenAPIConfiguration {
}
}
}

View file

@ -0,0 +1,30 @@
package de.szut.casino.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebConfig {
@Value("${app.frontend-host}")
private String frontendHost;
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurer() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins(frontendHost)
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
.allowedHeaders("*")
.exposedHeaders("*")
.allowCredentials(true)
.maxAge(3600);
}
};
}
}

View file

@ -0,0 +1,66 @@
package de.szut.casino.deposit;
import com.stripe.Stripe;
import com.stripe.exception.StripeException;
import com.stripe.model.checkout.Session;
import com.stripe.param.checkout.SessionCreateParams;
import de.szut.casino.deposit.dto.AmountDto;
import de.szut.casino.deposit.dto.SessionIdDto;
import de.szut.casino.user.UserEntity;
import de.szut.casino.user.UserService;
import jakarta.validation.Valid;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class DepositController {
@Value("${stripe.secret.key}")
private String stripeKey;
@Value("${app.frontend-host}")
private String frontendHost;
private final TransactionService transactionService;
private final UserService userService;
public DepositController(TransactionService transactionService, UserService userService) {
this.transactionService = transactionService;
this.userService = userService;
}
@PostMapping("/deposit/checkout")
public ResponseEntity<SessionIdDto> checkout(@RequestBody @Valid AmountDto amountDto, @RequestHeader("Authorization") String token) throws StripeException {
Stripe.apiKey = stripeKey;
UserEntity user = userService.getCurrentUser();
SessionCreateParams params = SessionCreateParams.builder()
.addLineItem(SessionCreateParams.LineItem.builder()
.setPriceData(SessionCreateParams.LineItem.PriceData.builder()
.setCurrency("EUR")
.setUnitAmount((long) amountDto.getAmount() * 100)
.setProductData(SessionCreateParams.LineItem.PriceData.ProductData.builder()
.setName("Einzahlung")
.build())
.build())
.setQuantity(1L)
.build())
.setSuccessUrl(frontendHost + "/home?success=true")
.setCancelUrl(frontendHost + "/home?success=false")
.setMode(SessionCreateParams.Mode.PAYMENT)
.build();
Session session = Session.create(params);
transactionService.createTransaction(user, session.getId(), amountDto.getAmount());
return ResponseEntity.ok(new SessionIdDto(session.getId()));
}
}

View file

@ -0,0 +1,32 @@
package de.szut.casino.deposit;
import de.szut.casino.user.UserEntity;
import jakarta.persistence.*;
import lombok.Getter;
import lombok.Setter;
import java.util.Date;
@Setter
@Getter
@Entity
public class TransactionEntity {
@Id
@GeneratedValue
private Long id;
@ManyToOne
@JoinColumn(name = "user_id", nullable = false)
private UserEntity user;
@Column(unique = true)
private String sessionId = null;
private double amount = 0;
@Enumerated(EnumType.STRING)
private TransactionStatus status = TransactionStatus.PROCESSING;
@Column(name = "created_at")
private Date createdAt = new Date();
}

View file

@ -0,0 +1,24 @@
package de.szut.casino.deposit;
import de.szut.casino.user.UserEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Optional;
@Service
public interface TransactionRepository extends JpaRepository<TransactionEntity, Long> {
@Query("SELECT t FROM TransactionEntity t WHERE t.sessionId = ?1")
Optional<TransactionEntity> findOneBySessionID(String sessionId);
@Query("SELECT t FROM TransactionEntity t WHERE t.user = ?1")
List<TransactionEntity> findAllByUserId(UserEntity id);
@Query("SELECT t FROM TransactionEntity t WHERE t.user = ?1 ORDER BY t.createdAt DESC LIMIT ?2 OFFSET ?3")
List<TransactionEntity> findByUserIdWithLimit(UserEntity userEntity, Integer limit, Integer offset);
@Query("SELECT COUNT(t) > ?2 + ?3 FROM TransactionEntity t WHERE t.user = ?1")
Boolean hasMore(UserEntity userEntity, Integer limit, Integer offset);
}

View file

@ -0,0 +1,70 @@
package de.szut.casino.deposit;
import com.stripe.exception.StripeException;
import com.stripe.model.checkout.Session;
import com.stripe.param.checkout.SessionRetrieveParams;
import de.szut.casino.security.service.EmailService;
import de.szut.casino.user.UserEntity;
import de.szut.casino.user.UserRepository;
import jakarta.mail.MessagingException;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.Optional;
@Service
public class TransactionService {
private final TransactionRepository transactionRepository;
private final UserRepository userRepository;
private final EmailService emailService;
public TransactionService(TransactionRepository transactionRepository, UserRepository userRepository, EmailService emailService) {
this.transactionRepository = transactionRepository;
this.userRepository = userRepository;
this.emailService = emailService;
}
public void createTransaction(
UserEntity user,
String sessionID,
Double amount
) {
TransactionEntity transaction = new TransactionEntity();
transaction.setUser(user);
transaction.setSessionId(sessionID);
transaction.setAmount(amount);
transactionRepository.save(transaction);
}
public void fulfillCheckout(String sessionID) throws StripeException, MessagingException, IOException {
SessionRetrieveParams params = SessionRetrieveParams.builder()
.addExpand("line_items")
.build();
Session checkoutSession = Session.retrieve(sessionID, params, null);
if (!"paid".equals(checkoutSession.getPaymentStatus())) {
return;
}
Optional<TransactionEntity> optionalTransaction = transactionRepository.findOneBySessionID(sessionID);
if (optionalTransaction.isEmpty()) {
throw new RuntimeException("Transaction not found");
}
TransactionEntity transaction = optionalTransaction.get();
transaction.setStatus(TransactionStatus.SUCCEEDED);
UserEntity user = transaction.getUser();
Long amountTotal = checkoutSession.getAmountTotal();
if (amountTotal != null) {
user.addBalance(BigDecimal.valueOf(amountTotal).movePointLeft(2));
}
userRepository.save(user);
transactionRepository.save(transaction);
emailService.sendDepositEmail(transaction);
}
}

View file

@ -0,0 +1,6 @@
package de.szut.casino.deposit;
public enum TransactionStatus {
PROCESSING,
SUCCEEDED,
}

View file

@ -0,0 +1,54 @@
package de.szut.casino.deposit;
import com.stripe.Stripe;
import com.stripe.exception.StripeException;
import com.stripe.model.Event;
import com.stripe.model.checkout.Session;
import com.stripe.net.Webhook;
import jakarta.annotation.PostConstruct;
import jakarta.mail.MessagingException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RestController;
import java.io.IOException;
import java.util.Objects;
@RestController
public class WebhookController {
private static final Logger logger = LoggerFactory.getLogger(WebhookController.class);
@Value("${stripe.secret.key}")
private String stripeSecretKey;
@Value("${stripe.webhook.secret}")
private String webhookSecret;
private final TransactionService transactionService;
public WebhookController(TransactionService transactionService) {
this.transactionService = transactionService;
}
@PostConstruct
public void init() {
Stripe.apiKey = stripeSecretKey;
}
@PostMapping("/webhook")
public ResponseEntity<String> webhook(@RequestBody String payload, @RequestHeader("Stripe-Signature") String sigHeader) throws StripeException, MessagingException, IOException {
Event event = Webhook.constructEvent(payload, sigHeader, webhookSecret);
if (Objects.equals(event.getType(), "checkout.session.completed") || Objects.equals(event.getType(), "checkout.session.async_payment_succeeded")) {
Session session = (Session) event.getData().getObject();
this.transactionService.fulfillCheckout(session.getId());
}
return ResponseEntity.ok().body(null);
}
}

View file

@ -0,0 +1,17 @@
package de.szut.casino.deposit.dto;
import jakarta.validation.constraints.Min;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
public class AmountDto {
@Min(50)
private double amount;
}

View file

@ -0,0 +1,15 @@
package de.szut.casino.deposit.dto;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
public class SessionIdDto {
private String sessionId;
}

View file

@ -0,0 +1,38 @@
package de.szut.casino.dice;
import de.szut.casino.exceptionHandling.exceptions.InsufficientFundsException;
import de.szut.casino.exceptionHandling.exceptions.UserNotFoundException;
import de.szut.casino.shared.service.BalanceService;
import de.szut.casino.user.UserEntity;
import de.szut.casino.user.UserService;
import jakarta.validation.Valid;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.Optional;
@RestController
public class DiceController {
private final UserService userService;
private final BalanceService balanceService;
private final DiceService diceService;
public DiceController(UserService userService, BalanceService balanceService, DiceService diceService) {
this.userService = userService;
this.balanceService = balanceService;
this.diceService = diceService;
}
@PostMapping("/dice")
public ResponseEntity<Object> rollDice(@RequestBody @Valid DiceDto diceDto) {
UserEntity user = userService.getCurrentUser();
if (!this.balanceService.hasFunds(user, diceDto)) {
throw new InsufficientFundsException();
}
return ResponseEntity.ok(diceService.play(user, diceDto));
}
}

View file

@ -0,0 +1,29 @@
package de.szut.casino.dice;
import de.szut.casino.shared.dto.BetDto;
import jakarta.validation.constraints.DecimalMax;
import jakarta.validation.constraints.DecimalMin;
import jakarta.validation.constraints.NotNull;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.math.BigDecimal;
@Getter
@Setter
@NoArgsConstructor
public class DiceDto extends BetDto {
private boolean rollOver;
@NotNull
@DecimalMin(value = "1.00")
@DecimalMax(value = "100")
private BigDecimal targetValue;
public DiceDto(BigDecimal betAmount, boolean rollOver, BigDecimal targetValue) {
super(betAmount);
this.rollOver = rollOver;
this.targetValue = targetValue;
}
}

View file

@ -0,0 +1,20 @@
package de.szut.casino.dice;
import lombok.Getter;
import lombok.Setter;
import java.math.BigDecimal;
@Setter
@Getter
public class DiceResult {
private boolean win;
private BigDecimal payout;
private BigDecimal rolledValue;
public DiceResult(boolean win, BigDecimal payout, BigDecimal rolledValue) {
this.win = win;
this.payout = payout;
this.rolledValue = rolledValue;
}
}

View file

@ -0,0 +1,69 @@
package de.szut.casino.dice;
import de.szut.casino.shared.service.BalanceService;
import de.szut.casino.user.UserEntity;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Random;
@Service
public class DiceService {
private static final int MAX_DICE_VALUE = 100;
private final Random random;
private final BalanceService balanceService;
public DiceService(Random random, BalanceService balanceService) {
this.random = random;
this.balanceService = balanceService;
}
public DiceResult play(UserEntity user, DiceDto diceDto) {
balanceService.subtractFunds(user, diceDto.getBetAmount());
int rolledValue = random.nextInt(MAX_DICE_VALUE) + 1;
BigDecimal rolledValueDecimal = BigDecimal.valueOf(rolledValue);
BigDecimal targetValue = diceDto.getTargetValue();
boolean isRollOver = diceDto.isRollOver();
boolean winConditionMet = isWinConditionMet(rolledValueDecimal, targetValue, isRollOver);
if (!winConditionMet) {
return new DiceResult(false, BigDecimal.ZERO, rolledValueDecimal);
}
BigDecimal winChance = calculateWinChance(targetValue, isRollOver);
BigDecimal multiplier = calculateMultiplier(winChance);
BigDecimal payout = diceDto.getBetAmount().multiply(multiplier);
balanceService.addFunds(user, payout);
return new DiceResult(true, payout, rolledValueDecimal);
}
private boolean isWinConditionMet(BigDecimal rolledValue, BigDecimal targetValue, boolean isRollOver) {
if (isRollOver) {
return rolledValue.compareTo(targetValue) > 0;
}
return rolledValue.compareTo(targetValue) < 0;
}
private BigDecimal calculateWinChance(BigDecimal targetValue, boolean isRollOver) {
if (isRollOver) {
return BigDecimal.valueOf(MAX_DICE_VALUE).subtract(targetValue);
}
return targetValue.subtract(BigDecimal.ONE);
}
private BigDecimal calculateMultiplier(BigDecimal winChance) {
if (winChance.compareTo(BigDecimal.ZERO) > 0) {
return BigDecimal.valueOf(MAX_DICE_VALUE - 1).divide(winChance, 4, RoundingMode.HALF_UP);
}
return BigDecimal.ZERO;
}
}

View file

@ -1,8 +1,10 @@
package de.szut.casino.exceptionHandling;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import de.szut.casino.exceptionHandling.exceptions.EmailNotVerifiedException;
import de.szut.casino.exceptionHandling.exceptions.InsufficientFundsException;
import de.szut.casino.exceptionHandling.exceptions.UserBlackJackGameMismatchException;
import de.szut.casino.exceptionHandling.exceptions.UserNotFoundException;
import jakarta.persistence.EntityExistsException;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
@ -12,17 +14,35 @@ import org.springframework.web.context.request.WebRequest;
import java.util.Date;
@ControllerAdvice
@ApiResponses(value = {
@ApiResponse(responseCode = "500", description = "invalid JSON posted",
content = @Content)
})
public class GlobalExceptionHandler {
@ExceptionHandler(ResourceNotFoundException.class)
public ResponseEntity<?> handleHelloEntityNotFoundException(ResourceNotFoundException ex, WebRequest request) {
@ExceptionHandler(UserNotFoundException.class)
public ResponseEntity<?> handleUserNotFoundException(UserNotFoundException ex, WebRequest request) {
ErrorDetails errorDetails = new ErrorDetails(new Date(), ex.getMessage(), request.getDescription(false));
return new ResponseEntity<>(errorDetails, HttpStatus.NOT_FOUND);
}
@ExceptionHandler(InsufficientFundsException.class)
public ResponseEntity<?> handleInsufficientFundsException(InsufficientFundsException ex, WebRequest request) {
ErrorDetails errorDetails = new ErrorDetails(new Date(), ex.getMessage(), request.getDescription(false));
return new ResponseEntity<>(errorDetails, HttpStatus.BAD_REQUEST);
}
@ExceptionHandler(EntityExistsException.class)
public ResponseEntity<?> handleEntityExistsException(EntityExistsException ex, WebRequest request) {
ErrorDetails errorDetails = new ErrorDetails(new Date(), ex.getMessage(), request.getDescription(false));
return new ResponseEntity<>(errorDetails, HttpStatus.CONFLICT);
}
@ExceptionHandler(EmailNotVerifiedException.class)
public ResponseEntity<?> handleEmailNotVerifiedException(EmailNotVerifiedException ex, WebRequest request) {
ErrorDetails errorDetails = new ErrorDetails(new Date(), ex.getMessage(), request.getDescription(false));
return new ResponseEntity<>(errorDetails, HttpStatus.UNAUTHORIZED);
}
@ExceptionHandler(UserBlackJackGameMismatchException.class)
public ResponseEntity<?> handleUserBlackJackGameMismatchException(UserBlackJackGameMismatchException ex, WebRequest request) {
ErrorDetails errorDetails = new ErrorDetails(new Date(), ex.getMessage(), request.getDescription(false));
return new ResponseEntity<>(errorDetails, HttpStatus.NOT_FOUND);
}
}

View file

@ -1,11 +0,0 @@
package de.szut.casino.exceptionHandling;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;
@ResponseStatus(value = HttpStatus.NOT_FOUND)
public class ResourceNotFoundException extends RuntimeException {
public ResourceNotFoundException(String message) {
super(message);
}
}

View file

@ -0,0 +1,7 @@
package de.szut.casino.exceptionHandling.exceptions;
public class EmailNotVerifiedException extends Exception {
public EmailNotVerifiedException() {
super("Email not verified");
}
}

View file

@ -0,0 +1,11 @@
package de.szut.casino.exceptionHandling.exceptions;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;
@ResponseStatus(value = HttpStatus.BAD_REQUEST)
public class InsufficientFundsException extends RuntimeException {
public InsufficientFundsException() {
super("insufficient funds");
}
}

View file

@ -0,0 +1,9 @@
package de.szut.casino.exceptionHandling.exceptions;
import org.springframework.security.core.AuthenticationException;
public class OAuth2AuthenticationProcessingException extends AuthenticationException {
public OAuth2AuthenticationProcessingException(String msg) {
super(msg);
}
}

View file

@ -0,0 +1,7 @@
package de.szut.casino.exceptionHandling.exceptions;
public class UserBlackJackGameMismatchException extends RuntimeException {
public UserBlackJackGameMismatchException(Long gameId) {
super(String.format("Blackjack game with ID %d not found or does not belong to the current user.", gameId));
}
}

View file

@ -0,0 +1,11 @@
package de.szut.casino.exceptionHandling.exceptions;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;
@ResponseStatus(value = HttpStatus.NOT_FOUND)
public class UserNotFoundException extends RuntimeException {
public UserNotFoundException() {
super("User not found");
}
}

View file

@ -0,0 +1,30 @@
package de.szut.casino.lootboxes;
import jakarta.validation.constraints.DecimalMin;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class CreateLootBoxDto {
@NotEmpty(message = "Loot box name cannot be empty")
@Size(min = 3, max = 50, message = "Loot box name must be between 3 and 50 characters")
private String name;
@NotNull(message = "Price cannot be null")
@DecimalMin(value = "0.01", message = "Price must be greater than 0")
private BigDecimal price;
private List<CreateRewardDto> rewards = new ArrayList<>();
}

View file

@ -0,0 +1,26 @@
package de.szut.casino.lootboxes;
import jakarta.validation.constraints.DecimalMax;
import jakarta.validation.constraints.DecimalMin;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.math.BigDecimal;
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class CreateRewardDto {
@NotNull(message = "Reward value cannot be null")
@DecimalMin(value = "0.00", message = "Reward value must be positive")
private BigDecimal value;
@NotNull(message = "Probability cannot be null")
@DecimalMin(value = "0.0", message = "Probability must be at least 0.0")
@DecimalMax(value = "1.0", message = "Probability must be at most 1.0")
private BigDecimal probability;
}

View file

@ -0,0 +1,85 @@
package de.szut.casino.lootboxes;
import de.szut.casino.exceptionHandling.exceptions.InsufficientFundsException;
import de.szut.casino.exceptionHandling.exceptions.UserNotFoundException;
import de.szut.casino.user.UserEntity;
import de.szut.casino.user.UserService;
import jakarta.validation.Valid;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
@RestController
public class LootBoxController {
private final LootBoxRepository lootBoxRepository;
private final UserService userService;
private final LootBoxService lootBoxService;
public LootBoxController(LootBoxRepository lootBoxRepository, UserService userService, LootBoxService lootBoxService) {
this.lootBoxRepository = lootBoxRepository;
this.userService = userService;
this.lootBoxService = lootBoxService;
}
@GetMapping("/lootboxes")
public List<LootBoxEntity> getAllLootBoxes() {
return lootBoxRepository.findAll();
}
@PostMapping("/lootboxes/{id}")
public ResponseEntity<Object> purchaseLootBox(@PathVariable Long id) {
Optional<LootBoxEntity> optionalLootBox = lootBoxRepository.findById(id);
if (optionalLootBox.isEmpty()) {
return ResponseEntity.notFound().build();
}
LootBoxEntity lootBox = optionalLootBox.get();
UserEntity user = userService.getCurrentUser();
if (lootBoxService.hasSufficientBalance(user, lootBox.getPrice())) {
throw new InsufficientFundsException();
}
RewardEntity reward = lootBoxService.determineReward(lootBox);
lootBoxService.handleBalance(user, lootBox, reward);
return ResponseEntity.ok(reward);
}
@PostMapping("/lootboxes")
public ResponseEntity<Object> createLootbox(@RequestBody @Valid CreateLootBoxDto createLootBoxDto) {
List<RewardEntity> rewardEntities = new ArrayList<>();
for (CreateRewardDto createRewardDto : createLootBoxDto.getRewards()) {
rewardEntities.add(new RewardEntity(createRewardDto.getValue(), createRewardDto.getProbability()));
}
LootBoxEntity lootBoxEntity = new LootBoxEntity(
createLootBoxDto.getName(),
createLootBoxDto.getPrice(),
rewardEntities
);
this.lootBoxRepository.save(lootBoxEntity);
return ResponseEntity.ok(lootBoxEntity);
}
@DeleteMapping("/lootboxes/{id}")
public ResponseEntity<Object> deleteLootbox(@PathVariable Long id) {
Optional<LootBoxEntity> optionalLootBox = lootBoxRepository.findById(id);
if (optionalLootBox.isEmpty()) {
return ResponseEntity.notFound().build();
}
LootBoxEntity lootBox = optionalLootBox.get();
lootBoxRepository.delete(lootBox);
return ResponseEntity.ok(Collections.singletonMap("message", "successfully deleted lootbox"));
}
}

View file

@ -0,0 +1,40 @@
package de.szut.casino.lootboxes;
import jakarta.persistence.*;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
@Entity
@Getter
@Setter
@NoArgsConstructor
public class LootBoxEntity {
public LootBoxEntity(String name, BigDecimal price, List<RewardEntity> rewards) {
this.name = name;
this.price = price;
this.rewards = rewards;
}
@Id
@GeneratedValue
private Long id;
private String name;
@Column(precision = 19, scale = 2)
private BigDecimal price;
@ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@JoinTable(
name = "lootbox_reward",
joinColumns = @JoinColumn(name = "lootbox_id"),
inverseJoinColumns = @JoinColumn(name = "reward_id")
)
private List<RewardEntity> rewards = new ArrayList<>();
}

View file

@ -0,0 +1,8 @@
package de.szut.casino.lootboxes;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Service;
@Service
public interface LootBoxRepository extends JpaRepository<LootBoxEntity, Long> {
}

View file

@ -0,0 +1,40 @@
package de.szut.casino.lootboxes;
import de.szut.casino.user.UserEntity;
import de.szut.casino.user.UserRepository;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
@Service
public class LootBoxService {
private final UserRepository userRepository;
public LootBoxService(UserRepository userRepository) {
this.userRepository = userRepository;
}
public boolean hasSufficientBalance(UserEntity user, BigDecimal price) {
return user.getBalance().compareTo(price) < 0;
}
public RewardEntity determineReward(LootBoxEntity lootBox) {
double randomValue = Math.random();
BigDecimal cumulativeProbability = BigDecimal.ZERO;
for (RewardEntity reward : lootBox.getRewards()) {
cumulativeProbability = cumulativeProbability.add(reward.getProbability());
if (randomValue <= cumulativeProbability.doubleValue()) {
return reward;
}
}
return lootBox.getRewards().getLast();
}
public void handleBalance(UserEntity user, LootBoxEntity lootBox, RewardEntity reward) {
user.setBalance(user.getBalance().subtract(lootBox.getPrice()));
user.setBalance(user.getBalance().add(reward.getValue()));
userRepository.save(user);
}
}

View file

@ -0,0 +1,37 @@
package de.szut.casino.lootboxes;
import com.fasterxml.jackson.annotation.JsonBackReference;
import jakarta.persistence.*;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
@Getter
@Setter
@Entity
@NoArgsConstructor
public class RewardEntity {
public RewardEntity(BigDecimal value, BigDecimal probability) {
this.value = value;
this.probability = probability;
}
@Id
@GeneratedValue
private Long id;
@Column(precision = 19, scale = 2, name = "rewardValue")
private BigDecimal value;
@Column(precision = 5, scale = 2)
private BigDecimal probability;
@ManyToMany(mappedBy = "rewards")
@JsonBackReference
private List<LootBoxEntity> lootBoxes = new ArrayList<>();
}

View file

@ -0,0 +1,8 @@
package de.szut.casino.lootboxes;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Service;
@Service
public interface RewardRepository extends JpaRepository<RewardEntity, Long> {
}

View file

@ -0,0 +1,60 @@
package de.szut.casino.security;
import de.szut.casino.exceptionHandling.exceptions.EmailNotVerifiedException;
import de.szut.casino.security.dto.AuthResponseDto;
import de.szut.casino.security.dto.LoginRequestDto;
import de.szut.casino.security.dto.ResetPasswordDto;
import de.szut.casino.security.service.AuthService;
import de.szut.casino.user.dto.CreateUserDto;
import de.szut.casino.user.dto.GetUserDto;
import jakarta.mail.MessagingException;
import jakarta.validation.Valid;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.io.IOException;
@RestController
@RequestMapping("/auth")
public class AuthController {
private final AuthService authService;
public AuthController(AuthService authService) {
this.authService = authService;
}
@PostMapping("/login")
public ResponseEntity<AuthResponseDto> authenticateUser(@Valid @RequestBody LoginRequestDto loginRequest) throws EmailNotVerifiedException {
AuthResponseDto response = authService.login(loginRequest);
return ResponseEntity.ok(response);
}
@PostMapping("/register")
public ResponseEntity<GetUserDto> registerUser(@Valid @RequestBody CreateUserDto signUpRequest) throws MessagingException, IOException {
GetUserDto response = authService.register(signUpRequest);
return ResponseEntity.ok(response);
}
@PostMapping("/verify")
public ResponseEntity<Void> verifyEmail(@RequestParam("token") String token) throws MessagingException, IOException {
if (authService.verifyEmail(token)) {
return ResponseEntity.badRequest().build();
}
return ResponseEntity.ok().build();
}
@PostMapping("/recover-password")
public ResponseEntity<Void> recoverPassword(@RequestParam("email") String email) throws MessagingException, IOException {
authService.recoverPassword(email);
return ResponseEntity.ok().build();
}
@PostMapping("/reset-password")
public ResponseEntity<Void> resetPassword(@Valid @RequestBody ResetPasswordDto passwordDto) throws MessagingException, IOException {
authService.resetPassword(passwordDto);
return ResponseEntity.ok().build();
}
}

View file

@ -0,0 +1,40 @@
package de.szut.casino.security;
import jakarta.servlet.*;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import java.io.IOException;
@Component
@Order(Ordered.HIGHEST_PRECEDENCE)
public class CorsFilter implements Filter {
@Value("${app.frontend-host}")
private String frontendHost;
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
HttpServletRequest request = (HttpServletRequest) req;
response.setHeader("Access-Control-Allow-Origin", frontendHost);
response.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, PATCH, DELETE, OPTIONS");
response.setHeader("Access-Control-Allow-Headers", "*");
response.setHeader("Access-Control-Expose-Headers", "*");
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Max-Age", "3600");
if ("OPTIONS".equalsIgnoreCase(request.getMethod())) {
response.setStatus(HttpServletResponse.SC_OK);
return;
}
chain.doFilter(req, res);
}
}

View file

@ -0,0 +1,24 @@
package de.szut.casino.security;
import org.springframework.core.convert.converter.Converter;
import org.springframework.security.authentication.AbstractAuthenticationToken;
import org.springframework.security.oauth2.jwt.Jwt;
import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationConverter;
import org.springframework.security.oauth2.server.resource.authentication.JwtGrantedAuthoritiesConverter;
public class CustomJwtAuthenticationConverter implements Converter<Jwt, AbstractAuthenticationToken> {
@Override
public AbstractAuthenticationToken convert(Jwt source) {
JwtGrantedAuthoritiesConverter authoritiesConverter = new JwtGrantedAuthoritiesConverter();
JwtAuthenticationConverter converter = new JwtAuthenticationConverter();
converter.setJwtGrantedAuthoritiesConverter(authoritiesConverter);
return converter.convert(source);
}
public <U> Converter<Jwt, U> andThen(Converter<? super AbstractAuthenticationToken, ? extends U> after) {
return Converter.super.andThen(after);
}
}

View file

@ -1,48 +0,0 @@
package de.szut.casino.security;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.Authentication;
import org.springframework.security.oauth2.core.oidc.user.OidcUser;
import org.springframework.security.web.authentication.logout.LogoutHandler;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder;
@Slf4j
@Component
public class KeycloakLogoutHandler implements LogoutHandler {
private final RestTemplate restTemplate;
public KeycloakLogoutHandler(RestTemplate restTemplate) {
this.restTemplate = restTemplate;
}
@Override
public void logout(HttpServletRequest request, HttpServletResponse response, Authentication auth) {
logout(request, auth);
}
public void logout(HttpServletRequest request, Authentication auth) {
logoutFromKeycloak((OidcUser) auth.getPrincipal());
}
private void logoutFromKeycloak(OidcUser user) {
String endSessionEndpoint = user.getIssuer() + "/protocol/openid-connect/logout";
UriComponentsBuilder builder = UriComponentsBuilder
.fromUriString(endSessionEndpoint)
.queryParam("id_token_hint", user.getIdToken().getTokenValue());
ResponseEntity<String> logoutResponse = restTemplate.getForEntity(builder.toUriString(), String.class);
if (logoutResponse.getStatusCode().is2xxSuccessful()) {
log.info("Successfulley logged out from Keycloak");
} else {
log.error("Could not propagate logout to Keycloak");
}
}
}

View file

@ -1,82 +0,0 @@
package de.szut.casino.security;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.Customizer;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.session.SessionRegistry;
import org.springframework.security.core.session.SessionRegistryImpl;
import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationConverter;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.web.authentication.session.RegisterSessionAuthenticationStrategy;
import org.springframework.security.web.authentication.session.SessionAuthenticationStrategy;
import org.springframework.security.web.session.HttpSessionEventPublisher;
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@Configuration
@EnableWebSecurity
class KeycloakSecurityConfig {
private static final String GROUPS = "groups";
private static final String REALM_ACCESS_CLAIM = "realm_access";
private static final String ROLES_CLAIM = "roles";
private final KeycloakLogoutHandler keycloakLogoutHandler;
KeycloakSecurityConfig(KeycloakLogoutHandler keycloakLogoutHandler) {
this.keycloakLogoutHandler = keycloakLogoutHandler;
}
@Bean
public SessionRegistry sessionRegistry() {
return new SessionRegistryImpl();
}
@Bean
protected SessionAuthenticationStrategy sessionAuthenticationStrategy() {
return new RegisterSessionAuthenticationStrategy(sessionRegistry());
}
@Bean
public HttpSessionEventPublisher httpSessionEventPublisher() {
return new HttpSessionEventPublisher();
}
@Bean
public SecurityFilterChain resourceServerFilterChain(HttpSecurity http) throws Exception {
http.authorizeHttpRequests(auth -> auth
.requestMatchers("/swagger", "/swagger-ui/**", "/v3/api-docs/**", "/health").permitAll()
.anyRequest().authenticated()
)
.oauth2ResourceServer(spec -> spec.jwt(Customizer.withDefaults()));
return http.build();
}
@Bean
public JwtAuthenticationConverter jwtAuthenticationConverter() {
JwtAuthenticationConverter jwtAuthenticationConverter = new JwtAuthenticationConverter();
jwtAuthenticationConverter.setJwtGrantedAuthoritiesConverter(jwt -> {
List<GrantedAuthority> grantedAuthorities = new ArrayList<>();
Map<String, Object> realmAccess = jwt.getClaim("realm_access");
if (realmAccess != null && realmAccess.containsKey("roles")) {
List<String> roles = (List<String>) realmAccess.get("roles");
for (String role : roles) {
grantedAuthorities.add(new SimpleGrantedAuthority("ROLE_" + role));
}
}
return grantedAuthorities;
});
return jwtAuthenticationConverter;
}
}

View file

@ -0,0 +1,94 @@
package de.szut.casino.security;
import de.szut.casino.security.jwt.JwtAuthenticationFilter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration;
import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.CorsConfigurationSource;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import java.util.Arrays;
import java.util.List;
@Configuration
@EnableWebSecurity
@EnableMethodSecurity
public class SecurityConfig {
@Value("${app.frontend-host}")
private String frontendHost;
private final UserDetailsService userDetailsService;
private final JwtAuthenticationFilter jwtAuthenticationFilter;
public SecurityConfig(UserDetailsService userDetailsService, JwtAuthenticationFilter jwtAuthenticationFilter) {
this.userDetailsService = userDetailsService;
this.jwtAuthenticationFilter = jwtAuthenticationFilter;
}
@Bean
public DaoAuthenticationProvider authenticationProvider() {
DaoAuthenticationProvider authProvider = new DaoAuthenticationProvider();
authProvider.setUserDetailsService(userDetailsService);
authProvider.setPasswordEncoder(passwordEncoder());
return authProvider;
}
@Bean
public AuthenticationManager authenticationManager(AuthenticationConfiguration authConfig) throws Exception {
return authConfig.getAuthenticationManager();
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http
.cors(cors -> cors.configurationSource(corsConfigurationSource()))
.csrf(csrf -> csrf.disable())
.sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
.authorizeHttpRequests(auth -> {
auth.requestMatchers("/auth/**", "/webhook", "/swagger/**", "/swagger-ui/**", "/health", "/error", "/oauth2/**").permitAll()
.requestMatchers(org.springframework.http.HttpMethod.OPTIONS, "/**").permitAll()
.anyRequest().authenticated();
})
.authenticationProvider(authenticationProvider())
.addFilterBefore(jwtAuthenticationFilter, UsernamePasswordAuthenticationFilter.class);
return http.build();
}
@Bean
public CorsConfigurationSource corsConfigurationSource() {
CorsConfiguration configuration = new CorsConfiguration();
configuration.setAllowedOrigins(List.of(this.frontendHost));
configuration.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"));
configuration.setAllowedHeaders(Arrays.asList("Authorization", "Content-Type", "Accept", "Origin", "X-Requested-With", "Access-Control-Request-Method", "Access-Control-Request-Headers", "x-auth-token"));
configuration.setExposedHeaders(Arrays.asList("Authorization", "Content-Type", "x-auth-token", "Access-Control-Allow-Origin", "Access-Control-Allow-Methods", "Access-Control-Allow-Headers"));
configuration.setAllowCredentials(true);
configuration.setMaxAge(3600L);
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", configuration);
return source;
}
}

View file

@ -0,0 +1,19 @@
package de.szut.casino.security.dto;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class AuthResponseDto {
private String token;
private String tokenType = "Bearer";
public AuthResponseDto(String token) {
this.token = token;
}
}

View file

@ -0,0 +1,19 @@
package de.szut.casino.security.dto;
import jakarta.validation.constraints.NotBlank;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class LoginRequestDto {
@NotBlank(message = "Username or email is required")
private String usernameOrEmail;
@NotBlank(message = "Password is required")
private String password;
}

View file

@ -0,0 +1,15 @@
package de.szut.casino.security.dto;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
public class ResetPasswordDto {
private String token;
private String password;
}

View file

@ -0,0 +1,65 @@
package de.szut.casino.security.jwt;
import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.web.authentication.WebAuthenticationDetailsSource;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import org.springframework.web.filter.OncePerRequestFilter;
import java.io.IOException;
@Component
public class JwtAuthenticationFilter extends OncePerRequestFilter {
private final JwtUtils jwtUtils;
private final UserDetailsService userDetailsService;
public JwtAuthenticationFilter(JwtUtils jwtUtils, UserDetailsService userDetailsService) {
this.jwtUtils = jwtUtils;
this.userDetailsService = userDetailsService;
}
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
try {
String jwt = parseJwt(request);
if (jwt != null) {
String username = jwtUtils.extractUsername(jwt);
if (username != null && SecurityContextHolder.getContext().getAuthentication() == null) {
UserDetails userDetails = userDetailsService.loadUserByUsername(username);
if (jwtUtils.validateToken(jwt, userDetails)) {
UsernamePasswordAuthenticationToken authToken = new UsernamePasswordAuthenticationToken(
userDetails, null, userDetails.getAuthorities());
authToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
SecurityContextHolder.getContext().setAuthentication(authToken);
}
}
}
} catch (Exception e) {
logger.error("Cannot set user authentication: {}", e);
}
filterChain.doFilter(request, response);
}
private String parseJwt(HttpServletRequest request) {
String headerAuth = request.getHeader("Authorization");
if (StringUtils.hasText(headerAuth) && headerAuth.startsWith("Bearer ")) {
return headerAuth.substring(7);
}
return null;
}
}

View file

@ -0,0 +1,109 @@
package de.szut.casino.security.jwt;
import de.szut.casino.security.oauth2.UserPrincipal;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import io.jsonwebtoken.security.Keys;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.oauth2.core.user.OAuth2User;
import org.springframework.stereotype.Component;
import java.security.Key;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.function.Function;
@Component
public class JwtUtils {
private static final Logger logger = LoggerFactory.getLogger(JwtUtils.class);
@Value("${jwt.secret}")
private String jwtSecret;
@Value("${jwt.expiration.ms}")
private int jwtExpirationMs;
private Key getSigningKey() {
return Keys.hmacShaKeyFor(jwtSecret.getBytes());
}
public String generateToken(Authentication authentication) {
String subject = null;
Map<String, Object> claims = new HashMap<>();
if (authentication.getPrincipal() instanceof UserPrincipal) {
UserPrincipal userPrincipal = (UserPrincipal) authentication.getPrincipal();
subject = userPrincipal.getEmail();
claims.put("id", userPrincipal.getId());
claims.put("username", userPrincipal.getDisplayUsername());
logger.info("Generating token for UserPrincipal: {}", subject);
} else if (authentication.getPrincipal() instanceof OAuth2User) {
OAuth2User oauth2User = (OAuth2User) authentication.getPrincipal();
subject = (String) oauth2User.getAttributes().get("email");
logger.info("Generating token for OAuth2User: {}", subject);
} else {
UserDetails userDetails = (UserDetails) authentication.getPrincipal();
subject = userDetails.getUsername();
logger.info("Generating token for UserDetails: {}", subject);
}
return createToken(claims, subject);
}
public String generateToken(String username) {
Map<String, Object> claims = new HashMap<>();
return createToken(claims, username);
}
private String createToken(Map<String, Object> claims, String subject) {
Date now = new Date();
logger.info("now: {}", now);
logger.info("jwtExpirationMs: {}", jwtExpirationMs);
logger.info("expiryDate: {}", new Date(now.getTime() + jwtExpirationMs));
Date expiryDate = new Date(now.getTime() + jwtExpirationMs);
return Jwts.builder()
.setClaims(claims)
.setSubject(subject)
.setIssuedAt(now)
.setExpiration(expiryDate)
.signWith(getSigningKey(), SignatureAlgorithm.HS256)
.compact();
}
public String extractUsername(String token) {
return extractClaim(token, Claims::getSubject);
}
public Date extractExpiration(String token) {
return extractClaim(token, Claims::getExpiration);
}
public <T> T extractClaim(String token, Function<Claims, T> claimsResolver) {
final Claims claims = extractAllClaims(token);
return claimsResolver.apply(claims);
}
private Claims extractAllClaims(String token) {
return Jwts.parser()
.setSigningKey(getSigningKey())
.build()
.parseClaimsJws(token)
.getBody();
}
private Boolean isTokenExpired(String token) {
return extractExpiration(token).before(new Date());
}
public Boolean validateToken(String token, UserDetails userDetails) {
final String username = extractUsername(token);
return (username.equals(userDetails.getUsername()) && !isTokenExpired(token));
}
}

View file

@ -0,0 +1,106 @@
package de.szut.casino.security.oauth2;
import de.szut.casino.exceptionHandling.exceptions.OAuth2AuthenticationProcessingException;
import de.szut.casino.user.AuthProvider;
import de.szut.casino.user.UserEntity;
import de.szut.casino.user.UserRepository;
import org.springframework.security.authentication.InternalAuthenticationServiceException;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.oauth2.client.userinfo.DefaultOAuth2UserService;
import org.springframework.security.oauth2.client.userinfo.OAuth2UserRequest;
import org.springframework.security.oauth2.core.OAuth2AuthenticationException;
import org.springframework.security.oauth2.core.user.OAuth2User;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.math.BigDecimal;
import java.util.Optional;
import java.util.UUID;
@Service
public class CustomOAuth2UserService extends DefaultOAuth2UserService {
private final UserRepository userRepository;
private final PasswordEncoder oauth2PasswordEncoder;
public CustomOAuth2UserService(UserRepository userRepository, PasswordEncoder oauth2PasswordEncoder) {
this.userRepository = userRepository;
this.oauth2PasswordEncoder = oauth2PasswordEncoder;
}
@Override
public OAuth2User loadUser(OAuth2UserRequest oAuth2UserRequest) throws OAuth2AuthenticationException {
OAuth2User oAuth2User = super.loadUser(oAuth2UserRequest);
try {
return processOAuth2User(oAuth2UserRequest, oAuth2User);
} catch (AuthenticationException ex) {
throw ex;
} catch (Exception ex) {
throw new InternalAuthenticationServiceException(ex.getMessage(), ex.getCause());
}
}
private OAuth2User processOAuth2User(OAuth2UserRequest oAuth2UserRequest, OAuth2User oAuth2User) {
String registrationId = oAuth2UserRequest.getClientRegistration().getRegistrationId();
OAuth2UserInfo oAuth2UserInfo = OAuth2UserInfoFactory.getOAuth2UserInfo(registrationId, oAuth2User.getAttributes());
String email = oAuth2UserInfo.getEmail();
if (StringUtils.isEmpty(email)) {
email = oAuth2UserInfo.getName() + "@github.user";
}
Optional<UserEntity> userOptional = userRepository.findByEmail(email);
UserEntity user;
if (userOptional.isPresent()) {
user = userOptional.get();
if (!user.getProvider().equals(AuthProvider.valueOf(registrationId.toUpperCase()))) {
throw new OAuth2AuthenticationProcessingException("You're signed up with " +
user.getProvider() + ". Please use your " + user.getProvider() +
" account to login.");
}
user = updateExistingUser(user, oAuth2UserInfo);
} else {
user = registerNewUser(oAuth2UserRequest, oAuth2UserInfo, email);
}
return UserPrincipal.create(user, oAuth2User.getAttributes());
}
private UserEntity registerNewUser(OAuth2UserRequest oAuth2UserRequest, OAuth2UserInfo oAuth2UserInfo, String email) {
UserEntity user = new UserEntity();
String username = oAuth2UserInfo.getName();
if (StringUtils.isEmpty(username)) {
username = "github_" + oAuth2UserInfo.getId();
}
if (userRepository.findByUsername(username).isPresent()) {
username = username + "_" + UUID.randomUUID().toString().substring(0, 8);
}
user.setProvider(AuthProvider.valueOf(oAuth2UserRequest.getClientRegistration().getRegistrationId().toUpperCase()));
user.setProviderId(oAuth2UserInfo.getId());
user.setUsername(username);
user.setEmail(email);
user.setEmailVerified(true);
String randomPassword = UUID.randomUUID().toString();
user.setPassword(oauth2PasswordEncoder.encode(randomPassword));
user.setBalance(new BigDecimal("100.00")); // Starting balance
return userRepository.save(user);
}
private UserEntity updateExistingUser(UserEntity existingUser, OAuth2UserInfo oAuth2UserInfo) {
if (!StringUtils.isEmpty(oAuth2UserInfo.getName())) {
existingUser.setUsername(oAuth2UserInfo.getName());
}
return userRepository.save(existingUser);
}
}

View file

@ -0,0 +1,57 @@
package de.szut.casino.security.oauth2;
import de.szut.casino.security.jwt.JwtUtils;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.core.Authentication;
import org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler;
import org.springframework.stereotype.Component;
import org.springframework.web.util.UriComponentsBuilder;
import java.io.IOException;
@Component
public class OAuth2AuthenticationSuccessHandler extends SimpleUrlAuthenticationSuccessHandler {
private static final Logger logger = LoggerFactory.getLogger(OAuth2AuthenticationSuccessHandler.class);
@Value("${app.oauth2.authorizedRedirectUris}")
private String redirectUri;
private final JwtUtils jwtUtils;
public OAuth2AuthenticationSuccessHandler(JwtUtils jwtUtils) {
this.jwtUtils = jwtUtils;
}
@Override
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication)
throws IOException {
String targetUrl = determineTargetUrl(authentication);
logger.info("OAuth2 Authentication successful, redirecting to: {}", targetUrl);
if (response.isCommitted()) {
logger.debug("Response has already been committed. Unable to redirect to " + targetUrl);
return;
}
clearAuthenticationAttributes(request);
getRedirectStrategy().sendRedirect(request, response, targetUrl);
}
private String determineTargetUrl(Authentication authentication) {
String token = jwtUtils.generateToken(authentication);
if (authentication.getPrincipal() instanceof UserPrincipal) {
UserPrincipal userPrincipal = (UserPrincipal) authentication.getPrincipal();
logger.info("User authenticated: ID={}, Email={}", userPrincipal.getId(), userPrincipal.getEmail());
}
return UriComponentsBuilder.fromUriString(redirectUri)
.queryParam("token", token)
.build().toUriString();
}
}

View file

@ -0,0 +1,15 @@
package de.szut.casino.security.oauth2;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
@Configuration
public class OAuth2Config {
@Bean
public PasswordEncoder oauth2PasswordEncoder() {
return new BCryptPasswordEncoder();
}
}

View file

@ -0,0 +1,20 @@
package de.szut.casino.security.oauth2;
import lombok.Getter;
import java.util.Map;
@Getter
public abstract class OAuth2UserInfo {
protected Map<String, Object> attributes;
public OAuth2UserInfo(Map<String, Object> attributes) {
this.attributes = attributes;
}
public abstract String getId();
public abstract String getName();
public abstract String getEmail();
}

View file

@ -0,0 +1,21 @@
package de.szut.casino.security.oauth2;
import de.szut.casino.exceptionHandling.exceptions.OAuth2AuthenticationProcessingException;
import de.szut.casino.security.oauth2.github.GitHubOAuth2UserInfo;
import de.szut.casino.security.oauth2.google.GoogleOAuth2UserInfo;
import de.szut.casino.user.AuthProvider;
import java.util.Map;
public class OAuth2UserInfoFactory {
public static OAuth2UserInfo getOAuth2UserInfo(String registrationId, Map<String, Object> attributes) {
if (registrationId.equalsIgnoreCase(AuthProvider.GITHUB.toString())) {
return new GitHubOAuth2UserInfo(attributes);
} else if (registrationId.equalsIgnoreCase(AuthProvider.GOOGLE.toString())) {
return new GoogleOAuth2UserInfo(attributes);
} else {
throw new OAuth2AuthenticationProcessingException("Sorry! Login with " + registrationId + " is not supported yet.");
}
}
}

View file

@ -0,0 +1,102 @@
package de.szut.casino.security.oauth2;
import de.szut.casino.user.UserEntity;
import lombok.Getter;
import lombok.Setter;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.oauth2.core.user.OAuth2User;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
public class UserPrincipal implements OAuth2User, UserDetails {
@Getter
private Long id;
@Getter
private String email;
private String username;
private String password;
private Collection<? extends GrantedAuthority> authorities;
@Setter
private Map<String, Object> attributes;
public UserPrincipal(Long id, String email, String username, String password, Collection<? extends GrantedAuthority> authorities) {
this.id = id;
this.email = email;
this.username = username;
this.password = password;
this.authorities = authorities;
}
public static UserPrincipal create(UserEntity user) {
List<GrantedAuthority> authorities = Collections.
singletonList(new SimpleGrantedAuthority("ROLE_USER"));
return new UserPrincipal(
user.getId(),
user.getEmail(),
user.getUsername(),
user.getPassword(),
authorities
);
}
public static UserPrincipal create(UserEntity user, Map<String, Object> attributes) {
UserPrincipal userPrincipal = UserPrincipal.create(user);
userPrincipal.setAttributes(attributes);
return userPrincipal;
}
@Override
public String getPassword() {
return password;
}
@Override
public String getUsername() {
return email;
}
public String getDisplayUsername() {
return username;
}
@Override
public boolean isAccountNonExpired() {
return true;
}
@Override
public boolean isAccountNonLocked() {
return true;
}
@Override
public boolean isCredentialsNonExpired() {
return true;
}
@Override
public boolean isEnabled() {
return true;
}
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
return authorities;
}
@Override
public Map<String, Object> getAttributes() {
return attributes;
}
@Override
public String getName() {
return String.valueOf(id);
}
}

View file

@ -0,0 +1,50 @@
package de.szut.casino.security.oauth2.github;
import de.szut.casino.security.dto.AuthResponseDto;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.view.RedirectView;
@RestController
@RequestMapping("/oauth2/github")
public class GitHubController {
private static final Logger logger = LoggerFactory.getLogger(GitHubController.class);
@Value("${spring.security.oauth2.client.registration.github.client-id}")
private String clientId;
@Value("${spring.security.oauth2.client.provider.github.authorization-uri}")
private String authorizationUri;
@Value("${spring.security.oauth2.client.registration.github.redirect-uri}")
private String redirectUri;
private final GitHubService githubService;
public GitHubController(GitHubService githubService) {
this.githubService = githubService;
}
@GetMapping("/authorize")
public RedirectView authorizeGithub() {
logger.info("Redirecting to GitHub for authorization");
String authUrl = authorizationUri +
"?client_id=" + clientId +
"&redirect_uri=" + redirectUri +
"&scope=user:email,read:user";
return new RedirectView(authUrl);
}
@PostMapping("/callback")
public ResponseEntity<AuthResponseDto> githubCallback(@RequestBody GithubCallbackDto githubCallbackDto) {
String code = githubCallbackDto.getCode();
AuthResponseDto response = githubService.processGithubCode(code);
return ResponseEntity.ok(response);
}
}

View file

@ -0,0 +1,27 @@
package de.szut.casino.security.oauth2.github;
import de.szut.casino.security.oauth2.OAuth2UserInfo;
import java.util.Map;
public class GitHubOAuth2UserInfo extends OAuth2UserInfo {
public GitHubOAuth2UserInfo(Map<String, Object> attributes) {
super(attributes);
}
@Override
public String getId() {
return ((Integer) attributes.get("id")).toString();
}
@Override
public String getName() {
return (String) attributes.get("name");
}
@Override
public String getEmail() {
return (String) attributes.get("email");
}
}

View file

@ -0,0 +1,172 @@
package de.szut.casino.security.oauth2.github;
import de.szut.casino.deposit.TransactionEntity;
import de.szut.casino.deposit.TransactionRepository;
import de.szut.casino.deposit.TransactionStatus;
import de.szut.casino.security.dto.AuthResponseDto;
import de.szut.casino.security.jwt.JwtUtils;
import de.szut.casino.user.AuthProvider;
import de.szut.casino.user.UserEntity;
import de.szut.casino.user.UserRepository;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import java.math.BigDecimal;
import java.util.*;
@Service
public class GitHubService {
@Value("${spring.security.oauth2.client.registration.github.client-id}")
private String clientId;
@Value("${spring.security.oauth2.client.registration.github.client-secret}")
private String clientSecret;
private final AuthenticationManager authenticationManager;
private final UserRepository userRepository;
private final TransactionRepository transactionRepository;
private final JwtUtils jwtUtils;
private final PasswordEncoder oauth2PasswordEncoder;
public GitHubService(AuthenticationManager authenticationManager, UserRepository userRepository, TransactionRepository transactionRepository, JwtUtils jwtUtils, PasswordEncoder oauth2PasswordEncoder) {
this.authenticationManager = authenticationManager;
this.userRepository = userRepository;
this.transactionRepository = transactionRepository;
this.jwtUtils = jwtUtils;
this.oauth2PasswordEncoder = oauth2PasswordEncoder;
}
public AuthResponseDto processGithubCode(String code) {
try {
RestTemplate restTemplate = new RestTemplate();
Map<String, String> requestBody = new HashMap<>();
requestBody.put("client_id", clientId);
requestBody.put("client_secret", clientSecret);
requestBody.put("code", code);
HttpHeaders headers = new HttpHeaders();
headers.set("Accept", "application/json");
HttpEntity<Map<String, String>> requestEntity = new HttpEntity<>(requestBody, headers);
ResponseEntity<Map> response = restTemplate.exchange(
"https://github.com/login/oauth/access_token",
HttpMethod.POST,
requestEntity,
Map.class
);
Map<String, Object> responseBody = response.getBody();
if (responseBody.containsKey("error")) {
String error = (String) responseBody.get("error");
String errorDescription = (String) responseBody.get("error_description");
throw new RuntimeException("GitHub OAuth error: " + errorDescription);
}
String accessToken = (String) responseBody.get("access_token");
if (accessToken == null || accessToken.isEmpty()) {
throw new RuntimeException("Failed to receive access token from GitHub");
}
HttpHeaders userInfoHeaders = new HttpHeaders();
userInfoHeaders.set("Authorization", "Bearer " + accessToken);
HttpEntity<String> userInfoRequestEntity = new HttpEntity<>(null, userInfoHeaders);
ResponseEntity<Map> userResponse = restTemplate.exchange(
"https://api.github.com/user",
HttpMethod.GET,
userInfoRequestEntity,
Map.class
);
Map<String, Object> userAttributes = userResponse.getBody();
HttpHeaders emailsHeaders = new HttpHeaders();
emailsHeaders.set("Authorization", "Bearer " + accessToken);
HttpEntity<String> emailsRequestEntity = new HttpEntity<>(null, emailsHeaders);
ResponseEntity<List> emailsResponse = restTemplate.exchange(
"https://api.github.com/user/emails",
HttpMethod.GET,
emailsRequestEntity,
List.class
);
List<Map<String, Object>> emails = emailsResponse.getBody();
String email = null;
for (Map<String, Object> emailInfo : emails) {
Boolean primary = (Boolean) emailInfo.get("primary");
if (primary != null && primary) {
email = (String) emailInfo.get("email");
break;
}
}
if (email == null && !emails.isEmpty()) {
email = (String) emails.get(0).get("email");
}
String githubId = userAttributes.get("id").toString();
String username = (String) userAttributes.get("login");
Optional<UserEntity> userOptional = userRepository.findByProviderId(githubId);
UserEntity user;
if (userOptional.isPresent()) {
user = userOptional.get();
} else {
userOptional = userRepository.findByEmail(email);
if (userOptional.isPresent()) {
user = userOptional.get();
user.setProvider(AuthProvider.GITHUB);
user.setProviderId(githubId);
} else {
user = new UserEntity();
user.setEmail(email);
user.setUsername(username);
user.setProvider(AuthProvider.GITHUB);
user.setProviderId(githubId);
user.setEmailVerified(true);
user.setBalance(new BigDecimal("100.00"));
}
}
String randomPassword = UUID.randomUUID().toString();
user.setPassword(oauth2PasswordEncoder.encode(randomPassword));
TransactionEntity transaction = new TransactionEntity();
transaction.setAmount(100L);
transaction.setUser(user);
transaction.setSessionId("signup_bonus");
transaction.setStatus(TransactionStatus.SUCCEEDED);
userRepository.save(user);
transactionRepository.save(transaction);
Authentication authentication = this.authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(user.getEmail(), randomPassword));
String token = jwtUtils.generateToken(authentication);
return new AuthResponseDto(token);
} catch (Exception e) {
throw new RuntimeException("Failed to process GitHub authentication", e);
}
}
}

View file

@ -0,0 +1,8 @@
package de.szut.casino.security.oauth2.github;
import lombok.Data;
@Data
public class GithubCallbackDto {
private String code;
}

View file

@ -0,0 +1,51 @@
package de.szut.casino.security.oauth2.google;
import de.szut.casino.security.dto.AuthResponseDto;
import de.szut.casino.security.oauth2.github.GithubCallbackDto;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.view.RedirectView;
@RestController
@RequestMapping("/oauth2/google")
public class GoogleController {
private static final Logger logger = LoggerFactory.getLogger(GoogleController.class);
@Value("${spring.security.oauth2.client.registration.google.client-id}")
private String clientId;
@Value("${spring.security.oauth2.client.provider.google.authorization-uri}")
private String authorizationUri;
@Value("${spring.security.oauth2.client.registration.google.redirect-uri}")
private String redirectUri;
private final GoogleService googleService;
public GoogleController(GoogleService googleService) {
this.googleService = googleService;
}
@GetMapping("/authorize")
public RedirectView authorizeGoogle() {
logger.info("Redirecting to Google for authorization");
String authUrl = authorizationUri +
"?client_id=" + clientId +
"&redirect_uri=" + redirectUri +
"&response_type=code" +
"&scope=email profile";
return new RedirectView(authUrl);
}
@PostMapping("/callback")
public ResponseEntity<AuthResponseDto> googleCallback(@RequestBody GithubCallbackDto callbackDto) {
String code = callbackDto.getCode();
AuthResponseDto response = googleService.processGoogleCode(code);
return ResponseEntity.ok(response);
}
}

View file

@ -0,0 +1,27 @@
package de.szut.casino.security.oauth2.google;
import de.szut.casino.security.oauth2.OAuth2UserInfo;
import java.util.Map;
public class GoogleOAuth2UserInfo extends OAuth2UserInfo {
public GoogleOAuth2UserInfo(Map<String, Object> attributes) {
super(attributes);
}
@Override
public String getId() {
return (String) attributes.get("sub");
}
@Override
public String getName() {
return (String) attributes.get("name");
}
@Override
public String getEmail() {
return (String) attributes.get("email");
}
}

View file

@ -0,0 +1,176 @@
package de.szut.casino.security.oauth2.google;
import de.szut.casino.deposit.TransactionEntity;
import de.szut.casino.deposit.TransactionRepository;
import de.szut.casino.deposit.TransactionStatus;
import de.szut.casino.security.dto.AuthResponseDto;
import de.szut.casino.security.jwt.JwtUtils;
import de.szut.casino.user.AuthProvider;
import de.szut.casino.user.UserEntity;
import de.szut.casino.user.UserRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import java.math.BigDecimal;
import java.util.Map;
import java.util.Optional;
import java.util.UUID;
@Service
public class GoogleService {
private static final Logger logger = LoggerFactory.getLogger(GoogleService.class);
@Value("${spring.security.oauth2.client.registration.google.client-id}")
private String clientId;
@Value("${spring.security.oauth2.client.registration.google.client-secret}")
private String clientSecret;
@Value("${spring.security.oauth2.client.registration.google.redirect-uri}")
private String redirectUri;
@Value("${spring.security.oauth2.client.provider.google.token-uri}")
private String tokenUri;
@Value("${spring.security.oauth2.client.provider.google.user-info-uri}")
private String userInfoUri;
private final AuthenticationManager authenticationManager;
private final UserRepository userRepository;
private final TransactionRepository transactionRepository;
private final JwtUtils jwtUtils;
private final PasswordEncoder oauth2PasswordEncoder;
public GoogleService(AuthenticationManager authenticationManager, UserRepository userRepository, TransactionRepository transactionRepository, JwtUtils jwtUtils, PasswordEncoder oauth2PasswordEncoder) {
this.authenticationManager = authenticationManager;
this.userRepository = userRepository;
this.transactionRepository = transactionRepository;
this.jwtUtils = jwtUtils;
this.oauth2PasswordEncoder = oauth2PasswordEncoder;
}
public AuthResponseDto processGoogleCode(String code) {
try {
RestTemplate restTemplate = new RestTemplate();
HttpHeaders tokenHeaders = new HttpHeaders();
tokenHeaders.set("Content-Type", "application/x-www-form-urlencoded");
MultiValueMap<String, String> tokenRequestBody = new LinkedMultiValueMap<>();
tokenRequestBody.add("client_id", clientId);
tokenRequestBody.add("client_secret", clientSecret);
tokenRequestBody.add("code", code);
tokenRequestBody.add("redirect_uri", redirectUri);
tokenRequestBody.add("grant_type", "authorization_code");
HttpEntity<MultiValueMap<String, String>> tokenRequestEntity = new HttpEntity<>(tokenRequestBody, tokenHeaders);
ResponseEntity<Map> tokenResponse = restTemplate.exchange(
tokenUri,
HttpMethod.POST,
tokenRequestEntity,
Map.class
);
Map<String, Object> tokenResponseBody = tokenResponse.getBody();
if (tokenResponseBody == null || tokenResponseBody.containsKey("error")) {
String error = tokenResponseBody != null ? (String) tokenResponseBody.get("error") : "Unknown error";
throw new RuntimeException("Google OAuth error: " + error);
}
String accessToken = (String) tokenResponseBody.get("access_token");
if (accessToken == null || accessToken.isEmpty()) {
throw new RuntimeException("Failed to receive access token from Google");
}
HttpHeaders userInfoHeaders = new HttpHeaders();
userInfoHeaders.set("Authorization", "Bearer " + accessToken);
HttpEntity<String> userInfoRequestEntity = new HttpEntity<>(null, userInfoHeaders);
ResponseEntity<Map> userResponse = restTemplate.exchange(
userInfoUri,
HttpMethod.GET,
userInfoRequestEntity,
Map.class
);
Map<String, Object> userAttributes = userResponse.getBody();
if (userAttributes == null) {
throw new RuntimeException("Failed to fetch user data from Google");
}
String googleId = (String) userAttributes.get("sub");
String email = (String) userAttributes.get("email");
String name = (String) userAttributes.get("name");
Boolean emailVerified = (Boolean) userAttributes.getOrDefault("email_verified", false);
if (email == null) {
throw new RuntimeException("Google account does not have an email");
}
String username = name != null ? name.replaceAll("\\s+", "") : email.split("@")[0];
Optional<UserEntity> userOptional = userRepository.findByProviderId(googleId);
UserEntity user;
if (userOptional.isPresent()) {
user = userOptional.get();
} else {
userOptional = userRepository.findByEmail(email);
if (userOptional.isPresent()) {
user = userOptional.get();
user.setProvider(AuthProvider.GOOGLE);
user.setProviderId(googleId);
} else {
user = new UserEntity();
user.setEmail(email);
user.setUsername(username);
user.setProvider(AuthProvider.GOOGLE);
user.setProviderId(googleId);
user.setEmailVerified(emailVerified);
user.setBalance(new BigDecimal("100.00"));
}
}
String randomPassword = UUID.randomUUID().toString();
user.setPassword(oauth2PasswordEncoder.encode(randomPassword));
TransactionEntity transaction = new TransactionEntity();
transaction.setAmount(100L);
transaction.setUser(user);
transaction.setSessionId("signup_bonus");
transaction.setStatus(TransactionStatus.SUCCEEDED);
userRepository.save(user);
transactionRepository.save(transaction);
Authentication authentication = authenticationManager.authenticate(
new UsernamePasswordAuthenticationToken(user.getEmail(), randomPassword)
);
String token = jwtUtils.generateToken(authentication);
return new AuthResponseDto(token);
} catch (Exception e) {
logger.error("Failed to process Google authentication", e);
throw new RuntimeException("Failed to process Google authentication", e);
}
}
}

View file

@ -0,0 +1,108 @@
package de.szut.casino.security.service;
import de.szut.casino.exceptionHandling.exceptions.EmailNotVerifiedException;
import de.szut.casino.security.dto.AuthResponseDto;
import de.szut.casino.security.dto.LoginRequestDto;
import de.szut.casino.security.dto.ResetPasswordDto;
import de.szut.casino.security.jwt.JwtUtils;
import de.szut.casino.user.UserEntity;
import de.szut.casino.user.UserService;
import de.szut.casino.user.dto.CreateUserDto;
import de.szut.casino.user.dto.GetUserDto;
import jakarta.mail.MessagingException;
import org.apache.commons.lang3.RandomStringUtils;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.util.Optional;
@Service
public class AuthService {
private final AuthenticationManager authenticationManager;
private final JwtUtils jwtUtils;
private final UserService userService;
private final EmailService emailService;
private final PasswordEncoder passwordEncoder;
public AuthService(AuthenticationManager authenticationManager, JwtUtils jwtUtils, UserService userService, EmailService emailService, PasswordEncoder passwordEncoder) {
this.authenticationManager = authenticationManager;
this.jwtUtils = jwtUtils;
this.userService = userService;
this.emailService = emailService;
this.passwordEncoder = passwordEncoder;
}
public AuthResponseDto login(LoginRequestDto loginRequest) throws EmailNotVerifiedException {
if (!userService.isVerified(loginRequest.getUsernameOrEmail())) {
throw new EmailNotVerifiedException();
}
Authentication authentication = authenticationManager.authenticate(
new UsernamePasswordAuthenticationToken(
loginRequest.getUsernameOrEmail(),
loginRequest.getPassword()));
SecurityContextHolder.getContext().setAuthentication(authentication);
String jwt = jwtUtils.generateToken(authentication);
return new AuthResponseDto(jwt);
}
public GetUserDto register(CreateUserDto signUpRequest) throws MessagingException, IOException {
UserEntity user = userService.createUser(signUpRequest);
this.emailService.sendEmailVerificationEmail(user);
return new GetUserDto(
user.getId(),
user.getEmail(),
user.getUsername(),
user.getBalance()
);
}
public Boolean verifyEmail(String token) throws MessagingException, IOException {
Optional<UserEntity> optionalUser = userService.getUserByVerificationToken(token);
if (!optionalUser.isPresent()) {
return false;
}
UserEntity user = optionalUser.get();
user.setEmailVerified(true);
user.setVerificationToken(null);
userService.saveUser(user);
this.emailService.sendWelcomeEmail(user);
return true;
}
public void recoverPassword(String email) throws MessagingException, IOException {
Optional<UserEntity> optionalUser = userService.getUserByEmail(email);
if (optionalUser.isPresent()) {
UserEntity user = optionalUser.get();
user.setPasswordResetToken(RandomStringUtils.randomAlphanumeric(64));
userService.saveUser(user);
this.emailService.sendPasswordRecoveryEmail(user);
}
}
public void resetPassword(ResetPasswordDto passwordDto) {
Optional<UserEntity> optionalUser = userService.getUserByPasswordResetToken(passwordDto.getToken());
if (optionalUser.isPresent()) {
UserEntity user = optionalUser.get();
user.setPassword(passwordEncoder.encode(passwordDto.getPassword()));
user.setPasswordResetToken(null);
userService.saveUser(user);
}
}
}

View file

@ -0,0 +1,115 @@
package de.szut.casino.security.service;
import de.szut.casino.deposit.TransactionEntity;
import de.szut.casino.user.UserEntity;
import jakarta.mail.MessagingException;
import jakarta.mail.internet.MimeMessage;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.ClassPathResource;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
import org.springframework.util.FileCopyUtils;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.nio.charset.StandardCharsets;
@Service
public class EmailService {
private JavaMailSenderImpl mailSender;
private MailConfig mailConfig;
@Value("${app.frontend-host}")
private String feUrl;
public EmailService(JavaMailSenderImpl mailSender, MailConfig mailConfig) {
this.mailSender = mailSender;
this.mailConfig = mailConfig;
this.mailSender.setHost(mailConfig.host);
this.mailSender.setPort(mailConfig.port);
this.mailSender.setProtocol(mailConfig.protocol);
if (mailConfig.authenticationEnabled) {
this.mailSender.setUsername(mailConfig.username);
this.mailSender.setPassword(mailConfig.password);
}
}
public void sendEmailVerificationEmail(UserEntity user) throws IOException, MessagingException {
String template = loadTemplate("email/verify.html");
String htmlContent = template
.replace("${username}", user.getUsername())
.replace("${feUrl}", feUrl)
.replace("${token}", user.getVerificationToken());
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
helper.setFrom(mailConfig.fromAddress);
helper.setTo(user.getEmailAddress());
helper.setSubject("E-Mail Bestätigung");
helper.setText(htmlContent, true);
mailSender.send(message);
}
public void sendWelcomeEmail(UserEntity user) throws IOException, MessagingException {
String template = loadTemplate("email/welcome.html");
String htmlContent = template
.replace("${username}", user.getUsername())
.replace("${feUrl}", feUrl);
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
helper.setFrom(mailConfig.fromAddress);
helper.setTo(user.getEmailAddress());
helper.setSubject("Willkommen bei Trustworthy Casino©");
helper.setText(htmlContent, true);
mailSender.send(message);
}
public void sendDepositEmail(TransactionEntity transaction) throws IOException, MessagingException {
String template = loadTemplate("email/deposit.html");
String htmlContent = template
.replace("${username}", transaction.getUser().getUsername())
.replace("${amount}", String.valueOf(transaction.getAmount()))
.replace("${feUrl}", feUrl);
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
helper.setFrom(mailConfig.fromAddress);
helper.setTo(transaction.getUser().getEmailAddress());
helper.setSubject("Einzahlung über ${amount}€ Erfolgreich".replace("${amount}", String.valueOf(transaction.getAmount())));
helper.setText(htmlContent, true);
mailSender.send(message);
}
public void sendPasswordRecoveryEmail(UserEntity user) throws IOException, MessagingException {
String template = loadTemplate("email/recover-password.html");
String htmlContent = template
.replace("${username}", user.getUsername())
.replace("${resetToken}", user.getPasswordResetToken())
.replace("${feUrl}", feUrl);
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
helper.setFrom(mailConfig.fromAddress);
helper.setTo(user.getEmailAddress());
helper.setSubject("Zurücksetzen ihres Passworts");
helper.setText(htmlContent, true);
mailSender.send(message);
}
private String loadTemplate(String templatePath) throws IOException {
ClassPathResource resource = new ClassPathResource("templates/" + templatePath);
try (Reader reader = new InputStreamReader(resource.getInputStream(), StandardCharsets.UTF_8)) {
return FileCopyUtils.copyToString(reader);
}
}
}

View file

@ -0,0 +1,28 @@
package de.szut.casino.security.service;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@Service
public class MailConfig {
@Value("${app.mail.host}")
public String host;
@Value("${app.mail.port}")
public Integer port;
@Value("${app.mail.authentication}")
public Boolean authenticationEnabled;
@Value("${app.mail.username}")
public String username;
@Value("${app.mail.password}")
public String password;
@Value("${app.mail.from-address}")
public String fromAddress;
@Value("${app.mail.protocol}")
public String protocol;
}

View file

@ -0,0 +1,38 @@
package de.szut.casino.security.service;
import de.szut.casino.user.UserEntity;
import de.szut.casino.user.UserRepository;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Optional;
@Service
public class UserDetailsServiceImpl implements UserDetailsService {
private final UserRepository userRepository;
public UserDetailsServiceImpl(UserRepository userRepository) {
this.userRepository = userRepository;
}
@Override
public UserDetails loadUserByUsername(String usernameOrEmail) throws UsernameNotFoundException {
Optional<UserEntity> user = userRepository.findByUsername(usernameOrEmail);
if (user.isEmpty()) {
user = userRepository.findByEmail(usernameOrEmail);
}
UserEntity userEntity = user.orElseThrow(() ->
new UsernameNotFoundException("User not found with username or email: " + usernameOrEmail));
return new org.springframework.security.core.userdetails.User(
userEntity.getUsername(),
userEntity.getPassword(),
new ArrayList<>());
}
}

View file

@ -0,0 +1,20 @@
package de.szut.casino.shared.dto;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Positive;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.math.BigDecimal;
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class BetDto {
@NotNull(message = "Bet amount cannot be null")
@Positive(message = "Bet amount must be positive")
private BigDecimal betAmount;
}

View file

@ -0,0 +1,36 @@
package de.szut.casino.shared.service;
import de.szut.casino.shared.dto.BetDto;
import de.szut.casino.user.UserEntity;
import de.szut.casino.user.UserRepository;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
@Service
public class BalanceService {
private final UserRepository userRepository;
public BalanceService(UserRepository userRepository) {
this.userRepository = userRepository;
}
public boolean hasFunds(UserEntity user, BetDto betDto) {
BigDecimal balance = user.getBalance();
BigDecimal betAmount = betDto.getBetAmount();
return betAmount.compareTo(balance) <= 0;
}
public void addFunds(UserEntity user, BigDecimal amount) {
user.addBalance(amount);
this.userRepository.save(user);
}
public void subtractFunds(UserEntity user, BigDecimal amount) {
user.subtractBalance(amount);
this.userRepository.save(user);
}
}

Some files were not shown because too many files have changed in this diff Show more