Skip to content

About

Um monólito modular para acompanhamento de treinos e nutrição, desenvolvido com Java 21 e Spring Boot. O backend segue princípios de arquitetura limpa, é preparado para streaming de eventos com Kafka e conta com uma suíte abrangente de testes unitários e funcionais.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

Java Spring Boot Maven PostgreSQL Flyway Kafka Docker JUnit Mockito Jest Supertest CI

FitStream API — Real-Time Fitness & Nutrition

Backend do ecossistema FitStream, responsável pelo gerenciamento de treinos, nutrição, regras de negócio, persistência de dados e processamento de eventos em tempo real.

Desenvolvido com Java 21 e Spring Boot, o projeto utiliza uma arquitetura modular, processamento assíncrono com Apache Kafka e Server-Sent Events (SSE) para comunicação em tempo real com o frontend.

Frontend: FitStream App

Sobre o Projeto

O FitStream é uma aplicação voltada ao acompanhamento de treinos e nutrição, permitindo registrar e acompanhar métricas como exercícios, cargas, calorias e macronutrientes.

O backend centraliza as regras de negócio e disponibiliza uma API REST, além de mecanismos de atualização em tempo real para o frontend.

Principais Funcionalidades

  • Gerenciamento de treinos e exercícios
  • Registro e acompanhamento de cargas
  • Controle de calorias e macronutrientes
  • Atualização de dados em tempo real via SSE
  • Processamento assíncrono de eventos com Apache Kafka
  • Persistência em PostgreSQL
  • Versionamento do schema com Flyway
  • Testes unitários, integração e funcionais
  • Pipeline de integração contínua com GitHub Actions

Tecnologias

Categoria Tecnologia
Linguagem Java 21
Framework Spring Boot
Build Maven
Banco de dados PostgreSQL 16
Migrations Flyway
Mensageria Apache Kafka
Comunicação em tempo real Server-Sent Events (SSE)
Containerização Docker
Testes unitários JUnit, Mockito
Testes de integração Spring Boot Test
Testes funcionais Jest, Supertest
Testes funcionais Node.js, pnpm
CI GitHub Actions

Arquitetura

graph TD
    User["Usuário / Cliente"] -->|HTTP / Navegador| FE["Front-end\n(React + Vite)\n[Repositório Separado]"]

    subgraph "Backend - Spring Boot & Mensageria"
        FE -->|REST API & SSE| BE[" Spring Boot API\n(Java 21 / Virtual Threads)"]
        BE -->|Persistência| DB[("(PostgreSQL 16\nFlyway Migrations)")]
        BE -->|Disparo de Eventos| KF[" Apache Kafka\n(Event Broker)"]
        KF -->|Consumo Assíncrono| BE
    end

    style User fill:#2D3748,stroke:#E2E8F0,stroke-width:2px,color:#FFFFFF
    style FE fill:#1A365D,stroke:#63B3ED,stroke-width:2px,color:#FFFFFF
    style BE fill:#22543D,stroke:#68D391,stroke-width:2px,color:#FFFFFF
    style DB fill:#744210,stroke:#F6E05E,stroke-width:2px,color:#FFFFFF
    style KF fill:#742A2A,stroke:#FC8181,stroke-width:2px,color:#FFFFFF

Loading

Como Executar o Projeto Localmente

1. Subir o Docker

Na raiz do projeto, execute:

docker compose up -d --build

2. Verificar se a API está respondendo

http://localhost:8080/

Ou acesse a documentação Swagger através do navegador:

http://localhost:8080/swagger-ui.html

Testes Unitários e de Integração

Para executar os testes unitários e de integração:

./mvnw clean verify

Testes Funcionais

Os testes funcionais utilizam Jest + Supertest e são executados de maneira independente através do Node

Acesse a pasta de testes:

cd __functionalTest
pnpm install
pnpm test

About

Um monólito modular para acompanhamento de treinos e nutrição, desenvolvido com Java 21 e Spring Boot. O backend segue princípios de arquitetura limpa, é preparado para streaming de eventos com Kafka e conta com uma suíte abrangente de testes unitários e funcionais.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages