# valtimo-platform/valtimo architecture

> Architecture diagram of the GitHub repository valtimo-platform/valtimo, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/valtimo-platform/valtimo
- Repository: https://github.com/valtimo-platform/valtimo

## Overview

Valtimo is a low-code platform for business process automation and case management, delivered as a Spring Boot backend and Angular frontend. Its user-facing flow centers on interacting with cases and tasks; the backend also provides process/case import previews, configurable authorization, document search, and integrations for files and external document services. The README identifies Keycloak and a database as platform dependencies. Source excerpts support several internal calls, but wiring for many tree-listed capabilities was not sampled, so those branches are shown without speculative connections.

Main entry points: [`backend`](https://github.com/valtimo-platform/valtimo/tree/next-minor/backend) (Spring Boot backend), [`frontend`](https://github.com/valtimo-platform/valtimo/tree/next-minor/frontend) (Angular frontend), [`backend/zgw/documenten-api-preview/src/main/kotlin/com/ritense/documentenapipreview/service/DocumentenApiPreviewService.kt`](https://github.com/valtimo-platform/valtimo/blob/next-minor/backend/zgw/documenten-api-preview/src/main/kotlin/com/ritense/documentenapipreview/service/DocumentenApiPreviewService.kt) (Document preview), [`backend/authorization/src/main/kotlin/com/ritense/authorization/ValtimoAuthorizationService.kt`](https://github.com/valtimo-platform/valtimo/blob/next-minor/backend/authorization/src/main/kotlin/com/ritense/authorization/ValtimoAuthorizationService.kt) (Authorization service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["User experience"]
  node_frontend["Angular frontend"]
  node_taskparams["Task list parameters"]
end

subgraph group_casework["Casework"]
  node_backend["Spring Boot backend"]
  node_cases["Case management"]
  node_processes["Process links"]
  node_tasksearch["Case task search"]
  node_casepreview["Case import preview"]
  node_processpreview["Process import preview"]
end

subgraph group_security["Authorization"]
  node_authorization["Authorization service"]
  node_permissions[("Roles and permissions")]
end

subgraph group_platform["Platform services"]
  node_adminsettings["Admin settings"]
  node_audit[("Audit records")]
  node_tempstorage["Temporary resources"]
  node_resourcefiles[("Temporary file store")]
  node_retention["Resource retention"]
end

subgraph group_integrations["Integrations"]
  node_documentsearch["Document search"]
  node_opensearch[("OpenSearch")]
  node_documentpreview["Document preview"]
  node_pluginservice["Plugin service"]
  node_zaakdocuments["Case document service"]
end

node_user(("User"))
node_keycloak(("Keycloak"))
node_database[("Platform database")]

node_user -->|"uses"| node_frontend
node_frontend -->|"calls APIs"| node_backend
node_frontend -->|"sets or reads"| node_taskparams
node_taskparams -->|"navigates"| node_frontend
node_backend -->|"hosts"| node_cases
node_backend -->|"hosts"| node_processes
node_backend -->|"hosts"| node_tasksearch
node_backend -->|"hosts"| node_casepreview
node_backend -->|"hosts"| node_processpreview
node_tasksearch -->|"requests authorization"| node_authorization
node_documentsearch -->|"gets permissions"| node_authorization
node_documentsearch -->|"searches"| node_opensearch
node_authorization -->|"reads permissions"| node_permissions
node_backend -->|"hosts"| node_adminsettings
node_backend -->|"hosts"| node_audit
node_tempstorage -->|"writes and reads"| node_resourcefiles
node_retention -->|"uses temp directory"| node_tempstorage
node_backend -->|"hosts"| node_documentpreview
node_documentpreview -->|"verifies association"| node_zaakdocuments
node_documentpreview -->|"creates plugin"| node_pluginservice
node_keycloak -->|"identity provider"| node_backend
node_backend -->|"persists platform data"| node_database

click node_frontend "https://github.com/valtimo-platform/valtimo/tree/next-minor/frontend"
click node_taskparams "https://github.com/valtimo-platform/valtimo/blob/next-minor/frontend/projects/valtimo/task/src/lib/services/task-list-query-param.service.ts"
click node_backend "https://github.com/valtimo-platform/valtimo/tree/next-minor/backend"
click node_cases "https://github.com/valtimo-platform/valtimo/tree/next-minor/backend/case"
click node_processes "https://github.com/valtimo-platform/valtimo/tree/next-minor/backend/process-link"
click node_tasksearch "https://github.com/valtimo-platform/valtimo/blob/next-minor/backend/process-document/src/main/kotlin/com/ritense/processdocument/service/CaseTaskListSearchService.kt"
click node_casepreview "https://github.com/valtimo-platform/valtimo/blob/next-minor/backend/case/src/main/kotlin/com/ritense/case/service/CaseDefinitionImportPreviewService.kt"
click node_processpreview "https://github.com/valtimo-platform/valtimo/blob/next-minor/backend/process-link/src/main/kotlin/com/ritense/processlink/service/ProcessDefinitionImportPreviewService.kt"
click node_authorization "https://github.com/valtimo-platform/valtimo/blob/next-minor/backend/authorization/src/main/kotlin/com/ritense/authorization/ValtimoAuthorizationService.kt"
click node_permissions "https://github.com/valtimo-platform/valtimo/tree/next-minor/backend/authorization/src/main/kotlin/com/ritense/authorization"
click node_adminsettings "https://github.com/valtimo-platform/valtimo/tree/next-minor/backend/admin-settings/src/main/kotlin/com/ritense/adminsettings"
click node_audit "https://github.com/valtimo-platform/valtimo/tree/next-minor/backend/audit/src/main/java/com/ritense/audit"
click node_tempstorage "https://github.com/valtimo-platform/valtimo/blob/next-minor/backend/resource/temporary-resource-storage/src/main/kotlin/com/ritense/resource/service/TemporaryResourceStorageService.kt"
click node_retention "https://github.com/valtimo-platform/valtimo/blob/next-minor/backend/resource/temporary-resource-storage/src/main/kotlin/com/ritense/resource/service/TemporaryResourceStorageDeletionService.kt"
click node_documentsearch "https://github.com/valtimo-platform/valtimo/blob/next-minor/backend/case-opensearch/src/main/kotlin/com/ritense/document/opensearch/service/DocumentOpenSearchQueryService.kt"
click node_documentpreview "https://github.com/valtimo-platform/valtimo/blob/next-minor/backend/zgw/documenten-api-preview/src/main/kotlin/com/ritense/documentenapipreview/service/DocumentenApiPreviewService.kt"
click node_pluginservice "https://github.com/valtimo-platform/valtimo/blob/next-minor/backend/zgw/documenten-api-preview/src/main/kotlin/com/ritense/documentenapipreview/service/DocumentenApiPreviewService.kt"
click node_zaakdocuments "https://github.com/valtimo-platform/valtimo/blob/next-minor/backend/zgw/documenten-api-preview/src/main/kotlin/com/ritense/documentenapipreview/service/DocumentenApiPreviewService.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_frontend,node_taskparams,node_user toneBlue
class node_backend,node_cases,node_processes,node_tasksearch,node_casepreview,node_processpreview,node_database toneAmber
class node_authorization,node_permissions toneMint
class node_adminsettings,node_audit,node_tempstorage,node_resourcefiles,node_retention toneRose
class node_documentsearch,node_opensearch,node_documentpreview,node_pluginservice,node_zaakdocuments,node_keycloak toneIndigo
```

## Components

### User experience

- [Angular frontend](https://github.com/valtimo-platform/valtimo/tree/next-minor/frontend): `frontend`
- [Task list parameters](https://github.com/valtimo-platform/valtimo/blob/next-minor/frontend/projects/valtimo/task/src/lib/services/task-list-query-param.service.ts): `frontend/projects/valtimo/task/src/lib/services/task-list-query-param.service.ts`

### Casework

- [Spring Boot backend](https://github.com/valtimo-platform/valtimo/tree/next-minor/backend): `backend`
- [Case management](https://github.com/valtimo-platform/valtimo/tree/next-minor/backend/case): `backend/case`
- [Process links](https://github.com/valtimo-platform/valtimo/tree/next-minor/backend/process-link): `backend/process-link`
- [Case task search](https://github.com/valtimo-platform/valtimo/blob/next-minor/backend/process-document/src/main/kotlin/com/ritense/processdocument/service/CaseTaskListSearchService.kt): `backend/process-document/src/main/kotlin/com/ritense/processdocument/service/CaseTaskListSearchService.kt`
- [Case import preview](https://github.com/valtimo-platform/valtimo/blob/next-minor/backend/case/src/main/kotlin/com/ritense/case/service/CaseDefinitionImportPreviewService.kt): `backend/case/src/main/kotlin/com/ritense/case/service/CaseDefinitionImportPreviewService.kt`
- [Process import preview](https://github.com/valtimo-platform/valtimo/blob/next-minor/backend/process-link/src/main/kotlin/com/ritense/processlink/service/ProcessDefinitionImportPreviewService.kt): `backend/process-link/src/main/kotlin/com/ritense/processlink/service/ProcessDefinitionImportPreviewService.kt`

### Authorization

- [Authorization service](https://github.com/valtimo-platform/valtimo/blob/next-minor/backend/authorization/src/main/kotlin/com/ritense/authorization/ValtimoAuthorizationService.kt): `backend/authorization/src/main/kotlin/com/ritense/authorization/ValtimoAuthorizationService.kt`
- [Roles and permissions](https://github.com/valtimo-platform/valtimo/tree/next-minor/backend/authorization/src/main/kotlin/com/ritense/authorization): `backend/authorization/src/main/kotlin/com/ritense/authorization`

### Platform services

- [Admin settings](https://github.com/valtimo-platform/valtimo/tree/next-minor/backend/admin-settings/src/main/kotlin/com/ritense/adminsettings): `backend/admin-settings/src/main/kotlin/com/ritense/adminsettings`
- [Audit records](https://github.com/valtimo-platform/valtimo/tree/next-minor/backend/audit/src/main/java/com/ritense/audit): `backend/audit/src/main/java/com/ritense/audit`
- [Temporary resources](https://github.com/valtimo-platform/valtimo/blob/next-minor/backend/resource/temporary-resource-storage/src/main/kotlin/com/ritense/resource/service/TemporaryResourceStorageService.kt): `backend/resource/temporary-resource-storage/src/main/kotlin/com/ritense/resource/service/TemporaryResourceStorageService.kt`
- **Temporary file store**
- [Resource retention](https://github.com/valtimo-platform/valtimo/blob/next-minor/backend/resource/temporary-resource-storage/src/main/kotlin/com/ritense/resource/service/TemporaryResourceStorageDeletionService.kt): `backend/resource/temporary-resource-storage/src/main/kotlin/com/ritense/resource/service/TemporaryResourceStorageDeletionService.kt`

### Integrations

- [Document search](https://github.com/valtimo-platform/valtimo/blob/next-minor/backend/case-opensearch/src/main/kotlin/com/ritense/document/opensearch/service/DocumentOpenSearchQueryService.kt): `backend/case-opensearch/src/main/kotlin/com/ritense/document/opensearch/service/DocumentOpenSearchQueryService.kt`
- **OpenSearch**
- [Document preview](https://github.com/valtimo-platform/valtimo/blob/next-minor/backend/zgw/documenten-api-preview/src/main/kotlin/com/ritense/documentenapipreview/service/DocumentenApiPreviewService.kt): `backend/zgw/documenten-api-preview/src/main/kotlin/com/ritense/documentenapipreview/service/DocumentenApiPreviewService.kt`
- [Plugin service](https://github.com/valtimo-platform/valtimo/blob/next-minor/backend/zgw/documenten-api-preview/src/main/kotlin/com/ritense/documentenapipreview/service/DocumentenApiPreviewService.kt): `backend/zgw/documenten-api-preview/src/main/kotlin/com/ritense/documentenapipreview/service/DocumentenApiPreviewService.kt`
- [Case document service](https://github.com/valtimo-platform/valtimo/blob/next-minor/backend/zgw/documenten-api-preview/src/main/kotlin/com/ritense/documentenapipreview/service/DocumentenApiPreviewService.kt): `backend/zgw/documenten-api-preview/src/main/kotlin/com/ritense/documentenapipreview/service/DocumentenApiPreviewService.kt`

### Other components

- **User**
- **Keycloak**
- **Platform database**

## Connections

- User → Angular frontend: uses
- Angular frontend → Spring Boot backend: calls APIs
- Angular frontend → Task list parameters: sets or reads
- Task list parameters → Angular frontend: navigates
- Spring Boot backend → Case management: hosts
- Spring Boot backend → Process links: hosts
- Spring Boot backend → Case task search: hosts
- Spring Boot backend → Case import preview: hosts
- Spring Boot backend → Process import preview: hosts
- Case task search → Authorization service: requests authorization
- Document search → Authorization service: gets permissions
- Document search → OpenSearch: searches
- Authorization service → Roles and permissions: reads permissions
- Spring Boot backend → Admin settings: hosts
- Spring Boot backend → Audit records: hosts
- Temporary resources → Temporary file store: writes and reads
- Resource retention → Temporary resources: uses temp directory
- Spring Boot backend → Document preview: hosts
- Document preview → Case document service: verifies association
- Document preview → Plugin service: creates plugin
- Keycloak → Spring Boot backend: identity provider
- Spring Boot backend → Platform database: persists platform data
