diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..c1a44d6 --- /dev/null +++ b/CLAUDE.md @@ -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 \ No newline at end of file diff --git a/README.md b/README.md index b98aaae..c904f8c 100644 --- a/README.md +++ b/README.md @@ -1,34 +1,153 @@ -# 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. + +![Casino Gaming Platform](/frontend/public/blackjack.webp) + +## 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 +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 + +## 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: `(): ` -`` is optional - -## Example +Where `` 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 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: +- [Conventional Commits](https://www.conventionalcommits.org/) +- [Semantic Commit Messages](https://seesparkbox.com/foundry/semantic_commit_messages) -- https://www.conventionalcommits.org/ -- https://seesparkbox.com/foundry/semantic_commit_messages -- http://karma-runner.github.io/1.0/dev/git-commit-msg.html +## License + +[License information here] \ No newline at end of file