Skip to content

Backend System

KrugarValdes edited this page Jan 19, 2026 · 3 revisions

Backend System

The backend system is a Spring Boot application that provides REST APIs and core business logic for the Effective Office platform. It serves as the central API hub between client applications (tablet, TV, SMS router) and external services, providing RESTful APIs for workspace booking, user management, notifications, and corporate information display.

For information about specific features like booking workflows, see [Booking Management](Backend System/Booking Management). For deployment strategies and operations, see [Deployment and Operations](Deployment and Operations).

Architecture Overview

The backend follows a modular Spring Boot architecture with clear separation between core infrastructure and feature-specific functionality. The application runs on port 8080 and exposes REST APIs under the /api context path.

architecture-overview.svg

Module Structure

The backend is organized into core infrastructure modules and feature-specific modules. Each module has a specific responsibility and well-defined interfaces.

Core Infrastructure Modules

Module Purpose Key Components
core:domain Business models and entities Domain objects, business rules
core:data Data transfer objects REST API contracts, DTOs
core:repository Data access layer JPA repositories, database interfaces

Feature Modules

Module Purpose Key APIs
user User management and profiles User CRUD operations
authorization Authentication and security JWT token management
booking:core Room booking functionality Booking CRUD, availability
workspace Room and workspace management Workspace CRUD, room details
calendar-subscription Real-time calendar sync Notification subscriptions
notifications Push notification system FCM integration
duolingo Duolingo Integration Duolingo user data retrieval, public API integration
leader-id LeaderId Integration LeaderId event retrieval, event search
photo-saver:core Photo Synchronization Automated photo sync, reaction-based filtering, scheduled sync
photo-saver Mattermost Provider Mattermost API integration, post retrieval, file downloads
photos Photo Retrieval Photo retrieval API, pagination support
sport Sport Tracking Sport activity tracking
feature:teammates Teammate Management Teammate data retrieval, score tracking, active filtering

Technology Stack and Configuration

The backend leverages Spring Boot with PostgreSQL for persistence and integrates with Google services for calendar management and push notifications.

technology-stack-configuration.svg

REST API Structure

The backend exposes RESTful APIs through multiple controllers organized by feature domain. All APIs are served under the /api context path.

rest-api-structure.svgTODO image-here

Configuration Management

The application uses a layered configuration approach supporting multiple environments and external service integration.

Environment Configuration

Configuration File Purpose Environment
application.yml Base configuration All environments
application-local.yml Local development overrides Local development
.env file Environment variables Production/staging

Key Configuration Areas

key-configuration-areas.svg

Background Services

The backend includes automated background services for maintaining real-time synchronization with external calendar systems.

Calendar Subscription Scheduler

The CalendarSubscriptionScheduler maintains Google Calendar notification subscriptions that expire every 7 days.

calendar-subscription-scheduler.svg

Photo Saver Scheduler

The PhotoSyncScheduler automatically synchronizes photos from Mattermost to Synology NAS at configurable intervals.

photo-saver-scheduler.svg

Error Handling

Centralized exception handling ensures consistent error responses across all API endpoints through the GlobalExceptionHandler.

Exception Response Structure

error-handling.svg

Deployment Architecture

The backend supports containerized deployment through Docker with environment-specific configurations.

deployment-architecture.svg

Clone this wiki locally