# bekmax/order-system architecture

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

## Overview

This repository is a small Kafka-based order-processing system split across four Spring services. Its principal workflow generates orders, publishes them to Kafka, consumes and persists them, then publishes a processing status. A separate notification consumer and logging service are also present. The README is empty; links for unsampled listener/configuration behavior are limited to what the tree and sampled code establish.

Main entry points: [`order-generator/src/main/kotlin/com/order/generator/infra/service/OrderService.kt`](https://github.com/bekmax/order-system/blob/master/order-generator/src/main/kotlin/com/order/generator/infra/service/OrderService.kt) (Order generator), [`order-handler/src/main/kotlin/com/handler/domain/service/OrderHandlerService.kt`](https://github.com/bekmax/order-system/blob/master/order-handler/src/main/kotlin/com/handler/domain/service/OrderHandlerService.kt) (Order handler), [`order-generator/src/main/kotlin/com/order/generator/domain/port/KafkaProducerPort.kt`](https://github.com/bekmax/order-system/blob/master/order-generator/src/main/kotlin/com/order/generator/domain/port/KafkaProducerPort.kt) (Producer port), [`order-generator/src/main/kotlin/com/order/generator/domain/service/KafkaProducerService.kt`](https://github.com/bekmax/order-system/blob/master/order-generator/src/main/kotlin/com/order/generator/domain/service/KafkaProducerService.kt) (Kafka producer)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_generation["Order generation"]
  node_order_service["Order generator<br/>[OrderService.kt]"]
  node_order_model["Order model<br/>[Order.kt]"]
  node_producer_port["Producer port"]
  node_producer_service["Kafka producer"]
end

subgraph group_processing["Order processing"]
  node_order_consumer["Order consumer"]
  node_handler_service["Order handler"]
  node_handler_port["Handler port"]
  node_repository_port["Repository port"]
  node_repository_adapter["Repository adapter"]
  node_order_store[("Order database")]
end

subgraph group_consumers["Event consumers"]
  node_notification_listener["Notification listener"]
end

subgraph group_logging["Logging service"]
  node_logging_listener["Kafka log listener"]
  node_log_writer_port["File writer port"]
  node_log_writer["File log writer"]
end

node_runtime(("Application runtime"))
node_broker["Kafka broker"]
node_log_file["Log file"]

node_runtime -->|"starts"| node_order_service
node_order_service -->|"creates"| node_order_model
node_order_service -->|"sends order"| node_producer_port
node_producer_port -->|"implemented by"| node_producer_service
node_producer_service -->|"publishes order"| node_broker
node_broker -->|"delivers order"| node_order_consumer
node_order_consumer -->|"handles order"| node_handler_port
node_handler_port -->|"implemented by"| node_handler_service
node_handler_service -->|"registers order"| node_repository_port
node_repository_port -->|"implemented by"| node_repository_adapter
node_repository_adapter -->|"saves order"| node_order_store
node_handler_service -->|"publishes status"| node_broker
node_broker -->|"delivers notification"| node_notification_listener
node_broker -->|"delivers event"| node_logging_listener
node_log_writer_port -->|"implemented by"| node_log_writer
node_log_writer -->|"appends text"| node_log_file

click node_order_service "https://github.com/bekmax/order-system/blob/master/order-generator/src/main/kotlin/com/order/generator/infra/service/OrderService.kt"
click node_order_model "https://github.com/bekmax/order-system/blob/master/order-generator/src/main/kotlin/com/order/generator/domain/model/Order.kt"
click node_producer_port "https://github.com/bekmax/order-system/blob/master/order-generator/src/main/kotlin/com/order/generator/domain/port/KafkaProducerPort.kt"
click node_producer_service "https://github.com/bekmax/order-system/blob/master/order-generator/src/main/kotlin/com/order/generator/domain/service/KafkaProducerService.kt"
click node_order_consumer "https://github.com/bekmax/order-system/blob/master/order-handler/src/main/kotlin/com/handler/infra/kafka/OrderConsumerService.kt"
click node_handler_service "https://github.com/bekmax/order-system/blob/master/order-handler/src/main/kotlin/com/handler/domain/service/OrderHandlerService.kt"
click node_handler_port "https://github.com/bekmax/order-system/blob/master/order-handler/src/main/kotlin/com/handler/domain/port/OrderHandlerPort.kt"
click node_repository_port "https://github.com/bekmax/order-system/blob/master/order-handler/src/main/kotlin/com/handler/domain/port/OrderRepositoryPort.kt"
click node_repository_adapter "https://github.com/bekmax/order-system/blob/master/order-handler/src/main/kotlin/com/handler/infra/persistence/repository/OrderRepositoryAdapter.kt"
click node_notification_listener "https://github.com/bekmax/order-system/blob/master/notification/src/main/kotlin/com/notification/infra/listener/KafkaEventListenerService.kt"
click node_logging_listener "https://github.com/bekmax/order-system/blob/master/logging/src/main/kotlin/com/logging/infra/listener/KafkaEventListener.kt"
click node_log_writer_port "https://github.com/bekmax/order-system/blob/master/logging/src/main/kotlin/com/logging/domain/port/LogToFileWriterServicePort.kt"
click node_log_writer "https://github.com/bekmax/order-system/blob/master/logging/src/main/kotlin/com/logging/domain/service/LogToFileWriterService.kt"

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_order_service,node_order_model,node_producer_port,node_producer_service toneBlue
class node_order_consumer,node_handler_service,node_handler_port,node_repository_port,node_repository_adapter,node_order_store toneAmber
class node_notification_listener toneMint
class node_logging_listener,node_log_writer_port,node_log_writer toneRose
class node_runtime,node_broker,node_log_file toneIndigo
```

## Components

### Order generation

- [Order generator](https://github.com/bekmax/order-system/blob/master/order-generator/src/main/kotlin/com/order/generator/infra/service/OrderService.kt): `order-generator/src/main/kotlin/com/order/generator/infra/service/OrderService.kt`
- [Order model](https://github.com/bekmax/order-system/blob/master/order-generator/src/main/kotlin/com/order/generator/domain/model/Order.kt): `order-generator/src/main/kotlin/com/order/generator/domain/model/Order.kt`
- [Producer port](https://github.com/bekmax/order-system/blob/master/order-generator/src/main/kotlin/com/order/generator/domain/port/KafkaProducerPort.kt): `order-generator/src/main/kotlin/com/order/generator/domain/port/KafkaProducerPort.kt`
- [Kafka producer](https://github.com/bekmax/order-system/blob/master/order-generator/src/main/kotlin/com/order/generator/domain/service/KafkaProducerService.kt): `order-generator/src/main/kotlin/com/order/generator/domain/service/KafkaProducerService.kt`

### Order processing

- [Order consumer](https://github.com/bekmax/order-system/blob/master/order-handler/src/main/kotlin/com/handler/infra/kafka/OrderConsumerService.kt): `order-handler/src/main/kotlin/com/handler/infra/kafka/OrderConsumerService.kt`
- [Order handler](https://github.com/bekmax/order-system/blob/master/order-handler/src/main/kotlin/com/handler/domain/service/OrderHandlerService.kt): `order-handler/src/main/kotlin/com/handler/domain/service/OrderHandlerService.kt`
- [Handler port](https://github.com/bekmax/order-system/blob/master/order-handler/src/main/kotlin/com/handler/domain/port/OrderHandlerPort.kt): `order-handler/src/main/kotlin/com/handler/domain/port/OrderHandlerPort.kt`
- [Repository port](https://github.com/bekmax/order-system/blob/master/order-handler/src/main/kotlin/com/handler/domain/port/OrderRepositoryPort.kt): `order-handler/src/main/kotlin/com/handler/domain/port/OrderRepositoryPort.kt`
- [Repository adapter](https://github.com/bekmax/order-system/blob/master/order-handler/src/main/kotlin/com/handler/infra/persistence/repository/OrderRepositoryAdapter.kt): `order-handler/src/main/kotlin/com/handler/infra/persistence/repository/OrderRepositoryAdapter.kt`
- **Order database**

### Event consumers

- [Notification listener](https://github.com/bekmax/order-system/blob/master/notification/src/main/kotlin/com/notification/infra/listener/KafkaEventListenerService.kt): `notification/src/main/kotlin/com/notification/infra/listener/KafkaEventListenerService.kt`

### Logging service

- [Kafka log listener](https://github.com/bekmax/order-system/blob/master/logging/src/main/kotlin/com/logging/infra/listener/KafkaEventListener.kt): `logging/src/main/kotlin/com/logging/infra/listener/KafkaEventListener.kt`
- [File writer port](https://github.com/bekmax/order-system/blob/master/logging/src/main/kotlin/com/logging/domain/port/LogToFileWriterServicePort.kt): `logging/src/main/kotlin/com/logging/domain/port/LogToFileWriterServicePort.kt`
- [File log writer](https://github.com/bekmax/order-system/blob/master/logging/src/main/kotlin/com/logging/domain/service/LogToFileWriterService.kt): `logging/src/main/kotlin/com/logging/domain/service/LogToFileWriterService.kt`

### Other components

- **Application runtime**
- **Kafka broker**
- **Log file**

## Connections

- Application runtime → Order generator: starts
- Order generator → Order model: creates
- Order generator → Producer port: sends order
- Producer port → Kafka producer: implemented by
- Kafka producer → Kafka broker: publishes order
- Kafka broker → Order consumer: delivers order
- Order consumer → Handler port: handles order
- Handler port → Order handler: implemented by
- Order handler → Repository port: registers order
- Repository port → Repository adapter: implemented by
- Repository adapter → Order database: saves order
- Order handler → Kafka broker: publishes status
- Kafka broker → Notification listener: delivers notification
- Kafka broker → Kafka log listener: delivers event
- File writer port → File log writer: implemented by
- File log writer → Log file: appends text
