# yaroslav-kirsenko/casino architecture

> Architecture diagram of the GitHub repository yaroslav-kirsenko/casino, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/yaroslav-kirsenko/casino
- Repository: https://github.com/yaroslav-kirsenko/casino

## Overview

This is a web casino application with account registration/login, user and admin pages, and browser-playable roulette, slot, and crash games. The visible game workflow is player interaction → game logic and result display; one slot client also fetches and submits balance updates. The tree identifies backend controller, service, model, and repository layers, but their source was not sampled, so backend calls beyond the explicit slot HTTP requests are left unwired. The duplicated resource trees are represented only where sampled behavior supports them.

Main entry points: [`src/main/resources/templates`](https://github.com/yaroslav-kirsenko/casino/tree/master/src/main/resources/templates) (Pages and entry), [`src/main/java/com/example/Casino/Controller/AuthController.java`](https://github.com/yaroslav-kirsenko/casino/blob/master/src/main/java/com/example/Casino/Controller/AuthController.java) (Authentication routes), [`src/main/java/com/example/Casino/Repo`](https://github.com/yaroslav-kirsenko/casino/tree/master/src/main/java/com/example/Casino/Repo) (User repositories), [`src/main/resources/templates/LoginRegister`](https://github.com/yaroslav-kirsenko/casino/tree/master/src/main/resources/templates/LoginRegister) (Login and register)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web experience"]
  node_pages["Pages and entry"]
  node_authpages["Login and register"]
  node_userpages["User pages"]
  node_adminpage["Admin login<br/>[login-admin.html]"]
end

subgraph group_games["Casino games"]
  node_roulette["Roulette<br/>[roulette1.js]"]
  node_slots["Slot games"]
  node_crash["Crash game<br/>[crash1.js]"]
end

subgraph group_identity["Accounts and security"]
  node_authcontroller["Authentication routes"]
  node_users["User routes"]
  node_adminusers["Admin user routes"]
  node_authservice["Authentication service"]
  node_jwt["JWT service<br/>[JwtService.java]"]
  node_security["JWT security"]
end

subgraph group_backend["Application backend"]
  node_balanceapi["Balance requests<br/>[slot1.js]"]
  node_userdomain["User services<br/>[UserService.java]"]
  node_admindomain["Admin user service"]
  node_repositories["User repositories"]
  node_records["Account records"]
  node_app["Spring application"]
end

node_player(("Player"))

node_player -->|"opens"| node_pages
node_pages -->|"offers"| node_authpages
node_pages -->|"offers"| node_userpages
node_pages -->|"offers"| node_adminpage
node_player -->|"plays"| node_roulette
node_player -->|"plays"| node_slots
node_player -->|"plays"| node_crash
node_slots -->|"requests balance"| node_balanceapi
node_balanceapi -->|"HTTP requests"| node_users
node_authpages -->|"submits credentials"| node_authcontroller
node_adminpage -->|"admin access"| node_adminusers
node_authcontroller -->|"delegates"| node_authservice
node_authservice -->|"uses tokens"| node_jwt
node_security -->|"validates tokens"| node_jwt
node_users -->|"delegates"| node_userdomain
node_adminusers -->|"delegates"| node_admindomain
node_userdomain -->|"uses"| node_repositories
node_admindomain -->|"uses"| node_repositories
node_repositories -->|"persists"| node_records
node_app -->|"starts application"| node_authcontroller

click node_pages "https://github.com/yaroslav-kirsenko/casino/tree/master/src/main/resources/templates"
click node_authpages "https://github.com/yaroslav-kirsenko/casino/tree/master/src/main/resources/templates/LoginRegister"
click node_userpages "https://github.com/yaroslav-kirsenko/casino/tree/master/src/main/resources/templates"
click node_adminpage "https://github.com/yaroslav-kirsenko/casino/blob/master/src/main/resources/templates/LoginRegister/login-admin.html"
click node_roulette "https://github.com/yaroslav-kirsenko/casino/blob/master/src/main/resources/static/js/Roulette/roulette1.js"
click node_slots "https://github.com/yaroslav-kirsenko/casino/tree/master/src/main/resources/static/js/Slot"
click node_crash "https://github.com/yaroslav-kirsenko/casino/blob/master/src/main/resources/static/js/Crash/crash1.js"
click node_balanceapi "https://github.com/yaroslav-kirsenko/casino/blob/master/src/main/resources/static/js/Slot/slot1/slot1.js"
click node_authcontroller "https://github.com/yaroslav-kirsenko/casino/blob/master/src/main/java/com/example/Casino/Controller/AuthController.java"
click node_users "https://github.com/yaroslav-kirsenko/casino/blob/master/src/main/java/com/example/Casino/Controller/UserController.java"
click node_adminusers "https://github.com/yaroslav-kirsenko/casino/blob/master/src/main/java/com/example/Casino/Controller/AdminUserController.java"
click node_authservice "https://github.com/yaroslav-kirsenko/casino/blob/master/src/main/java/com/example/Casino/Service/AuthenticationService.java"
click node_jwt "https://github.com/yaroslav-kirsenko/casino/blob/master/src/main/java/com/example/Casino/Service/JwtService.java"
click node_security "https://github.com/yaroslav-kirsenko/casino/tree/master/src/main/java/com/example/Casino/Config"
click node_userdomain "https://github.com/yaroslav-kirsenko/casino/blob/master/src/main/java/com/example/Casino/Service/UserService.java"
click node_admindomain "https://github.com/yaroslav-kirsenko/casino/blob/master/src/main/java/com/example/Casino/Service/AdminUserService.java"
click node_repositories "https://github.com/yaroslav-kirsenko/casino/tree/master/src/main/java/com/example/Casino/Repo"
click node_records "https://github.com/yaroslav-kirsenko/casino/tree/master/src/main/java/com/example/Casino/Model"
click node_app "https://github.com/yaroslav-kirsenko/casino/blob/master/src/main/java/com/example/Casino/CasinoApplication.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_pages,node_authpages,node_userpages,node_adminpage toneBlue
class node_roulette,node_slots,node_crash toneAmber
class node_authcontroller,node_users,node_adminusers,node_authservice,node_jwt,node_security toneMint
class node_balanceapi,node_userdomain,node_admindomain,node_repositories,node_records,node_app toneRose
class node_player toneIndigo
```

## Components

### Web experience

- [Pages and entry](https://github.com/yaroslav-kirsenko/casino/tree/master/src/main/resources/templates): `src/main/resources/templates`
- [Login and register](https://github.com/yaroslav-kirsenko/casino/tree/master/src/main/resources/templates/LoginRegister): `src/main/resources/templates/LoginRegister`
- [User pages](https://github.com/yaroslav-kirsenko/casino/tree/master/src/main/resources/templates): `src/main/resources/templates`
- [Admin login](https://github.com/yaroslav-kirsenko/casino/blob/master/src/main/resources/templates/LoginRegister/login-admin.html): `src/main/resources/templates/LoginRegister/login-admin.html`

### Casino games

- [Roulette](https://github.com/yaroslav-kirsenko/casino/blob/master/src/main/resources/static/js/Roulette/roulette1.js): `src/main/resources/static/js/Roulette/roulette1.js`
- [Slot games](https://github.com/yaroslav-kirsenko/casino/tree/master/src/main/resources/static/js/Slot): `src/main/resources/static/js/Slot`
- [Crash game](https://github.com/yaroslav-kirsenko/casino/blob/master/src/main/resources/static/js/Crash/crash1.js): `src/main/resources/static/js/Crash/crash1.js`

### Accounts and security

- [Authentication routes](https://github.com/yaroslav-kirsenko/casino/blob/master/src/main/java/com/example/Casino/Controller/AuthController.java): `src/main/java/com/example/Casino/Controller/AuthController.java`
- [User routes](https://github.com/yaroslav-kirsenko/casino/blob/master/src/main/java/com/example/Casino/Controller/UserController.java): `src/main/java/com/example/Casino/Controller/UserController.java`
- [Admin user routes](https://github.com/yaroslav-kirsenko/casino/blob/master/src/main/java/com/example/Casino/Controller/AdminUserController.java): `src/main/java/com/example/Casino/Controller/AdminUserController.java`
- [Authentication service](https://github.com/yaroslav-kirsenko/casino/blob/master/src/main/java/com/example/Casino/Service/AuthenticationService.java): `src/main/java/com/example/Casino/Service/AuthenticationService.java`
- [JWT service](https://github.com/yaroslav-kirsenko/casino/blob/master/src/main/java/com/example/Casino/Service/JwtService.java): `src/main/java/com/example/Casino/Service/JwtService.java`
- [JWT security](https://github.com/yaroslav-kirsenko/casino/tree/master/src/main/java/com/example/Casino/Config): `src/main/java/com/example/Casino/Config`

### Application backend

- [Balance requests](https://github.com/yaroslav-kirsenko/casino/blob/master/src/main/resources/static/js/Slot/slot1/slot1.js): `src/main/resources/static/js/Slot/slot1/slot1.js`
- [User services](https://github.com/yaroslav-kirsenko/casino/blob/master/src/main/java/com/example/Casino/Service/UserService.java): `src/main/java/com/example/Casino/Service/UserService.java`
- [Admin user service](https://github.com/yaroslav-kirsenko/casino/blob/master/src/main/java/com/example/Casino/Service/AdminUserService.java): `src/main/java/com/example/Casino/Service/AdminUserService.java`
- [User repositories](https://github.com/yaroslav-kirsenko/casino/tree/master/src/main/java/com/example/Casino/Repo): `src/main/java/com/example/Casino/Repo`
- [Account records](https://github.com/yaroslav-kirsenko/casino/tree/master/src/main/java/com/example/Casino/Model): `src/main/java/com/example/Casino/Model`
- [Spring application](https://github.com/yaroslav-kirsenko/casino/blob/master/src/main/java/com/example/Casino/CasinoApplication.java): `src/main/java/com/example/Casino/CasinoApplication.java`

### Other components

- **Player**

## Connections

- Player → Pages and entry: opens
- Pages and entry → Login and register: offers
- Pages and entry → User pages: offers
- Pages and entry → Admin login: offers
- Player → Roulette: plays
- Player → Slot games: plays
- Player → Crash game: plays
- Slot games → Balance requests: requests balance
- Balance requests → User routes: HTTP requests
- Login and register → Authentication routes: submits credentials
- Admin login → Admin user routes: admin access
- Authentication routes → Authentication service: delegates
- Authentication service → JWT service: uses tokens
- JWT security → JWT service: validates tokens
- User routes → User services: delegates
- Admin user routes → Admin user service: delegates
- User services → User repositories: uses
- Admin user service → User repositories: uses
- User repositories → Account records: persists
- Spring application → Authentication routes: starts application
