Esta API foi desenvolvida para gerenciar exercícios físicos e planos de exercícios personalizados para diferentes usuários. É possível criar, visualizar, atualizar e deletar exercícios e planos, bem como associar exercícios a planos específicos.
- Gerenciamento de Usuários: CRUD (Create, Read, Update, Delete) de usuários.
- Gerenciamento de Exercícios: CRUD de exercícios.
- Gerenciamento de Planos de Exercícios: CRUD de planos de exercícios.
- Associação de Exercícios a Planos: Associar exercícios específicos a planos de exercícios.
- Autenticação e Autorização: Controle de acesso baseado em roles.
- Navegação HATEOAS: Inclusão de links de navegação nos recursos retornados.
- Java 20
- Spring Boot
- Spring Data JPA
- H2 Database (para testes)
- PostgreSQL (para desenvolvimento)
- Spring HATEOAS
- Docker
- JUnit 5
-
Clone o repositório:
git clone https://github.com/MateusHenriquegringo/gym-project-api cd gym-project-api
-
Instale as dependências do Maven:
mvn clean install
-
Configure o banco de dados PostgreSQL em um container Docker. Crie um arquivo docker-compose.yml com o seguinte conteúdo:
version: '3.1' services: postgres: image: 'postgres:latest' environment: - 'POSTGRES_DB=nome-do-banco' - 'POSTGRES_PASSWORD=secret' - 'POSTGRES_USER=myuser' ports: - '9000:5432'
-
Inicie o container Docker:
docker-compose up -d
-
Configure o banco de dados no arquivo application.properties:
spring.datasource.url=jdbc:postgresql://localhost:9000/nome-do-banco spring.datasource.username=myuser spring.datasource.password=secret spring.jpa.hibernate.ddl-auto=update
Para iniciar o aplicativo, execute o comando abaixo:
mvn spring-boot:run
A API estará disponível em http://localhost:8080.
- POST /api/auth/signup - Registrar um novo usuário
- POST /api/auth/login - Autenticar um usuário
- GET /api/users - Listar todos os usuários
- GET /api/users/{id} - Obter detalhes de um usuário específico
- PUT /api/users/{id} - Atualizar um usuário
- DELETE /api/users/{id} - Deletar um usuário
- GET /api/exercises - Listar todos os exercícios
- Parâmetros:
- difficulty (opcional): Filtra os exercícios por dificuldade. As opções válidas são: INICIANTE, INTERMEDIARIO, EXPERIENTE.
- muscles (opcional): Filtra os exercícios por musculos. Pode receber uma lista, retornara apenas exercicios que trabalhem todos os musculos da lista.
- Parâmetros:
- GET /api/exercises/{id} - Obter detalhes de um exercício específico
- POST /api/exercises - Criar um novo exercício
- PUT /api/exercises/{id} - Atualizar um exercício
- DELETE /api/exercises/{id} - Deletar um exercício
- GET /api/plans - Listar todos os planos de exercícios
- GET /api/plans/{id} - Obter detalhes de um plano específico
- POST /api/plans - Criar um novo plano de exercícios
- PUT /api/plans/{id} - Atualizar um plano de exercícios
- DELETE /api/plans/{id} - Deletar um plano de exercícios
- POST /api/plans/{id}/exercises - Associar exercícios a um plano
Contribuições são bem-vindas! Sinta-se à vontade para abrir issues e pull requests.
- Faça um fork do projeto
- Crie uma nova branch (git checkout -b feature/nova-feature)
- Commit suas mudanças (git commit -am 'Adiciona nova feature')
- Faça o push para a branch (git push origin feature/nova-feature)
- Abra um Pull Request