167 lines
No EOL
4 KiB
Markdown
167 lines
No EOL
4 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](/frontend/README.md#style-guide) 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 18
|
|
- 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
|
|
```
|
|
|
|
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. |