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.
Module ConceptHow Arda decomposes the system into modules: state encapsulation, service boundaries, and inter-module bindings.
Viewpoint MappingCross-reference of which viewpoints document which aspects of the system.

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.

Patterns for the Next.js BFF and React frontend.

DocumentDescription
Frontend Application ArchitectureNext.js BFF structure, React component model, authentication integration, and TypeScript conventions.