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.