|
|
|
# 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
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
# 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
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
## Client Technology Stack
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
# Primary Data Flow Patterns
|
|
|
|
The system implements several key data flow patterns for different operations:
|
|
|
|
|
|
|
|
## Booking Creation Flow
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
## Real-time Update Flow
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
# 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. |
|
|
|
\ No newline at end of file |