This repository has been archived on 2025-06-18. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
casino/README.md
jank 3acd131b20
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
chore: Update README.md
2025-06-04 08:41:24 +02:00

194 lines
4.3 KiB
Markdown

# Casino Gaming Platform
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>`
Where `<type>` is one of:
- `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 user balance display
fix(auth): resolve token expiration issue
docs: update API documentation
```
References:
- [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.