-
Notifications
You must be signed in to change notification settings - Fork 0
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.
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.
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.
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
|
The tablet client uses Compose Multiplatform with a modular, feature-based architecture. It implements the MVI pattern with Decompose for navigation and state management.
The client implements a reusable component system for room status display and booking interactions:
The system uses modern Kotlin-based technologies throughout the stack:
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 |
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 |
The system implements several key data flow patterns for real-time updates and calendar synchronization.
The system uses consistent data transformation patterns between domain models and DTOs:
The system uses containerized deployment with Docker Compose for orchestration and Caddy as a reverse proxy.
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.