Backend do FitLocus
O backend do FitLocus é uma API RESTful desenvolvida em Java com Spring Boot, responsável por toda a lógica de negócio, autenticação e persistência de dados da plataforma.Tecnologias Utilizadas
- Linguagem: Java 21
- Framework: Spring Boot 3.x
- Banco de Dados: PostgreSQL
- ORM: Spring Data JPA / Hibernate
- Autenticação: JWT + Firebase Auth
- Documentação: Swagger / OpenAPI
- Build: Gradle
- Containerização: Docker
- CI/CD: GitHub Actions
Estrutura do Projeto
Principais Controladores
O backend expõe diversos endpoints através de controladores REST:| Controlador | Descrição |
|---|---|
AuthController | Autenticação e registro de usuários |
UserController | Gerenciamento de perfis de usuário |
ExerciseController | Gerenciamento de exercícios |
TrainingController | Gerenciamento de treinos |
TrainingPlanController | Gerenciamento de planos de treino |
PersonalStudentController | Relacionamento entre personal e aluno |
FileController | Upload e gerenciamento de arquivos |
PersonalRecordController | Gerenciamento de recordes pessoais |
UserMetricsController | Métricas de usuário (hidratação, passos, sono) |
Modelos de Dados
Os principais modelos de dados incluem:- Users: Usuários do sistema (ALUNO ou PERSONAL)
- Exercise: Exercícios físicos com descrição e imagem
- Training: Treinos compostos por exercícios
- TrainingPlan: Planos de treino semanais
- PersonalStudent: Relacionamento entre personal e aluno
- ExerciseExecution: Registro de execução de exercícios
- TrainingExecution: Registro de execução de treinos
- PersonalRecord: Recordes pessoais em exercícios
Autenticação e Segurança
O sistema utiliza uma combinação de JWT (JSON Web Tokens) e Firebase Authentication:- Login tradicional: Email/senha validados contra o banco de dados
- Login social: Integração com Firebase Auth para login via Google
- Autorização: Tokens JWT com claims para controle de acesso
- Segurança: Filtros de segurança para validação de tokens em cada requisição
Armazenamento de Arquivos
O sistema suporta dois modos de armazenamento de arquivos:- Desenvolvimento: Armazenamento local no sistema de arquivos
- Produção: Google Cloud Storage para armazenamento em nuvem
Validação de Assinaturas
O backend implementa validadores para controlar o acesso a recursos com base no tipo de assinatura:- SubscriptionValidator: Valida se o usuário pode acessar recursos premium
- AccessValidator: Controla o acesso baseado no tipo de usuário e assinatura
Integração com Pagamentos
O sistema integra-se com o AbacatePay para processamento de pagamentos:- Webhooks: Endpoints para receber notificações de pagamentos
- PIX: Suporte a pagamentos via PIX
- Assinaturas: Gerenciamento de ciclos de assinatura