Skip to content

Overview

This section describes the architectural structure, viewpoints, and engineering patterns used across the Arda platform. It is written for developers and engineers who need to understand how Arda services are designed, decomposed, and implemented.


The structure section covers how Arda describes and organizes its architecture — the notation it uses, how viewpoints relate to each other, and how the system is decomposed into modules.

DocumentDescription
Architectural Design FrameworkThe viewpoints and notation (C4, PlantUML) used to describe the system across different levels of abstraction. Section index.
Functional DecompositionThe Functional Viewpoint in depth: System → Domain → Module → Service → Endpoint criteria, the canonical URL formula, and per-surface naming rules.
Module ConceptHow Arda decomposes the system into modules: state encapsulation, service boundaries, and inter-module bindings.
Component ConceptRuntime Components as deployable units packaging one or more Modules; identity, configuration footprint, and the declare/provide IoC pattern.
Viewpoint MappingCross-reference of which viewpoints document which aspects of the system.
Legacy StateCurrent divergences between the canonical naming and the live system’s URLs and configuration; cardinality-transition and collapse-rule mechanics that govern Module evolution.

The patterns section is a curated catalog of recurring design decisions with implementation guidance. The Design Pattern Index provides a concise summary of all patterns with links to their canonical documentation.

Patterns governing how individual services and modules are structured.

DocumentDescription
Data Authority Module PatternThe primary four-layer module pattern (Protocol Adaptor → Service → Persistence → Proxy) for entities that own and manage a set of entities.
Data Authority LimitationsKnown constraints and edge cases of the Data Authority query system.

Patterns for service boundaries and client-facing contracts.

DocumentDescription
API DesignURL naming conventions, REST endpoint structure, filtering/pagination, and standard error responses.
Query DSLThe serializable filter/sort/pagination DSL used on /query endpoints, compiled to SQL via Exposed or evaluated in-memory.

Patterns for storing, retrieving, and evolving entity state.

DocumentDescription
Persistence OverviewLanding page for all persistence patterns.
Universe DesignThe Universe abstraction: entity collections with consistent CRUD, query, validation, and scoping.
Bitemporal PersistenceRecording both effective-time and transaction-time on every record; correction semantics without data loss.
Parent-Child PersistenceChild collections scoped to a parent; ordering, rank management, and cascade semantics.
Table MappingsExposed ORM table definition conventions: columns, records, and composite value mapping.
Exposed ORM PatternsFlyway migrations, Exposed DSL usage, and DBIO functional effect patterns.

Cross-cutting patterns applied throughout the Kotlin backend.

DocumentDescription
Backend Implementation PatternsComprehensive reference: Ktor module wiring, CRUDQ implementation, service patterns, and testing conventions.
Exception HandlingAppError hierarchy, Result<T> propagation, and Ktor StatusPages normalization.
Functional Programming at ArdaFP philosophy: immutability, Result, DBIO, state machines, and composability.
Observer and Notification PatternsAsync notification emission, observer wiring, and testing patterns.
Naming ConventionsNaming rules for Kotlin code, Kubernetes resources, Helm charts, and Docker images.
application.conf StructureHOCON file layout: Component-level block, functional-hierarchy tree with domains/modules/services/endpoints wrappers, per-Module include shape, declare/provide/bind flow.

The frontend reference moved to its own top-level section under current-system/user-interface/. The links below point there.

DocumentDescription
Frontend Application ArchitectureNext.js BFF structure, React component model, authentication integration, and TypeScript conventions.
User Interface — Section IndexLanding page for all frontend system documentation: architecture, data flow, editing and concurrency.