# lucker09/dashboard-de-apostas-esportivas architecture

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

- Interactive diagram: https://gitdiagram.com/lucker09/dashboard-de-apostas-esportivas
- Repository: https://github.com/lucker09/dashboard-de-apostas-esportivas

## Overview

This is a sports-betting performance dashboard: users register or sign in, manage bankroll and betting references, record and settle bets, then review paginated history and P&L/ROI/win-rate metrics. The React app presents these workflows and calls a Spring REST API; backend services enforce domain rules and repositories persist user, bet, transaction, bookmaker, and tag data in MySQL. Authentication uses JWT. The README documents the broader feature set; only selected frontend and backend implementations were sampled, so some links reflect documented endpoints rather than inspected call sites.

Main entry points: [`bets-frontend/src/services/api.js`](https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-frontend/src/services/api.js) (API client), [`bets-backend/src/main/java/com/dashboard/bets_dashboard/repository/ApostaRepository.java`](https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-backend/src/main/java/com/dashboard/bets_dashboard/repository/ApostaRepository.java) (Repositories), [`bets-frontend/src/App.jsx`](https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-frontend/src/App.jsx) (App and routes), [`bets-backend/src/main/java/com/dashboard/bets_dashboard/controller/AuthController.java`](https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-backend/src/main/java/com/dashboard/bets_dashboard/controller/AuthController.java) (Auth endpoints)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web application"]
  node_app["App and routes<br/>[App.jsx]"]
  node_authcontext["Auth context<br/>[AuthContext.jsx]"]
  node_betstable["Bet history<br/>[BetsTable.jsx]"]
  node_stats["Statistics view<br/>[StatsDashboard.jsx]"]
  node_manage["Casas and tags"]
  node_apiservices["API client<br/>[api.js]"]
end

subgraph group_identity["Identity and access"]
  node_authservice["Auth service<br/>[authService.js]"]
  node_authcontroller["Auth endpoints"]
  node_usercontroller["User endpoints"]
  node_userservice["User service<br/>[UserService.java]"]
  node_jwt["JWT utilities<br/>[JwtUtil.java]"]
  node_jwtfilter["JWT filter"]
  node_security["Security config"]
end

subgraph group_betting["Betting domain"]
  node_betsservice["Bet service<br/>[betsService.js]"]
  node_betcontroller["Bet endpoints"]
  node_betservice["Bet rules and metrics<br/>[ApostaService.java]"]
  node_repositories["Repositories"]
end

subgraph group_account["Account and references"]
  node_refservices["Reference services<br/>[casasService.js]"]
  node_transservice["Transaction service"]
  node_transcontroller["Transaction endpoints"]
  node_transbackend["Transaction rules"]
  node_casaservice["Bookmaker service"]
  node_tagservice["Tag service<br/>[TagService.java]"]
end

node_bettor(("Bettor"))
node_mysql[("MySQL")]

node_bettor -->|"uses"| node_app
node_app -->|"routes"| node_betstable
node_app -->|"routes"| node_stats
node_app -->|"routes"| node_manage
node_app -->|"checks access"| node_authcontext
node_betstable -->|"loads bets"| node_betsservice
node_stats -->|"loads metrics"| node_betsservice
node_manage -->|"manages references"| node_refservices
node_apiservices -->|"HTTP requests"| node_authcontroller
node_apiservices -->|"HTTP requests"| node_betcontroller
node_apiservices -->|"HTTP requests"| node_transcontroller
node_authservice -->|"sends requests"| node_apiservices
node_betsservice -->|"sends requests"| node_apiservices
node_refservices -->|"sends requests"| node_apiservices
node_transservice -->|"sends requests"| node_apiservices
node_bettor -->|"signs in"| node_authservice
node_authcontroller -->|"creates token"| node_jwt
node_authcontroller -->|"registers user"| node_userservice
node_usercontroller -->|"manages profile"| node_userservice
node_security -->|"configures"| node_jwtfilter
node_jwtfilter -->|"validates token"| node_jwt
node_betcontroller -->|"handles bet actions"| node_betservice
node_transcontroller -->|"handles transactions"| node_transbackend
node_betservice -->|"reads and writes"| node_repositories
node_transbackend -->|"reads and writes"| node_repositories
node_userservice -->|"persists users"| node_repositories
node_casaservice -->|"persists bookmakers"| node_repositories
node_tagservice -->|"persists tags"| node_repositories
node_repositories -->|"stores records"| node_mysql

click node_app "https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-frontend/src/App.jsx"
click node_authcontext "https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-frontend/src/context/AuthContext.jsx"
click node_betstable "https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-frontend/src/components/BetsTable.jsx"
click node_stats "https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-frontend/src/components/StatsDashboard.jsx"
click node_manage "https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-frontend/src/components/GerirCasasETags.jsx"
click node_apiservices "https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-frontend/src/services/api.js"
click node_authservice "https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-frontend/src/services/authService.js"
click node_betsservice "https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-frontend/src/services/betsService.js"
click node_refservices "https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-frontend/src/services/casasService.js"
click node_transservice "https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-frontend/src/services/transacaoService.js"
click node_authcontroller "https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-backend/src/main/java/com/dashboard/bets_dashboard/controller/AuthController.java"
click node_usercontroller "https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-backend/src/main/java/com/dashboard/bets_dashboard/controller/UserController.java"
click node_userservice "https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-backend/src/main/java/com/dashboard/bets_dashboard/service/UserService.java"
click node_jwt "https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-backend/src/main/java/com/dashboard/bets_dashboard/security/JwtUtil.java"
click node_jwtfilter "https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-backend/src/main/java/com/dashboard/bets_dashboard/security/JwtAuthenticationFilter.java"
click node_security "https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-backend/src/main/java/com/dashboard/bets_dashboard/config/SecurityConfig.java"
click node_betcontroller "https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-backend/src/main/java/com/dashboard/bets_dashboard/controller/ApostaController.java"
click node_betservice "https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-backend/src/main/java/com/dashboard/bets_dashboard/service/ApostaService.java"
click node_transcontroller "https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-backend/src/main/java/com/dashboard/bets_dashboard/controller/TransacaoController.java"
click node_transbackend "https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-backend/src/main/java/com/dashboard/bets_dashboard/service/TransacaoService.java"
click node_casaservice "https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-backend/src/main/java/com/dashboard/bets_dashboard/service/CasaDeApostaService.java"
click node_tagservice "https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-backend/src/main/java/com/dashboard/bets_dashboard/service/TagService.java"
click node_repositories "https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-backend/src/main/java/com/dashboard/bets_dashboard/repository/ApostaRepository.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_app,node_authcontext,node_betstable,node_stats,node_manage,node_apiservices toneBlue
class node_authservice,node_authcontroller,node_usercontroller,node_userservice,node_jwt,node_jwtfilter,node_security,node_mysql toneAmber
class node_betsservice,node_betcontroller,node_betservice,node_repositories toneMint
class node_refservices,node_transservice,node_transcontroller,node_transbackend,node_casaservice,node_tagservice toneRose
class node_bettor toneIndigo
```

## Components

### Web application

- [App and routes](https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-frontend/src/App.jsx): `bets-frontend/src/App.jsx`
- [Auth context](https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-frontend/src/context/AuthContext.jsx): `bets-frontend/src/context/AuthContext.jsx`
- [Bet history](https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-frontend/src/components/BetsTable.jsx): `bets-frontend/src/components/BetsTable.jsx`
- [Statistics view](https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-frontend/src/components/StatsDashboard.jsx): `bets-frontend/src/components/StatsDashboard.jsx`
- [Casas and tags](https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-frontend/src/components/GerirCasasETags.jsx): `bets-frontend/src/components/GerirCasasETags.jsx`
- [API client](https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-frontend/src/services/api.js): `bets-frontend/src/services/api.js`

### Identity and access

- [Auth service](https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-frontend/src/services/authService.js): `bets-frontend/src/services/authService.js`
- [Auth endpoints](https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-backend/src/main/java/com/dashboard/bets_dashboard/controller/AuthController.java): `bets-backend/src/main/java/com/dashboard/bets_dashboard/controller/AuthController.java`
- [User endpoints](https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-backend/src/main/java/com/dashboard/bets_dashboard/controller/UserController.java): `bets-backend/src/main/java/com/dashboard/bets_dashboard/controller/UserController.java`
- [User service](https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-backend/src/main/java/com/dashboard/bets_dashboard/service/UserService.java): `bets-backend/src/main/java/com/dashboard/bets_dashboard/service/UserService.java`
- [JWT utilities](https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-backend/src/main/java/com/dashboard/bets_dashboard/security/JwtUtil.java): `bets-backend/src/main/java/com/dashboard/bets_dashboard/security/JwtUtil.java`
- [JWT filter](https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-backend/src/main/java/com/dashboard/bets_dashboard/security/JwtAuthenticationFilter.java): `bets-backend/src/main/java/com/dashboard/bets_dashboard/security/JwtAuthenticationFilter.java`
- [Security config](https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-backend/src/main/java/com/dashboard/bets_dashboard/config/SecurityConfig.java): `bets-backend/src/main/java/com/dashboard/bets_dashboard/config/SecurityConfig.java`

### Betting domain

- [Bet service](https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-frontend/src/services/betsService.js): `bets-frontend/src/services/betsService.js`
- [Bet endpoints](https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-backend/src/main/java/com/dashboard/bets_dashboard/controller/ApostaController.java): `bets-backend/src/main/java/com/dashboard/bets_dashboard/controller/ApostaController.java`
- [Bet rules and metrics](https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-backend/src/main/java/com/dashboard/bets_dashboard/service/ApostaService.java): `bets-backend/src/main/java/com/dashboard/bets_dashboard/service/ApostaService.java`
- [Repositories](https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-backend/src/main/java/com/dashboard/bets_dashboard/repository/ApostaRepository.java): `bets-backend/src/main/java/com/dashboard/bets_dashboard/repository/ApostaRepository.java`

### Account and references

- [Reference services](https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-frontend/src/services/casasService.js): `bets-frontend/src/services/casasService.js`
- [Transaction service](https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-frontend/src/services/transacaoService.js): `bets-frontend/src/services/transacaoService.js`
- [Transaction endpoints](https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-backend/src/main/java/com/dashboard/bets_dashboard/controller/TransacaoController.java): `bets-backend/src/main/java/com/dashboard/bets_dashboard/controller/TransacaoController.java`
- [Transaction rules](https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-backend/src/main/java/com/dashboard/bets_dashboard/service/TransacaoService.java): `bets-backend/src/main/java/com/dashboard/bets_dashboard/service/TransacaoService.java`
- [Bookmaker service](https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-backend/src/main/java/com/dashboard/bets_dashboard/service/CasaDeApostaService.java): `bets-backend/src/main/java/com/dashboard/bets_dashboard/service/CasaDeApostaService.java`
- [Tag service](https://github.com/lucker09/dashboard-de-apostas-esportivas/blob/main/bets-backend/src/main/java/com/dashboard/bets_dashboard/service/TagService.java): `bets-backend/src/main/java/com/dashboard/bets_dashboard/service/TagService.java`

### Other components

- **Bettor**
- **MySQL**

## Connections

- Bettor → App and routes: uses
- App and routes → Bet history: routes
- App and routes → Statistics view: routes
- App and routes → Casas and tags: routes
- App and routes → Auth context: checks access
- Bet history → Bet service: loads bets
- Statistics view → Bet service: loads metrics
- Casas and tags → Reference services: manages references
- API client → Auth endpoints: HTTP requests
- API client → Bet endpoints: HTTP requests
- API client → Transaction endpoints: HTTP requests
- Auth service → API client: sends requests
- Bet service → API client: sends requests
- Reference services → API client: sends requests
- Transaction service → API client: sends requests
- Bettor → Auth service: signs in
- Auth endpoints → JWT utilities: creates token
- Auth endpoints → User service: registers user
- User endpoints → User service: manages profile
- Security config → JWT filter: configures
- JWT filter → JWT utilities: validates token
- Bet endpoints → Bet rules and metrics: handles bet actions
- Transaction endpoints → Transaction rules: handles transactions
- Bet rules and metrics → Repositories: reads and writes
- Transaction rules → Repositories: reads and writes
- User service → Repositories: persists users
- Bookmaker service → Repositories: persists bookmakers
- Tag service → Repositories: persists tags
- Repositories → MySQL: stores records
