Help Instance Help

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

ServerArchitecture.png

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 hashCode(), equals() and toString() implementation.

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.

Last modified: 11 December 2023