Skip to content

Thiago-Protasio/Fitness-API

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🏃 Fitness AI Platform

Java Spring Boot Spring Cloud MongoDB RabbitMQ Keycloak Docker

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)

🎯 Motivação do projeto

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

🧠 Principais funcionalidades

  • 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

🏗 Arquitetura

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
Loading

Fluxo de processamento

  • 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
Loading

Esse modelo permite desacoplamento e escalabilidade horizontal.

📡 Event-Driven Architecture

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.


🧩 Microserviços

API Gateway

Responsável por:

  • roteamento das requisições
  • centralização de autenticação
  • aplicação de filtros globais

Tecnologias:

  • Spring Cloud Gateway
  • WebFlux

User Service

Gerenciamento de usuários da aplicação.

Responsabilidades:

  • persistência de usuários
  • sincronização com Keycloak

Tecnologias:

  • Spring Boot
  • MongoDB

Activity Service

Responsável por registrar atividades físicas.

Funções:

  • persistência de atividades
  • publicação de eventos de atividade

Tecnologias:

  • Spring Boot
  • RabbitMQ

Recommendation Service

Processa eventos de atividade para gerar recomendações.

Funções:

  • consumir eventos do RabbitMQ
  • solicitar análise ao AI Service
  • persistir recomendações

AI Service

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"
  ]
}

⚙️ Stack tecnológica

Backend

  • Java 21
  • Spring Boot
  • Spring Cloud
  • Spring WebFlux
  • Spring Data

Segurança

  • Keycloak
  • OAuth2
  • JWT

Mensageria

  • RabbitMQ

Banco de dados

  • MongoDB
  • PostgreSQL

Inteligência artificial

  • Gemini API

Infraestrutura

  • Docker
  • Maven

🔐 Autenticação

A autenticação é gerenciada pelo Keycloak.

As requisições autenticadas devem enviar um token JWT:

Authorization: Bearer <access_token>

📈 Conceitos de engenharia aplicados

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

About

API backend para registro e análise inteligente de atividades físicas, construída com arquitetura de microserviços, mensageria assíncrona e integração com LLM para geração de recomendações personalizadas.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages