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

This commit is contained in:
Jan K9f 2025-06-04 06:59:51 +00:00
commit 565420103f
No known key found for this signature in database
GPG key ID: 944223E4D46B7412
4 changed files with 552 additions and 416 deletions

View file

@ -15,96 +15,113 @@ Please refer to our [Style Guide](https://git.kjan.de/SZUT/casino/wiki/Frontend#
## Tech Stack
### Frontend
- Angular 19
- 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+
- [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
- 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
The frontend will be available at <http://localhost:4200>
### Local Stripe integration
1. Install the Stripe CLI
https://stripe.com/docs/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
```
@ -114,6 +131,7 @@ stripe listen --forward-to localhost:8080/webhook
### Postgres Management
#### Database cleanup (if needed)
```bash
cd docker
docker-compose down
@ -122,6 +140,7 @@ 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
@ -148,6 +167,7 @@ We follow semantic commit messages to maintain clear project history.
Format: `<type>(<scope>): <subject>`
Where `<type>` is one of:
- `feat`: New feature
- `fix`: Bug fix
- `docs`: Documentation changes
@ -157,6 +177,7 @@ Where `<type>` is one of:
- `chore`: Updating build tasks, etc; no production code change
Examples:
```
feat: add user balance display
fix(auth): resolve token expiration issue
@ -164,6 +185,7 @@ docs: update API documentation
```
References:
- [Conventional Commits](https://www.conventionalcommits.org/)
- [Semantic Commit Messages](https://seesparkbox.com/foundry/semantic_commit_messages)

File diff suppressed because it is too large Load diff

View file

@ -14,16 +14,16 @@
},
"private": true,
"dependencies": {
"@angular/animations": "^19.0.0",
"@angular/cdk": "~19.2.0",
"@angular/common": "^19.0.0",
"@angular/compiler": "^19.2.4",
"@angular/core": "^19.0.0",
"@angular/forms": "^19.0.0",
"@angular/platform-browser": "^19.0.0",
"@angular/platform-browser-dynamic": "^19.0.0",
"@angular/router": "^19.0.0",
"@fortawesome/angular-fontawesome": "^1.0.0",
"@angular/animations": "^20.0.0",
"@angular/cdk": "~20.0.0",
"@angular/common": "^20.0.0",
"@angular/compiler": "^20.0.0",
"@angular/core": "^20.0.0",
"@angular/forms": "^20.0.0",
"@angular/platform-browser": "^20.0.0",
"@angular/platform-browser-dynamic": "^20.0.0",
"@angular/router": "^20.0.0",
"@fortawesome/angular-fontawesome": "^2.0.0",
"@fortawesome/fontawesome-svg-core": "^6.7.2",
"@fortawesome/free-brands-svg-icons": "^6.7.2",
"@fortawesome/free-solid-svg-icons": "^6.7.2",
@ -39,12 +39,12 @@
"tslib": "^2.3.0"
},
"devDependencies": {
"@angular-devkit/build-angular": "^19.0.0",
"@angular/cli": "^19.2.5",
"@angular/compiler-cli": "^19.0.0",
"@angular/compiler-cli": "^20.0.0",
"@angular-devkit/build-angular": "^20.0.0",
"@angular/cli": "^20.0.0",
"@types/jasmine": "~5.1.0",
"angular-eslint": "19.7.1",
"eslint": "^9.25.1",
"eslint": "^9.28.0",
"jasmine-core": "~5.7.0",
"karma": "~6.4.0",
"karma-chrome-launcher": "~3.2.0",

View file

@ -1,4 +1,4 @@
import { ApplicationConfig, provideExperimentalZonelessChangeDetection } from '@angular/core';
import { ApplicationConfig, provideZonelessChangeDetection } from '@angular/core';
import { provideRouter } from '@angular/router';
import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
@ -12,7 +12,7 @@ export const appConfig: ApplicationConfig = {
provideRouter(routes),
FontAwesomeModule,
provideHttpClient(withInterceptors([httpInterceptor])),
provideExperimentalZonelessChangeDetection(),
provideZonelessChangeDetection(),
provideAnimationsAsync(),
],
};