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.