Fitness AI Platform é uma API backend baseada em microserviços que registra atividades físicas e gera análises inteligentes de desempenho usando LLMs.
O projeto foi desenvolvido para explorar arquiteturas modernas de backend escaláveis, incluindo:
- API Gateway
- autenticação centralizada
- mensageria assíncrona
- integração com inteligência artificial (Gemini)
Plataformas de fitness modernas analisam dados de treino para gerar insights personalizados.
Este projeto simula esse cenário através de:
- registro de atividades físicas
- processamento assíncrono de eventos
- geração automática de recomendações
O objetivo é demonstrar experiência prática com:
- arquitetura distribuída
- event-driven systems
- integração com AI
- Registro de atividades físicas
- Análise automática de performance
- Recomendações geradas por IA
- Processamento assíncrono com eventos
- Autenticação com OAuth2
- Arquitetura baseada em microserviços
A aplicação utiliza uma arquitetura event-driven baseada em microserviços. Abaixo está um diagrama mais claro da arquitetura do sistema.
flowchart LR
Client --> Gateway
Gateway --> UserService
Gateway --> ActivityService
ActivityService --> MongoDB
ActivityService --> RabbitMQ
RabbitMQ --> RecommendationService
RecommendationService --> AIService
RecommendationService --> MongoDB
UserService --> MongoDB
- 1️⃣ Usuário registra atividade
- 2️⃣ Activity Service persiste os dados
- 3️⃣ Um evento é publicado no RabbitMQ
- 4️⃣ Recommendation Service consome o evento
- 5️⃣ O serviço consulta um LLM
- 6️⃣ Uma análise e recomendações são geradas
sequenceDiagram
Client->>Gateway: POST /activities
Gateway->>ActivityService: register activity
ActivityService->>MongoDB: save activity
ActivityService->>RabbitMQ: publish ActivityCreated event
RabbitMQ->>RecommendationService: consume event
RecommendationService->>AIService: request analysis
AIService-->>RecommendationService: AI recommendation
RecommendationService->>MongoDB: save recommendation
Esse modelo permite desacoplamento e escalabilidade horizontal.
O sistema utiliza event-driven architecture para processar atividades de forma assíncrona.
Evento publicado
Quando uma atividade é registrada, o Activity Service publica um evento:
{
"activityId": "69a9de2eadec4ebc0d13a081",
"userId": "12345",
"activityType": "running",
"distance": 5.2,
"duration": 30,
"calories": 300
}Esse evento é enviado para o RabbitMQ, permitindo que outros serviços processem os dados sem acoplamento direto.
Responsável por:
- roteamento das requisições
- centralização de autenticação
- aplicação de filtros globais
Tecnologias:
- Spring Cloud Gateway
- WebFlux
Gerenciamento de usuários da aplicação.
Responsabilidades:
- persistência de usuários
- sincronização com Keycloak
Tecnologias:
- Spring Boot
- MongoDB
Responsável por registrar atividades físicas.
Funções:
- persistência de atividades
- publicação de eventos de atividade
Tecnologias:
- Spring Boot
- RabbitMQ
Processa eventos de atividade para gerar recomendações.
Funções:
- consumir eventos do RabbitMQ
- solicitar análise ao AI Service
- persistir recomendações
Serviço responsável pela integração com LLM para gerar análises inteligentes.
Exemplo de saída:
{
"analysis": {
"overall": "Strong 30-minute run with good average speed.",
"pace": "Consistent pace throughout the activity."
},
"improvements": [
"Improve post-workout recovery"
],
"suggestions": [
"Add interval training"
]
}- Java 21
- Spring Boot
- Spring Cloud
- Spring WebFlux
- Spring Data
- Keycloak
- OAuth2
- JWT
- RabbitMQ
- MongoDB
- PostgreSQL
- Gemini API
- Docker
- Maven
A autenticação é gerenciada pelo Keycloak.
As requisições autenticadas devem enviar um token JWT:
Authorization: Bearer <access_token>
Este projeto demonstra experiência com:
- arquitetura de microserviços
- event-driven architecture
- processamento assíncrono
- API Gateway
- OAuth2 / JWT authentication
- autenticação centralizada
- integração com LLM
- desacoplamento de serviços