# alfred-kobby/ussd-applicaton architecture

> Architecture diagram of the GitHub repository alfred-kobby/ussd-applicaton, 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/alfred-kobby/ussd-applicaton
- Repository: https://github.com/alfred-kobby/ussd-applicaton

## Overview

This is a Spring Boot USSD application. Its documented workflow starts at a controller; services provide application behavior, and models represent information. The tree also identifies Redis persistence and RabbitMQ messaging components. Source excerpts were not provided for runtime wiring, so the graph does not assume which services call which repositories or messaging components.

Main entry points: [`src/main/java/com/example/ussdapplication/controller/UssdController.java`](https://github.com/alfred-kobby/ussd-applicaton/blob/master/src/main/java/com/example/ussdapplication/controller/UssdController.java) (USSD controller)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["USSD entry"]
  node_controller["USSD controller"]
end

subgraph group_application["Application services"]
  node_request_service["Request service"]
  node_user_service["User service<br/>[UserService.java]"]
  node_request_model["USSD request<br/>[UssdRequest.java]"]
  node_response_model["USSD response<br/>[UssdResponse.java]"]
  node_session_model["USSD session<br/>[UssdSession.java]"]
end

subgraph group_integrations["State and messaging"]
  node_redis_session_repo["Session repository"]
  node_redis_repo["Redis repository"]
  node_redis[("Redis")]
  node_rabbit_config["RabbitMQ configuration"]
  node_rabbit_sender["RabbitMQ sender"]
  node_rabbit_listener["RabbitMQ listener"]
  node_rabbitmq["RabbitMQ"]
  node_transaction_repo["Transaction repository"]
  node_user_repo["User repository"]
  node_sms_utils["SMS utility<br/>[SMSUtils.java]"]
end

node_caller(("USSD caller"))

node_caller -->|"initiates"| node_controller

click node_controller "https://github.com/alfred-kobby/ussd-applicaton/blob/master/src/main/java/com/example/ussdapplication/controller/UssdController.java"
click node_request_service "https://github.com/alfred-kobby/ussd-applicaton/blob/master/src/main/java/com/example/ussdapplication/service/UssdRequestService.java"
click node_user_service "https://github.com/alfred-kobby/ussd-applicaton/blob/master/src/main/java/com/example/ussdapplication/service/UserService.java"
click node_request_model "https://github.com/alfred-kobby/ussd-applicaton/blob/master/src/main/java/com/example/ussdapplication/model/UssdRequest.java"
click node_response_model "https://github.com/alfred-kobby/ussd-applicaton/blob/master/src/main/java/com/example/ussdapplication/model/UssdResponse.java"
click node_session_model "https://github.com/alfred-kobby/ussd-applicaton/blob/master/src/main/java/com/example/ussdapplication/model/UssdSession.java"
click node_redis_session_repo "https://github.com/alfred-kobby/ussd-applicaton/blob/master/src/main/java/com/example/ussdapplication/repository/RedisUssdSessionRepository.java"
click node_redis_repo "https://github.com/alfred-kobby/ussd-applicaton/blob/master/src/main/java/com/example/ussdapplication/repository/RedisRepository.java"
click node_rabbit_config "https://github.com/alfred-kobby/ussd-applicaton/blob/master/src/main/java/com/example/ussdapplication/configuration/RabbitMqConfiguration.java"
click node_rabbit_sender "https://github.com/alfred-kobby/ussd-applicaton/blob/master/src/main/java/com/example/ussdapplication/service/RabbitMqSender.java"
click node_rabbit_listener "https://github.com/alfred-kobby/ussd-applicaton/blob/master/src/main/java/com/example/ussdapplication/service/RabbitMqListener.java"
click node_transaction_repo "https://github.com/alfred-kobby/ussd-applicaton/blob/master/src/main/java/com/example/ussdapplication/repository/TransactionRepository.java"
click node_user_repo "https://github.com/alfred-kobby/ussd-applicaton/blob/master/src/main/java/com/example/ussdapplication/repository/UserRepository.java"
click node_sms_utils "https://github.com/alfred-kobby/ussd-applicaton/blob/master/src/main/java/com/example/ussdapplication/utility/SMSUtils.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_controller toneBlue
class node_request_service,node_user_service,node_request_model,node_response_model,node_session_model toneAmber
class node_redis_session_repo,node_redis_repo,node_redis,node_rabbit_config,node_rabbit_sender,node_rabbit_listener,node_rabbitmq,node_transaction_repo,node_user_repo,node_sms_utils toneMint
class node_caller toneIndigo
```

## Components

### USSD entry

- [USSD controller](https://github.com/alfred-kobby/ussd-applicaton/blob/master/src/main/java/com/example/ussdapplication/controller/UssdController.java): `src/main/java/com/example/ussdapplication/controller/UssdController.java`

### Application services

- [Request service](https://github.com/alfred-kobby/ussd-applicaton/blob/master/src/main/java/com/example/ussdapplication/service/UssdRequestService.java): `src/main/java/com/example/ussdapplication/service/UssdRequestService.java`
- [User service](https://github.com/alfred-kobby/ussd-applicaton/blob/master/src/main/java/com/example/ussdapplication/service/UserService.java): `src/main/java/com/example/ussdapplication/service/UserService.java`
- [USSD request](https://github.com/alfred-kobby/ussd-applicaton/blob/master/src/main/java/com/example/ussdapplication/model/UssdRequest.java): `src/main/java/com/example/ussdapplication/model/UssdRequest.java`
- [USSD response](https://github.com/alfred-kobby/ussd-applicaton/blob/master/src/main/java/com/example/ussdapplication/model/UssdResponse.java): `src/main/java/com/example/ussdapplication/model/UssdResponse.java`
- [USSD session](https://github.com/alfred-kobby/ussd-applicaton/blob/master/src/main/java/com/example/ussdapplication/model/UssdSession.java): `src/main/java/com/example/ussdapplication/model/UssdSession.java`

### State and messaging

- [Session repository](https://github.com/alfred-kobby/ussd-applicaton/blob/master/src/main/java/com/example/ussdapplication/repository/RedisUssdSessionRepository.java): `src/main/java/com/example/ussdapplication/repository/RedisUssdSessionRepository.java`
- [Redis repository](https://github.com/alfred-kobby/ussd-applicaton/blob/master/src/main/java/com/example/ussdapplication/repository/RedisRepository.java): `src/main/java/com/example/ussdapplication/repository/RedisRepository.java`
- **Redis**
- [RabbitMQ configuration](https://github.com/alfred-kobby/ussd-applicaton/blob/master/src/main/java/com/example/ussdapplication/configuration/RabbitMqConfiguration.java): `src/main/java/com/example/ussdapplication/configuration/RabbitMqConfiguration.java`
- [RabbitMQ sender](https://github.com/alfred-kobby/ussd-applicaton/blob/master/src/main/java/com/example/ussdapplication/service/RabbitMqSender.java): `src/main/java/com/example/ussdapplication/service/RabbitMqSender.java`
- [RabbitMQ listener](https://github.com/alfred-kobby/ussd-applicaton/blob/master/src/main/java/com/example/ussdapplication/service/RabbitMqListener.java): `src/main/java/com/example/ussdapplication/service/RabbitMqListener.java`
- **RabbitMQ**
- [Transaction repository](https://github.com/alfred-kobby/ussd-applicaton/blob/master/src/main/java/com/example/ussdapplication/repository/TransactionRepository.java): `src/main/java/com/example/ussdapplication/repository/TransactionRepository.java`
- [User repository](https://github.com/alfred-kobby/ussd-applicaton/blob/master/src/main/java/com/example/ussdapplication/repository/UserRepository.java): `src/main/java/com/example/ussdapplication/repository/UserRepository.java`
- [SMS utility](https://github.com/alfred-kobby/ussd-applicaton/blob/master/src/main/java/com/example/ussdapplication/utility/SMSUtils.java): `src/main/java/com/example/ussdapplication/utility/SMSUtils.java`

### Other components

- **USSD caller**

## Connections

- USSD caller → USSD controller: initiates
