Skip to content

System Architecture

Radch-enko edited this page Jul 24, 2025 · 1 revision

System Architecture

This document provides a comprehensive overview of the Effective Office system architecture, covering the overall design patterns, major components, and their interactions. It focuses on the technical structure of both backend services and client applications, their integration patterns, and deployment architecture.

For specific implementation details about individual features, see Core Features. For deployment procedures and operational aspects, see Deployment & Operations.

Overall System Design

The Effective Office system follows a client-server architecture designed for office resource management, specifically focused on meeting room booking and availability tracking. The system consists of a Spring Boot backend providing REST APIs and a Compose Multiplatform tablet client application.

High-Level Architecture

system_architecture_preview.svg

Backend Architecture

The backend follows a modular Spring Boot architecture with clear separation between core infrastructure and business features. Each module has specific responsibilities and well-defined interfaces.

Backend Module Structure

backend-module-structure.svg

Core Domain Models

The system centers around key domain entities that represent the business logic:

Entity Purpose Key Attributes
Booking Represents workspace reservations id, owner, participants, workspace, beginBooking, endBooking, recurrence
User System users and organizers id, username, email, firstName, lastName, role
Workspace Bookable rooms and spaces id, name, utilities, zone, tag
EventInfo Client-side event representation startTime, finishTime, organizer, isEditable

Client Application Architecture

The tablet client uses Compose Multiplatform with a modular, feature-based architecture. It implements the MVI pattern with Decompose for navigation and state management.

Client Module Structure

client-module-structure.svg

UI Component Architecture

The client implements a reusable component system for room status display and booking interactions:

ui-components-architecture.svg

Technology Stack

The system uses modern Kotlin-based technologies throughout the stack:

Backend Technologies

Component Technology Version
Framework Spring Boot 3.5.0
Language Kotlin 2.1.21
Database PostgreSQL 42.7.6
Security JWT 0.11.5
Documentation SpringDoc OpenAPI 2.8.8
External API Google Calendar API 1.33.0
Build Tool Gradle 8.x
Client Technologies
Component Technology Version
Framework Compose Multiplatform 1.8.1
Language Kotlin 2.1.21
Navigation Decompose 3.3.0
DI Container Koin 4.1.0
HTTP Client Ktor 3.1.3
State Management Essenty 2.5.0
Date/Time Kotlinx.datetime 0.6.2

Data Flow and Integration Patterns

The system implements several key data flow patterns for real-time updates and calendar synchronization.

Calendar Integration Flow

calendar-integration-flow.svg

Data Mapping Between Layers

The system uses consistent data transformation patterns between domain models and DTOs:

data-mapping-between-layers.svg

Deployment Architecture

The system uses containerized deployment with Docker Compose for orchestration and Caddy as a reverse proxy.

Deployment Components

deployments-component.svg

The system architecture emphasizes modularity, testability, and maintainability through clear separation of concerns, well-defined interfaces between components, and consistent patterns for data flow and external integrations.

Clone this wiki locally