Skip to content

Overview

KrugarValdes edited this page Jan 19, 2026 · 2 revisions

Overview

The Effective Office system is an office management platform designed to automate various office processes, with a primary focus on meeting room booking and workspace management. This document provides a high-level introduction to the system architecture, core components, and fundamental concepts.

The system follows a client-server architecture where a Spring Boot backend provides REST APIs for office resource management, while tablet clients display room availability and enable quick booking operations. For detailed information about specific subsystems, see System Architecture for architectural patterns, Backend System for server-side implementation details, and Tablet Client Application for client-side specifics.

System Purpose and Scope

Effective Office serves as a comprehensive solution for office automation with these primary objectives:

Goal Description
Process Automation Automate various office processes including room booking, availability tracking, and resource management
Real-time Information Provide up-to-date status of meeting rooms and office spaces through tablet displays
Calendar Integration Seamlessly integrate with Google Calendar for unified booking management
User Experience Enable instant room reservations with single-tap booking functionality

The system is built as a multi-module Kotlin application, focusing on modern and relevant solutions within the Kotlin ecosystem while minimizing dependencies on other languages and technologies.

High-Level System Architecture

The system consists of three main architectural layers:

System Components Overview

system_architecture_preview.svg

Core Features and Capabilities

The system provides comprehensive room management functionality through its tablet interface:

Feature Implementation Code Reference
Real-time Availability Live room status updates via push notifications RoomInfoUseCase, UpdateUseCase
Quick Booking Single-tap room reservation FastBooking, CreateBookingUseCase
Time-Specific Reservations Detailed booking with custom time slots BookingEditor, SlotComponent
Booking Management Cancel and modify existing reservations DeleteBookingUseCase
Google Calendar Sync Bidirectional calendar integration GoogleCalendarProvider
Early Release Free up rooms before scheduled end time BusyRoomInfoComponent

Technology Stack Overview

Backend Technology Stack

backend-technology-stack.svg

Client Technology Stack

client-tech-stack.svg

Primary Data Flow Patterns

The system implements several key data flow patterns for different operations:

Booking Creation Flow

booking-creation-flow.svg

Real-time Update Flow

real-time-update-flow.svg

Key System Components

The system is organized into distinct modules with clear responsibilities:

Backend Modules

Core Infrastructure

Module Purpose Highlights
core:domain Domain models and business rules Shared entities, validation logic
core:data Transport and API contracts REST DTOs, serialization schemas
core:repository Data access and persistence interfaces JPA repositories, database abstractions
app Spring Boot entry point & configuration Application bootstrap, global configuration

Feature Modules

Module Purpose Key APIs / Responsibilities
user User management User CRUD, profile data
authorization Auth & security JWT issuance, Spring Security integration
booking:core Booking workflows Booking CRUD, availability checks
workspace Workspace inventory Room/space CRUD, metadata
calendar-subscription Google Calendar sync Subscription lifecycle, webhook renewals
notifications Push notifications FCM integration, broadcast APIs
duolingo Duolingo integration XP leaderboard ingestion
leader-id Leader ID events Event retrieval, filtering, QR payloads
photo-saver:core Photo ingestion pipeline Reaction filtering, scheduled sync orchestration
photo-saver Mattermost provider Mattermost API access, media download
photos Synology photo retrieval Album browsing APIs, pagination
sport Sport tracking Activity stats ingestion
teammates Teammate directory Profile data, scoring, filtering

Client Modules

Tablet Client (Compose Multiplatform)

Module Purpose Key Components
composeApp Main application entry point RootComponent
feature.main Home dashboard and room display MainComponent, BusyRoomInfoComponent
feature.bookingEditor Booking creation interface BookingEditorComponent
feature.fastBooking Quick reservation workflow FastBookingComponent
feature.slot Time slot visualization SlotComponent
core.domain Business logic and use cases CreateBookingUseCase, RoomInfoUseCase

TV Client (Compose Multiplatform)

Module Purpose Key Components
composeApp TV + desktop entry point RootComponent, autoplay orchestration
feature:menu Category selection & remote navigation MenuComponent, CategoryCard
feature:stories Employee celebrations & story cards StoriesAutoplayFeature, StoriesComponent
feature:photos Synology photo slideshow PhotosAutoplayFeature, PhotosComponent
feature:events Leader ID / calendar events EventsAutoplayFeature, EventsComponent

SMS Router Client (Android)

Module Purpose Key Components
app Android entry point + DI bootstrap MainActivity
data Persistence & networking SettingsRepository, SmsLogsRepository, SmsApiService
domain Business logic + use cases ForwardSmsUseCase,
presentation Compose UI + ViewModels SettingsViewModel, MessagesScreen, SmsReceiver

Deployment and Operational Model

The system is containerized and deployed using Docker Compose with proper reverse proxy configuration:

  • Containerization: All services run in Docker containers managed by docker-compose
  • Reverse Proxy: Caddy handles SSL termination and load balancing
  • Database: PostgreSQL with automated migrations via Flyway
  • Environment Management: Configuration through environment variables and .env files
  • The deployment supports both development and production environments with appropriate configuration management.

Clone this wiki locally