-
Notifications
You must be signed in to change notification settings - Fork 2
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.
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.
The system consists of three main architectural layers:
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 |
The system implements several key data flow patterns for different operations:
The system is organized into distinct modules with clear responsibilities:
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
|
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
|
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.