Server Architecture
The server consists of a modular architecture that can be connected to various backends using adapters. The API is generated from OpenAPI files, as are the dart clients used by the app.
This makes it possible to define the specification independently of the code and later translate exactly this specification into code. As a result, there are no gaps or incorrect spellings. In addition, the client can be generated simultaneously with changes to the server, which enables parallel development.
Overview

Architecture Details
Layer | Classification | Description |
|---|---|---|
REST-API | API | Contains the OpenAPI specification and the generated interfaces of the API with the Spring annotations. Based on the interfaces, the API controllers are also implemented at this point, which basically call the domain. |
DTO | API and Transport | DTOs generated from the API, which are used as API models and as transport objects between the layers. |
Exceptions | Error Definition and Transport | Contains the server exceptions. These are to be regarded as equivalent to the DTOs, as they are used across all layers. |
Domain Services | Business Logic | Includes the business logic. Manages and calculates data for API output. Uses the repositories to persist data and the adapters to retrieve data. |
Domain Models | Business Logic and Persistence | The domain models are the technically required entities for the business logic. |
Repository Contracts | Persistence / Data Storage | Interfaces for persistence. |
Repository | Persistence / Data Storage | Implementation of the repositories for persistence. |
Adapter Contracts | Data sourcing | Interfaces for the backend adapters. |
Adapter Mock | Data sourcing (Mock) | Implementation of the adapter for the Mock. Use is controlled via profiles. |
Adapter finAPI | Data sourcing (multi-banking) | Implementation of the adapter for finAPI to use multi-banking. Use is controlled via profiles. |
Logging | Utilities | Provides annotations for logging. Provides functions such as basic method logging with time measurement and/or data logging. Provides obfuscation for data logging. |
Encryption | Utilities | Methods for encryption and decryption. |
Kotlin Extensions | Utilities | Object extensions for a simple |
Security Contracts | Security | Interface definition for the provision of users within the server. |
Security Contracts | Security | Implementation of the Keycloak for user authentication. Can be replaced if other IAM solutions are to be used. |
Server | Server | Main class for Spring Boot and basic configuration of the server. |