# barabol/pewniaczekbetback architecture

> Architecture diagram of the GitHub repository barabol/pewniaczekbetback, 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/barabol/pewniaczekbetback
- Repository: https://github.com/barabol/pewniaczekbetback

## Overview

PewniaczekBet is a sports-betting backend. Users place prediction, exact-score, and match-winner bets; the services debit balances and record wagers, while scheduled settlement evaluates outcomes and credits winnings. Separate workflows cover account access and social profiles, payment top-ups through Stripe, and worker-managed games and betting markets. The graph follows sampled service calls where available; controller wiring for unsampled areas and some repository interactions is inferred from names and imports, so uncertain links are omitted.

Main entry points: [`back/app/src/main/java/com/pewniaczekbet/services/PaymentService.java`](https://github.com/barabol/pewniaczekbetback/blob/main/back/app/src/main/java/com/pewniaczekbet/services/PaymentService.java) (Payment service), [`back/app/src/main/java/com/pewniaczekbet/model/dao/UserRepository.java`](https://github.com/barabol/pewniaczekbetback/blob/main/back/app/src/main/java/com/pewniaczekbet/model/dao/UserRepository.java) (User repository), [`back/app/src/main/java/com/pewniaczekbet/services/BetService.java`](https://github.com/barabol/pewniaczekbetback/blob/main/back/app/src/main/java/com/pewniaczekbet/services/BetService.java) (Bet service), [`back/app/src/main/java/com/pewniaczekbet/services/WorkerService.java`](https://github.com/barabol/pewniaczekbetback/blob/main/back/app/src/main/java/com/pewniaczekbet/services/WorkerService.java) (Worker service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API entry points"]
  node_bet_api["Bet API<br/>[BetControler.java]"]
  node_user_api["User API<br/>[UserControler.java]"]
  node_payment_api["Payment API"]
  node_worker_api["Worker API"]
end

subgraph group_betting["Betting and settlement"]
  node_bet_service["Bet service<br/>[BetService.java]"]
  node_settlement["Bet settlement"]
  node_market_repos["Bet repositories"]
  node_user_bet_repo["Placed bet repository"]
end

subgraph group_accounts["Accounts and payments"]
  node_user_service["User service<br/>[UserService.java]"]
  node_user_repo["User repository"]
  node_follow_repo["Follow repository"]
  node_payment_service["Payment service"]
  node_payment_repo["Payment repository"]
  node_status_repo["Payment status"]
  node_stripe_service["Stripe client setup<br/>[StripeService.java]"]
end

subgraph group_operations["Market operations"]
  node_worker_service["Worker service<br/>[WorkerService.java]"]
  node_game_repo["Game repository"]
  node_log_repo["Log repository<br/>[LogRepository.java]"]
end

node_bettor(("Bettor"))
node_worker(("Worker"))
node_stripe{{"Stripe"}}
node_database[("Application database")]

node_bettor -->|"submits bets"| node_bet_api
node_bet_api -->|"dispatches"| node_bet_service
node_bet_service -->|"reads markets"| node_market_repos
node_bet_service -->|"saves wagers"| node_user_bet_repo
node_bet_service -->|"updates balance"| node_user_repo
node_settlement -->|"loads due markets"| node_market_repos
node_settlement -->|"loads wagers"| node_user_bet_repo
node_settlement -->|"credits winners"| node_user_repo
node_bettor -->|"manages account"| node_user_api
node_user_api -->|"dispatches"| node_user_service
node_user_service -->|"reads and writes"| node_user_repo
node_user_service -->|"manages follows"| node_follow_repo
node_bettor -->|"tops up balance"| node_payment_api
node_payment_api -->|"dispatches"| node_payment_service
node_payment_service -->|"records payments"| node_payment_repo
node_payment_service -->|"reads status"| node_status_repo
node_payment_service -->|"loads and credits user"| node_user_repo
node_payment_service -->|"gets client"| node_stripe_service
node_payment_service -->|"creates and checks sessions"| node_stripe
node_worker -->|"manages markets"| node_worker_api
node_worker_api -->|"dispatches"| node_worker_service
node_worker_service -->|"updates games"| node_game_repo
node_worker_service -->|"saves markets"| node_market_repos
node_worker_service -->|"records actions"| node_log_repo
node_market_repos -->|"reads and writes"| node_database
node_user_bet_repo -->|"reads and writes"| node_database
node_user_repo -->|"reads and writes"| node_database
node_follow_repo -->|"reads and writes"| node_database
node_payment_repo -->|"reads and writes"| node_database
node_status_repo -->|"reads status"| node_database
node_game_repo -->|"reads and writes"| node_database
node_log_repo -->|"writes logs"| node_database

click node_bet_api "https://github.com/barabol/pewniaczekbetback/blob/main/back/app/src/main/java/com/pewniaczekbet/rest/BetControler.java"
click node_user_api "https://github.com/barabol/pewniaczekbetback/blob/main/back/app/src/main/java/com/pewniaczekbet/rest/UserControler.java"
click node_payment_api "https://github.com/barabol/pewniaczekbetback/blob/main/back/app/src/main/java/com/pewniaczekbet/rest/PaymentControler.java"
click node_worker_api "https://github.com/barabol/pewniaczekbetback/blob/main/back/app/src/main/java/com/pewniaczekbet/rest/WorkerControler.java"
click node_bet_service "https://github.com/barabol/pewniaczekbetback/blob/main/back/app/src/main/java/com/pewniaczekbet/services/BetService.java"
click node_settlement "https://github.com/barabol/pewniaczekbetback/blob/main/back/app/src/main/java/com/pewniaczekbet/other/DbIntervalHandler.java"
click node_market_repos "https://github.com/barabol/pewniaczekbetback/blob/main/back/app/src/main/java/com/pewniaczekbet/model/dao/ScoreBetRepository.java"
click node_user_bet_repo "https://github.com/barabol/pewniaczekbetback/blob/main/back/app/src/main/java/com/pewniaczekbet/model/dao/UserScoreBetRepository.java"
click node_user_service "https://github.com/barabol/pewniaczekbetback/blob/main/back/app/src/main/java/com/pewniaczekbet/services/UserService.java"
click node_user_repo "https://github.com/barabol/pewniaczekbetback/blob/main/back/app/src/main/java/com/pewniaczekbet/model/dao/UserRepository.java"
click node_follow_repo "https://github.com/barabol/pewniaczekbetback/blob/main/back/app/src/main/java/com/pewniaczekbet/model/dao/FollowerRepository.java"
click node_payment_service "https://github.com/barabol/pewniaczekbetback/blob/main/back/app/src/main/java/com/pewniaczekbet/services/PaymentService.java"
click node_payment_repo "https://github.com/barabol/pewniaczekbetback/blob/main/back/app/src/main/java/com/pewniaczekbet/model/dao/PaymentRepository.java"
click node_status_repo "https://github.com/barabol/pewniaczekbetback/blob/main/back/app/src/main/java/com/pewniaczekbet/model/dao/PaymentStatusRepository.java"
click node_stripe_service "https://github.com/barabol/pewniaczekbetback/blob/main/back/app/src/main/java/com/pewniaczekbet/services/StripeService.java"
click node_worker_service "https://github.com/barabol/pewniaczekbetback/blob/main/back/app/src/main/java/com/pewniaczekbet/services/WorkerService.java"
click node_game_repo "https://github.com/barabol/pewniaczekbetback/blob/main/back/app/src/main/java/com/pewniaczekbet/model/dao/GameRepository.java"
click node_log_repo "https://github.com/barabol/pewniaczekbetback/blob/main/back/app/src/main/java/com/pewniaczekbet/model/dao/LogRepository.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_bet_api,node_user_api,node_payment_api,node_worker_api toneBlue
class node_bet_service,node_settlement,node_market_repos,node_user_bet_repo,node_database toneAmber
class node_user_service,node_user_repo,node_follow_repo,node_payment_service,node_payment_repo,node_status_repo,node_stripe_service toneMint
class node_worker_service,node_game_repo,node_log_repo,node_worker toneRose
class node_bettor,node_stripe toneIndigo
```

## Components

### API entry points

- [Bet API](https://github.com/barabol/pewniaczekbetback/blob/main/back/app/src/main/java/com/pewniaczekbet/rest/BetControler.java): `back/app/src/main/java/com/pewniaczekbet/rest/BetControler.java`
- [User API](https://github.com/barabol/pewniaczekbetback/blob/main/back/app/src/main/java/com/pewniaczekbet/rest/UserControler.java): `back/app/src/main/java/com/pewniaczekbet/rest/UserControler.java`
- [Payment API](https://github.com/barabol/pewniaczekbetback/blob/main/back/app/src/main/java/com/pewniaczekbet/rest/PaymentControler.java): `back/app/src/main/java/com/pewniaczekbet/rest/PaymentControler.java`
- [Worker API](https://github.com/barabol/pewniaczekbetback/blob/main/back/app/src/main/java/com/pewniaczekbet/rest/WorkerControler.java): `back/app/src/main/java/com/pewniaczekbet/rest/WorkerControler.java`

### Betting and settlement

- [Bet service](https://github.com/barabol/pewniaczekbetback/blob/main/back/app/src/main/java/com/pewniaczekbet/services/BetService.java): `back/app/src/main/java/com/pewniaczekbet/services/BetService.java`
- [Bet settlement](https://github.com/barabol/pewniaczekbetback/blob/main/back/app/src/main/java/com/pewniaczekbet/other/DbIntervalHandler.java): `back/app/src/main/java/com/pewniaczekbet/other/DbIntervalHandler.java`
- [Bet repositories](https://github.com/barabol/pewniaczekbetback/blob/main/back/app/src/main/java/com/pewniaczekbet/model/dao/ScoreBetRepository.java): `back/app/src/main/java/com/pewniaczekbet/model/dao/ScoreBetRepository.java`
- [Placed bet repository](https://github.com/barabol/pewniaczekbetback/blob/main/back/app/src/main/java/com/pewniaczekbet/model/dao/UserScoreBetRepository.java): `back/app/src/main/java/com/pewniaczekbet/model/dao/UserScoreBetRepository.java`

### Accounts and payments

- [User service](https://github.com/barabol/pewniaczekbetback/blob/main/back/app/src/main/java/com/pewniaczekbet/services/UserService.java): `back/app/src/main/java/com/pewniaczekbet/services/UserService.java`
- [User repository](https://github.com/barabol/pewniaczekbetback/blob/main/back/app/src/main/java/com/pewniaczekbet/model/dao/UserRepository.java): `back/app/src/main/java/com/pewniaczekbet/model/dao/UserRepository.java`
- [Follow repository](https://github.com/barabol/pewniaczekbetback/blob/main/back/app/src/main/java/com/pewniaczekbet/model/dao/FollowerRepository.java): `back/app/src/main/java/com/pewniaczekbet/model/dao/FollowerRepository.java`
- [Payment service](https://github.com/barabol/pewniaczekbetback/blob/main/back/app/src/main/java/com/pewniaczekbet/services/PaymentService.java): `back/app/src/main/java/com/pewniaczekbet/services/PaymentService.java`
- [Payment repository](https://github.com/barabol/pewniaczekbetback/blob/main/back/app/src/main/java/com/pewniaczekbet/model/dao/PaymentRepository.java): `back/app/src/main/java/com/pewniaczekbet/model/dao/PaymentRepository.java`
- [Payment status](https://github.com/barabol/pewniaczekbetback/blob/main/back/app/src/main/java/com/pewniaczekbet/model/dao/PaymentStatusRepository.java): `back/app/src/main/java/com/pewniaczekbet/model/dao/PaymentStatusRepository.java`
- [Stripe client setup](https://github.com/barabol/pewniaczekbetback/blob/main/back/app/src/main/java/com/pewniaczekbet/services/StripeService.java): `back/app/src/main/java/com/pewniaczekbet/services/StripeService.java`

### Market operations

- [Worker service](https://github.com/barabol/pewniaczekbetback/blob/main/back/app/src/main/java/com/pewniaczekbet/services/WorkerService.java): `back/app/src/main/java/com/pewniaczekbet/services/WorkerService.java`
- [Game repository](https://github.com/barabol/pewniaczekbetback/blob/main/back/app/src/main/java/com/pewniaczekbet/model/dao/GameRepository.java): `back/app/src/main/java/com/pewniaczekbet/model/dao/GameRepository.java`
- [Log repository](https://github.com/barabol/pewniaczekbetback/blob/main/back/app/src/main/java/com/pewniaczekbet/model/dao/LogRepository.java): `back/app/src/main/java/com/pewniaczekbet/model/dao/LogRepository.java`

### Other components

- **Bettor**
- **Worker**
- **Stripe**
- **Application database**

## Connections

- Bettor → Bet API: submits bets
- Bet API → Bet service: dispatches
- Bet service → Bet repositories: reads markets
- Bet service → Placed bet repository: saves wagers
- Bet service → User repository: updates balance
- Bet settlement → Bet repositories: loads due markets
- Bet settlement → Placed bet repository: loads wagers
- Bet settlement → User repository: credits winners
- Bettor → User API: manages account
- User API → User service: dispatches
- User service → User repository: reads and writes
- User service → Follow repository: manages follows
- Bettor → Payment API: tops up balance
- Payment API → Payment service: dispatches
- Payment service → Payment repository: records payments
- Payment service → Payment status: reads status
- Payment service → User repository: loads and credits user
- Payment service → Stripe client setup: gets client
- Payment service → Stripe: creates and checks sessions
- Worker → Worker API: manages markets
- Worker API → Worker service: dispatches
- Worker service → Game repository: updates games
- Worker service → Bet repositories: saves markets
- Worker service → Log repository: records actions
- Bet repositories → Application database: reads and writes
- Placed bet repository → Application database: reads and writes
- User repository → Application database: reads and writes
- Follow repository → Application database: reads and writes
- Payment repository → Application database: reads and writes
- Payment status → Application database: reads status
- Game repository → Application database: reads and writes
- Log repository → Application database: writes logs
