Skip to main content

Microservices Overview

The building blocks of LibreApps Desktop backend.

Overview

LibreApps Desktop's backend is composed of several independent microservices, each responsible for a specific domain of the application. These services are built using Spring Boot and communicate with each other through a combination of REST APIs and service discovery.

Core Services

1. User Management

Handles user registration, profile management, and role assignments. It integrates closely with Keycloak for authentication.

2. Account Service

Manages organizational accounts, subscriptions, and billing information.

3. Notification Service

Responsible for sending emails, SMS, and in-app notifications to users.

4. AI Chat Server

(See AI Integration) Manages conversational AI interactions.

Service Communication

Services communicate via REST APIs and are routed through the LibreApps Gateway (APISIX). The gateway handles authentication, rate limiting, and request routing to the appropriate service. Internal service-to-service communication is managed via the internal Docker network.

Development Workflow

Each microservice is a standalone Maven project. You can run them individually during development or use Docker Compose to start the entire stack.

Best Practices

  • Do this: Use a consistent API design across all microservices.
  • Do this: Implement health check endpoints (/actuator/health) for every service.
  • Don't do this: Create tight coupling between services; use asynchronous communication (e.g., message queues) where appropriate.