# cx-box/cxbox architecture

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

## Overview

CXBOX CORE is a Spring Boot platform for building enterprise application backends against a fixed Cxbox-UI contract. The main workflow is a UI request handled by universal controllers, resolved to a business component and response service, then returned as data or row metadata for the UI. The repository also provides SQL-backed business components, dictionaries, metadata management, drill-down filtering, authentication, and localization. Source excerpts confirm response-service and SQL-service responsibilities; several controller and integration links are documented or structurally implied but their wiring was not sampled.

Main entry points: [`cxbox-core/src/main/java/org/cxbox/core/crudma/impl/AbstractResponseService.java`](https://github.com/cx-box/cxbox/blob/main/cxbox-core/src/main/java/org/cxbox/core/crudma/impl/AbstractResponseService.java) (Response service), [`cxbox-core/src/main/java/org/cxbox/core/controller`](https://github.com/cx-box/cxbox/tree/main/cxbox-core/src/main/java/org/cxbox/core/controller) (Universal controllers), [`cxbox-core/src/main/java/org/cxbox/core/crudma/bc/BusinessComponent.java`](https://github.com/cx-box/cxbox/blob/main/cxbox-core/src/main/java/org/cxbox/core/crudma/bc/BusinessComponent.java) (Business component), [`cxbox-starters/cxbox-starter-sqlbc/src/main/java/org/cxbox/sqlbc/crudma/SqlCrudmaService.java`](https://github.com/cx-box/cxbox/blob/main/cxbox-starters/cxbox-starter-sqlbc/src/main/java/org/cxbox/sqlbc/crudma/SqlCrudmaService.java) (SQL business components)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_request["Request handling"]
  node_controllers["Universal controllers"]
  node_business_component["Business component"]
end

subgraph group_services["Business services"]
  node_crudma["CRUDMA services"]
  node_response_service["Response service"]
  node_sql_service["SQL business components"]
  node_actions["Action definitions<br/>[Actions.java]"]
  node_rowmeta["Row metadata"]
end

subgraph group_data["Data and contracts"]
  node_dao["Persistence access"]
  node_database[("Application database")]
  node_data_dto["Data response DTO"]
  node_result_page["Paged results<br/>[ResultPage.java]"]
  node_action_result["Action results"]
end

subgraph group_platform["Platform capabilities"]
  node_dictionary["Dictionary services"]
  node_linked_dictionary["Linked dictionaries"]
  node_metadata["UI metadata"]
  node_drilldown["Drill-down filtering"]
  node_security["Screen field security"]
  node_session["Session and identity"]
  node_localization["Localization<br/>[LocaleService.java]"]
  node_configuration["Platform properties"]
end

node_ui(("Cxbox UI"))

node_ui -.->|"sends requests"| node_controllers
node_controllers -.->|"resolves context"| node_business_component
node_business_component -.->|"selects service"| node_crudma
node_crudma -.->|"delegates operations"| node_response_service
node_response_service -->|"accesses entities"| node_dao
node_dao -.->|"reads and writes"| node_database
node_business_component -->|"supplies context"| node_sql_service
node_sql_service -->|"returns pages"| node_result_page
node_response_service -->|"accepts changes"| node_data_dto
node_response_service -->|"returns actions"| node_action_result
node_response_service -->|"returns lists"| node_result_page
node_response_service -->|"uses definitions"| node_actions
node_ui -->|"uses UI contract"| node_metadata
node_ui -.->|"receives row metadata"| node_rowmeta
node_sql_service -->|"fills linked metadata"| node_linked_dictionary
node_response_service -.->|"supports filtering"| node_drilldown
node_controllers -.->|"checks screen fields"| node_security
node_controllers -.->|"uses user session"| node_session
node_response_service -.->|"uses dictionaries"| node_dictionary
node_ui -.->|"uses localized labels"| node_localization
node_configuration -.->|"configures platform"| node_controllers

click node_controllers "https://github.com/cx-box/cxbox/tree/main/cxbox-core/src/main/java/org/cxbox/core/controller"
click node_business_component "https://github.com/cx-box/cxbox/blob/main/cxbox-core/src/main/java/org/cxbox/core/crudma/bc/BusinessComponent.java"
click node_crudma "https://github.com/cx-box/cxbox/tree/main/cxbox-core/src/main/java/org/cxbox/core/crudma/impl"
click node_response_service "https://github.com/cx-box/cxbox/blob/main/cxbox-core/src/main/java/org/cxbox/core/crudma/impl/AbstractResponseService.java"
click node_sql_service "https://github.com/cx-box/cxbox/blob/main/cxbox-starters/cxbox-starter-sqlbc/src/main/java/org/cxbox/sqlbc/crudma/SqlCrudmaService.java"
click node_dao "https://github.com/cx-box/cxbox/tree/main/cxbox-core/src/main/java/org/cxbox/core/dao"
click node_data_dto "https://github.com/cx-box/cxbox/blob/main/cxbox-api/src/main/java/org/cxbox/api/data/dto/DataResponseDTO.java"
click node_result_page "https://github.com/cx-box/cxbox/blob/main/cxbox-api/src/main/java/org/cxbox/api/data/ResultPage.java"
click node_action_result "https://github.com/cx-box/cxbox/blob/main/cxbox-core/src/main/java/org/cxbox/core/dto/rowmeta/ActionResultDTO.java"
click node_actions "https://github.com/cx-box/cxbox/blob/main/cxbox-core/src/main/java/org/cxbox/core/service/action/Actions.java"
click node_rowmeta "https://github.com/cx-box/cxbox/tree/main/cxbox-core/src/main/java/org/cxbox/core/service/rowmeta"
click node_dictionary "https://github.com/cx-box/cxbox/tree/main/cxbox-dictionary"
click node_linked_dictionary "https://github.com/cx-box/cxbox/blob/main/cxbox-dictionary-links/cxbox-dictionary-links-engine/src/main/java/org/cxbox/source/engine/LinkedDictionaryServiceImpl.java"
click node_metadata "https://github.com/cx-box/cxbox/blob/main/cxbox-starters/cxbox-starter-meta/src/main/java/org/cxbox/meta/metahotreload/service/MetaResourceReaderService.java"
click node_drilldown "https://github.com/cx-box/cxbox/blob/main/cxbox-core/src/main/java/org/cxbox/core/service/drilldown/filter/PlatformDrilldownFilterService.java"
click node_security "https://github.com/cx-box/cxbox/blob/main/cxbox-starters/cxbox-meta-api/src/main/java/org/cxbox/api/ExtendedDtoFieldLevelSecurityService.java"
click node_session "https://github.com/cx-box/cxbox/blob/main/cxbox-core/src/main/java/org/cxbox/core/util/session/SessionService.java"
click node_localization "https://github.com/cx-box/cxbox/blob/main/cxbox-api/src/main/java/org/cxbox/api/service/LocaleService.java"
click node_configuration "https://github.com/cx-box/cxbox/blob/main/cxbox-api/src/main/java/org/cxbox/api/config/CxboxBeanProperties.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_controllers,node_business_component,node_ui toneBlue
class node_crudma,node_response_service,node_sql_service,node_actions,node_rowmeta toneAmber
class node_dao,node_database,node_data_dto,node_result_page,node_action_result toneMint
class node_dictionary,node_linked_dictionary,node_metadata,node_drilldown,node_security,node_session,node_localization,node_configuration toneRose
```

## Components

### Request handling

- [Universal controllers](https://github.com/cx-box/cxbox/tree/main/cxbox-core/src/main/java/org/cxbox/core/controller): `cxbox-core/src/main/java/org/cxbox/core/controller`
- [Business component](https://github.com/cx-box/cxbox/blob/main/cxbox-core/src/main/java/org/cxbox/core/crudma/bc/BusinessComponent.java): `cxbox-core/src/main/java/org/cxbox/core/crudma/bc/BusinessComponent.java`

### Business services

- [CRUDMA services](https://github.com/cx-box/cxbox/tree/main/cxbox-core/src/main/java/org/cxbox/core/crudma/impl): `cxbox-core/src/main/java/org/cxbox/core/crudma/impl`
- [Response service](https://github.com/cx-box/cxbox/blob/main/cxbox-core/src/main/java/org/cxbox/core/crudma/impl/AbstractResponseService.java): `cxbox-core/src/main/java/org/cxbox/core/crudma/impl/AbstractResponseService.java`
- [SQL business components](https://github.com/cx-box/cxbox/blob/main/cxbox-starters/cxbox-starter-sqlbc/src/main/java/org/cxbox/sqlbc/crudma/SqlCrudmaService.java): `cxbox-starters/cxbox-starter-sqlbc/src/main/java/org/cxbox/sqlbc/crudma/SqlCrudmaService.java`
- [Action definitions](https://github.com/cx-box/cxbox/blob/main/cxbox-core/src/main/java/org/cxbox/core/service/action/Actions.java): `cxbox-core/src/main/java/org/cxbox/core/service/action/Actions.java`
- [Row metadata](https://github.com/cx-box/cxbox/tree/main/cxbox-core/src/main/java/org/cxbox/core/service/rowmeta): `cxbox-core/src/main/java/org/cxbox/core/service/rowmeta`

### Data and contracts

- [Persistence access](https://github.com/cx-box/cxbox/tree/main/cxbox-core/src/main/java/org/cxbox/core/dao): `cxbox-core/src/main/java/org/cxbox/core/dao`
- **Application database**
- [Data response DTO](https://github.com/cx-box/cxbox/blob/main/cxbox-api/src/main/java/org/cxbox/api/data/dto/DataResponseDTO.java): `cxbox-api/src/main/java/org/cxbox/api/data/dto/DataResponseDTO.java`
- [Paged results](https://github.com/cx-box/cxbox/blob/main/cxbox-api/src/main/java/org/cxbox/api/data/ResultPage.java): `cxbox-api/src/main/java/org/cxbox/api/data/ResultPage.java`
- [Action results](https://github.com/cx-box/cxbox/blob/main/cxbox-core/src/main/java/org/cxbox/core/dto/rowmeta/ActionResultDTO.java): `cxbox-core/src/main/java/org/cxbox/core/dto/rowmeta/ActionResultDTO.java`

### Platform capabilities

- [Dictionary services](https://github.com/cx-box/cxbox/tree/main/cxbox-dictionary): `cxbox-dictionary`
- [Linked dictionaries](https://github.com/cx-box/cxbox/blob/main/cxbox-dictionary-links/cxbox-dictionary-links-engine/src/main/java/org/cxbox/source/engine/LinkedDictionaryServiceImpl.java): `cxbox-dictionary-links/cxbox-dictionary-links-engine/src/main/java/org/cxbox/source/engine/LinkedDictionaryServiceImpl.java`
- [UI metadata](https://github.com/cx-box/cxbox/blob/main/cxbox-starters/cxbox-starter-meta/src/main/java/org/cxbox/meta/metahotreload/service/MetaResourceReaderService.java): `cxbox-starters/cxbox-starter-meta/src/main/java/org/cxbox/meta/metahotreload/service/MetaResourceReaderService.java`
- [Drill-down filtering](https://github.com/cx-box/cxbox/blob/main/cxbox-core/src/main/java/org/cxbox/core/service/drilldown/filter/PlatformDrilldownFilterService.java): `cxbox-core/src/main/java/org/cxbox/core/service/drilldown/filter/PlatformDrilldownFilterService.java`
- [Screen field security](https://github.com/cx-box/cxbox/blob/main/cxbox-starters/cxbox-meta-api/src/main/java/org/cxbox/api/ExtendedDtoFieldLevelSecurityService.java): `cxbox-starters/cxbox-meta-api/src/main/java/org/cxbox/api/ExtendedDtoFieldLevelSecurityService.java`
- [Session and identity](https://github.com/cx-box/cxbox/blob/main/cxbox-core/src/main/java/org/cxbox/core/util/session/SessionService.java): `cxbox-core/src/main/java/org/cxbox/core/util/session/SessionService.java`
- [Localization](https://github.com/cx-box/cxbox/blob/main/cxbox-api/src/main/java/org/cxbox/api/service/LocaleService.java): `cxbox-api/src/main/java/org/cxbox/api/service/LocaleService.java`
- [Platform properties](https://github.com/cx-box/cxbox/blob/main/cxbox-api/src/main/java/org/cxbox/api/config/CxboxBeanProperties.java): `cxbox-api/src/main/java/org/cxbox/api/config/CxboxBeanProperties.java`

### Other components

- **Cxbox UI**

## Connections

- Cxbox UI → Universal controllers: sends requests (evidence: `README.md`)
- Universal controllers → Business component: resolves context (evidence: `cxbox-core/src/main/java/org/cxbox/core/crudma/bc/BusinessComponent.java`)
- Business component → CRUDMA services: selects service (evidence: `cxbox-core/src/main/java/org/cxbox/core/crudma/impl/AbstractResponseService.java`)
- CRUDMA services → Response service: delegates operations
- Response service → Persistence access: accesses entities (evidence: `cxbox-core/src/main/java/org/cxbox/core/crudma/impl/AbstractResponseService.java`)
- Persistence access → Application database: reads and writes
- Business component → SQL business components: supplies context (evidence: `cxbox-starters/cxbox-starter-sqlbc/src/main/java/org/cxbox/sqlbc/crudma/SqlCrudmaService.java`)
- SQL business components → Paged results: returns pages (evidence: `cxbox-starters/cxbox-starter-sqlbc/src/main/java/org/cxbox/sqlbc/crudma/SqlCrudmaService.java`)
- Response service → Data response DTO: accepts changes (evidence: `cxbox-core/src/main/java/org/cxbox/core/crudma/impl/AbstractResponseService.java`)
- Response service → Action results: returns actions (evidence: `cxbox-core/src/main/java/org/cxbox/core/crudma/impl/AbstractResponseService.java`)
- Response service → Paged results: returns lists (evidence: `cxbox-core/src/main/java/org/cxbox/core/crudma/impl/AbstractResponseService.java`)
- Response service → Action definitions: uses definitions (evidence: `cxbox-core/src/main/java/org/cxbox/core/crudma/impl/AbstractResponseService.java`)
- Cxbox UI → UI metadata: uses UI contract (evidence: `README.md`)
- Cxbox UI → Row metadata: receives row metadata
- SQL business components → Linked dictionaries: fills linked metadata (evidence: `cxbox-starters/cxbox-starter-sqlbc/src/main/java/org/cxbox/sqlbc/crudma/SqlCrudmaService.java`)
- Response service → Drill-down filtering: supports filtering
- Universal controllers → Screen field security: checks screen fields
- Universal controllers → Session and identity: uses user session (evidence: `cxbox-core/src/main/java/org/cxbox/core/util/session/SessionService.java`)
- Response service → Dictionary services: uses dictionaries
- Cxbox UI → Localization: uses localized labels
- Platform properties → Universal controllers: configures platform
