# mjsimo99/world-cup-2030-backend architecture

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

- Interactive diagram: https://gitdiagram.com/mjsimo99/world-cup-2030-backend
- Repository: https://github.com/mjsimo99/world-cup-2030-backend

## Overview

SatoCup appears to be a backend for managing a football cup: users and administrators authenticate, while clients can access competition, venue, team, match, and ticket functions. The tree shows REST controllers, service implementations, repositories, domain entities, and JWT security, but no README or source excerpts document their runtime interactions. The dashed links below therefore indicate likely architecture, not verified calls; the exact workflow and persistence configuration remain uncertain.

Main entry points: [`src/main/java/com/example/satocup/repository`](https://github.com/mjsimo99/world-cup-2030-backend/tree/master/src/main/java/com/example/satocup/repository) (Repositories), [`src/main/java/com/example/satocup/service/impl`](https://github.com/mjsimo99/world-cup-2030-backend/tree/master/src/main/java/com/example/satocup/service/impl) (Venue and team services), [`src/main/java/com/example/satocup/controller/AdminAuthenticationController.java`](https://github.com/mjsimo99/world-cup-2030-backend/blob/master/src/main/java/com/example/satocup/controller/AdminAuthenticationController.java) (Admin authentication), [`src/main/java/com/example/satocup/controller/ClientAuthenticationController.java`](https://github.com/mjsimo99/world-cup-2030-backend/blob/master/src/main/java/com/example/satocup/controller/ClientAuthenticationController.java) (Client authentication)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Access and security"]
  node_admin_auth["Admin authentication"]
  node_client_auth["Client authentication"]
  node_jwt_security["JWT security"]
  node_admin_api["Admin API"]
end

subgraph group_competition["Cup competition"]
  node_match_api["Match API"]
  node_team_match_api["Team-match API"]
  node_match_service["Match services"]
  node_team_match_service["Team-match services"]
end

subgraph group_venues["Venues and teams"]
  node_city_api["City API"]
  node_stadium_api["Stadium API"]
  node_team_api["Team API"]
  node_venue_services["Venue and team services"]
end

subgraph group_tickets["Clients and tickets"]
  node_client_api["Client API"]
  node_ticket_api["Ticket API"]
  node_ticket_service["Ticket services"]
end

subgraph group_data["Persistence and domain"]
  node_repositories["Repositories"]
  node_domain["Domain entities"]
  node_database[("Relational database")]
end

node_user(("User"))

node_user -.->|"authenticates"| node_admin_auth
node_user -.->|"authenticates"| node_client_auth
node_admin_auth -.->|"uses tokens"| node_jwt_security
node_client_auth -.->|"uses tokens"| node_jwt_security
node_user -.->|"requests matches"| node_match_api
node_user -.->|"requests standings"| node_team_match_api
node_user -.->|"requests cities"| node_city_api
node_user -.->|"requests venues"| node_stadium_api
node_user -.->|"requests teams"| node_team_api
node_user -.->|"requests tickets"| node_ticket_api
node_user -.->|"manages profile"| node_client_api
node_user -.->|"administers"| node_admin_api
node_match_api -.->|"delegates to"| node_match_service
node_team_match_api -.->|"delegates to"| node_team_match_service
node_city_api -.->|"delegates to"| node_venue_services
node_stadium_api -.->|"delegates to"| node_venue_services
node_team_api -.->|"delegates to"| node_venue_services
node_ticket_api -.->|"delegates to"| node_ticket_service
node_match_service -.->|"uses"| node_repositories
node_team_match_service -.->|"uses"| node_repositories
node_venue_services -.->|"uses"| node_repositories
node_ticket_service -.->|"uses"| node_repositories
node_repositories -.->|"maps data"| node_domain
node_repositories -.->|"persists data"| node_database

click node_admin_auth "https://github.com/mjsimo99/world-cup-2030-backend/blob/master/src/main/java/com/example/satocup/controller/AdminAuthenticationController.java"
click node_client_auth "https://github.com/mjsimo99/world-cup-2030-backend/blob/master/src/main/java/com/example/satocup/controller/ClientAuthenticationController.java"
click node_jwt_security "https://github.com/mjsimo99/world-cup-2030-backend/tree/master/src/main/java/com/example/satocup/security"
click node_admin_api "https://github.com/mjsimo99/world-cup-2030-backend/blob/master/src/main/java/com/example/satocup/controller/AdminController.java"
click node_match_api "https://github.com/mjsimo99/world-cup-2030-backend/blob/master/src/main/java/com/example/satocup/controller/MatchController.java"
click node_team_match_api "https://github.com/mjsimo99/world-cup-2030-backend/blob/master/src/main/java/com/example/satocup/controller/TeamMatchController.java"
click node_match_service "https://github.com/mjsimo99/world-cup-2030-backend/blob/master/src/main/java/com/example/satocup/service/impl/MatchServiceImpl.java"
click node_team_match_service "https://github.com/mjsimo99/world-cup-2030-backend/blob/master/src/main/java/com/example/satocup/service/impl/TeamMatchServiceImpl.java"
click node_city_api "https://github.com/mjsimo99/world-cup-2030-backend/blob/master/src/main/java/com/example/satocup/controller/CityController.java"
click node_stadium_api "https://github.com/mjsimo99/world-cup-2030-backend/blob/master/src/main/java/com/example/satocup/controller/StadiumController.java"
click node_team_api "https://github.com/mjsimo99/world-cup-2030-backend/blob/master/src/main/java/com/example/satocup/controller/TeamController.java"
click node_venue_services "https://github.com/mjsimo99/world-cup-2030-backend/tree/master/src/main/java/com/example/satocup/service/impl"
click node_client_api "https://github.com/mjsimo99/world-cup-2030-backend/blob/master/src/main/java/com/example/satocup/controller/ClientController.java"
click node_ticket_api "https://github.com/mjsimo99/world-cup-2030-backend/blob/master/src/main/java/com/example/satocup/controller/TicketController.java"
click node_ticket_service "https://github.com/mjsimo99/world-cup-2030-backend/blob/master/src/main/java/com/example/satocup/service/impl/TicketServiceImpl.java"
click node_repositories "https://github.com/mjsimo99/world-cup-2030-backend/tree/master/src/main/java/com/example/satocup/repository"
click node_domain "https://github.com/mjsimo99/world-cup-2030-backend/tree/master/src/main/java/com/example/satocup/model/entity"

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_admin_auth,node_client_auth,node_jwt_security,node_admin_api,node_user toneBlue
class node_match_api,node_team_match_api,node_match_service,node_team_match_service toneAmber
class node_city_api,node_stadium_api,node_team_api,node_venue_services toneMint
class node_client_api,node_ticket_api,node_ticket_service toneRose
class node_repositories,node_domain,node_database toneIndigo
```

## Components

### Access and security

- [Admin authentication](https://github.com/mjsimo99/world-cup-2030-backend/blob/master/src/main/java/com/example/satocup/controller/AdminAuthenticationController.java): `src/main/java/com/example/satocup/controller/AdminAuthenticationController.java`
- [Client authentication](https://github.com/mjsimo99/world-cup-2030-backend/blob/master/src/main/java/com/example/satocup/controller/ClientAuthenticationController.java): `src/main/java/com/example/satocup/controller/ClientAuthenticationController.java`
- [JWT security](https://github.com/mjsimo99/world-cup-2030-backend/tree/master/src/main/java/com/example/satocup/security): `src/main/java/com/example/satocup/security`
- [Admin API](https://github.com/mjsimo99/world-cup-2030-backend/blob/master/src/main/java/com/example/satocup/controller/AdminController.java): `src/main/java/com/example/satocup/controller/AdminController.java`

### Cup competition

- [Match API](https://github.com/mjsimo99/world-cup-2030-backend/blob/master/src/main/java/com/example/satocup/controller/MatchController.java): `src/main/java/com/example/satocup/controller/MatchController.java`
- [Team-match API](https://github.com/mjsimo99/world-cup-2030-backend/blob/master/src/main/java/com/example/satocup/controller/TeamMatchController.java): `src/main/java/com/example/satocup/controller/TeamMatchController.java`
- [Match services](https://github.com/mjsimo99/world-cup-2030-backend/blob/master/src/main/java/com/example/satocup/service/impl/MatchServiceImpl.java): `src/main/java/com/example/satocup/service/impl/MatchServiceImpl.java`
- [Team-match services](https://github.com/mjsimo99/world-cup-2030-backend/blob/master/src/main/java/com/example/satocup/service/impl/TeamMatchServiceImpl.java): `src/main/java/com/example/satocup/service/impl/TeamMatchServiceImpl.java`

### Venues and teams

- [City API](https://github.com/mjsimo99/world-cup-2030-backend/blob/master/src/main/java/com/example/satocup/controller/CityController.java): `src/main/java/com/example/satocup/controller/CityController.java`
- [Stadium API](https://github.com/mjsimo99/world-cup-2030-backend/blob/master/src/main/java/com/example/satocup/controller/StadiumController.java): `src/main/java/com/example/satocup/controller/StadiumController.java`
- [Team API](https://github.com/mjsimo99/world-cup-2030-backend/blob/master/src/main/java/com/example/satocup/controller/TeamController.java): `src/main/java/com/example/satocup/controller/TeamController.java`
- [Venue and team services](https://github.com/mjsimo99/world-cup-2030-backend/tree/master/src/main/java/com/example/satocup/service/impl): `src/main/java/com/example/satocup/service/impl`

### Clients and tickets

- [Client API](https://github.com/mjsimo99/world-cup-2030-backend/blob/master/src/main/java/com/example/satocup/controller/ClientController.java): `src/main/java/com/example/satocup/controller/ClientController.java`
- [Ticket API](https://github.com/mjsimo99/world-cup-2030-backend/blob/master/src/main/java/com/example/satocup/controller/TicketController.java): `src/main/java/com/example/satocup/controller/TicketController.java`
- [Ticket services](https://github.com/mjsimo99/world-cup-2030-backend/blob/master/src/main/java/com/example/satocup/service/impl/TicketServiceImpl.java): `src/main/java/com/example/satocup/service/impl/TicketServiceImpl.java`

### Persistence and domain

- [Repositories](https://github.com/mjsimo99/world-cup-2030-backend/tree/master/src/main/java/com/example/satocup/repository): `src/main/java/com/example/satocup/repository`
- [Domain entities](https://github.com/mjsimo99/world-cup-2030-backend/tree/master/src/main/java/com/example/satocup/model/entity): `src/main/java/com/example/satocup/model/entity`
- **Relational database**

### Other components

- **User**

## Connections

- User → Admin authentication: authenticates
- User → Client authentication: authenticates
- Admin authentication → JWT security: uses tokens
- Client authentication → JWT security: uses tokens
- User → Match API: requests matches
- User → Team-match API: requests standings
- User → City API: requests cities
- User → Stadium API: requests venues
- User → Team API: requests teams
- User → Ticket API: requests tickets
- User → Client API: manages profile
- User → Admin API: administers
- Match API → Match services: delegates to
- Team-match API → Team-match services: delegates to
- City API → Venue and team services: delegates to
- Stadium API → Venue and team services: delegates to
- Team API → Venue and team services: delegates to
- Ticket API → Ticket services: delegates to
- Match services → Repositories: uses
- Team-match services → Repositories: uses
- Venue and team services → Repositories: uses
- Ticket services → Repositories: uses
- Repositories → Domain entities: maps data
- Repositories → Relational database: persists data
