Skip to content

Overview

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

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

Module Purpose Key Classes
backend.app Main application and configuration SpringBootApplication
booking.core Core booking business logic CalendarProvider, Booking
booking.calendar.google Google Calendar integration GoogleCalendarProvider
workspace Room and space management WorkspaceDomainService
notifications Push notification handling NotificationService
authorization Authentication and security JWT, Spring Security

Client Modules

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

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