{"id":25664623,"url":"https://github.com/paulohenr96/api-academia","last_synced_at":"2026-06-09T21:31:08.203Z","repository":{"id":174836275,"uuid":"652856992","full_name":"paulohenr96/api-academia","owner":"paulohenr96","description":"Controle de alunos matriculados na academia","archived":false,"fork":false,"pushed_at":"2025-04-03T18:58:55.000Z","size":36617,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-11-16T21:22:57.081Z","etag":null,"topics":["junit5","mockito","postgresql","springboot2","springdata-jpa","springsecurity-jwt"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/paulohenr96.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-06-12T23:58:54.000Z","updated_at":"2025-04-03T18:58:58.000Z","dependencies_parsed_at":null,"dependency_job_id":"bdc8b5e4-1339-4cc3-8f00-0d4f8dda0e0c","html_url":"https://github.com/paulohenr96/api-academia","commit_stats":null,"previous_names":["paulohenr96/api-academia"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/paulohenr96/api-academia","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paulohenr96%2Fapi-academia","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paulohenr96%2Fapi-academia/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paulohenr96%2Fapi-academia/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paulohenr96%2Fapi-academia/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/paulohenr96","download_url":"https://codeload.github.com/paulohenr96/api-academia/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paulohenr96%2Fapi-academia/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34127342,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-09T02:00:06.510Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["junit5","mockito","postgresql","springboot2","springdata-jpa","springsecurity-jwt"],"created_at":"2025-02-24T06:29:21.898Z","updated_at":"2026-06-09T21:31:08.197Z","avatar_url":"https://github.com/paulohenr96.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🏋️‍♂️ API de Academia\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"image.png\" alt=\"API de Academia\"\u003e\n\u003c/p\u003e\n\nEsta é uma API para gerenciamento de academias, oferecendo recursos para manipulação de alunos, usuários e autenticação.\n\n## 🚀 Tecnologias Utilizadas\n- **Java** - Linguagem de programação\n- **Spring Boot** - Framework para construção de APIs\n- **Spring Data JPA** - Gerenciamento de persistência\n- **PostgreSQL** - Banco de dados relacional\n- **Maven** - Gerenciamento de dependências\n- **Spring Security** - Controle de autenticação e autorização\n- **JSON Web Token (JWT)** - Autenticação baseada em tokens\n- **Swagger** - Documentação interativa da API\n\n## ⚙️ Configuração do Ambiente\n1. **Instalar o JDK**: Baixe e instale o JDK mais recente do site oficial da Oracle.\n2. **Verificar o Maven**: Confirme a instalação do Maven executando `mvn -v` no terminal.\n3. **Clonar o Repositório**:\n   ```sh\n   git clone https://github.com/paulohenr96/api-academia.git\n   ```\n4. **Importar o Projeto**: Abra sua IDE (Eclipse, IntelliJ, etc.) e importe o projeto como um projeto Maven existente.\n5. **Configurar o Banco de Dados**:\n   - No arquivo `application.properties` (localizado em `src/main/resources`), ajuste as credenciais de conexão com o PostgreSQL.\n6. **Executar a API**: Inicie a aplicação e a API estará disponível na porta configurada.\n\n## 📌 Endpoints Disponíveis\n### 🎓 AlunoController\n- **GET** `/alunos/` - Lista todos os alunos.\n- **GET** `/alunos/{id}` - Obtém detalhes de um aluno pelo ID.\n- **POST** `/alunos/` - Cria um novo aluno.\n- **PUT** `/alunos/{id}` - Atualiza informações de um aluno.\n- **DELETE** `/alunos/{id}` - Remove um aluno.\n- **GET** `/alunos/{id}/mensalidades` - Obtém as mensalidades de um aluno.\n- **POST** `/alunos/{id}/mensalidades` - Registra o pagamento de uma mensalidade.\n- **GET** `/alunos/devedores/{mes}` - Lista alunos com mensalidades em atraso para um determinado mês.\n\n### 👤 UsuarioController\n- **GET** `/usuario/` - Lista todos os usuários.\n- **GET** `/usuario/{id}` - Obtém um usuário pelo ID.\n- **POST** `/usuario/` - Cria um novo usuário.\n- **PUT** `/usuario/{id}` - Atualiza um usuário.\n- **DELETE** `/usuario/{id}` - Remove um usuário.\n\n### 🔐 LoginController\n- **POST** `/login` - Realiza o login e retorna um token JWT.\n\n## 📂 DTOs (Data Transfer Objects)\n- **`LoginDTO`** - Contém `username` e `password` para autenticação.\n- **`MensalidadeDTO`** - Utilizado para pagamentos de mensalidades (`dataPagamento`).\n- **`PaginacaoDTO`** - Controla a paginação na listagem de alunos devedores.\n- **`UsuarioDTO`** - Retorna informações relevantes do usuário.\n\n## ⚠️ Exceções Personalizadas\n- **`MensalidadePagaException`** - Lançada quando uma mensalidade já foi quitada.\n- **`UserNotFoundException`** - Lançada quando um usuário não é encontrado.\n\n## 🔐 Segurança e Autenticação\n### 🔑 Componentes de Segurança\n- **`Constantes`** - Define valores como prefixo do token e tempo de validade.\n- **`CriadorToken`** - Gera e valida tokens JWT.\n- **`SecurityConfig`** - Configuração do Spring Security.\n- **`ObjetoSessao`** - Retorna o token JWT após o login.\n- **`FilterToken`** - Filtra requisições para validar tokens JWT.\n\n## 🏗️ Estrutura do Projeto\n- **Model** - Classes representando entidades (Aluno, Mensalidade, Role, Usuario).\n- **Repository** - Interfaces para acesso ao banco de dados (Aluno, Mensalidade, Usuario).\n- **Service** - Camada de lógica de negócio para Aluno, Senha, UsuarioDetailsService e Usuario.\n- **SwaggerConfig** - Configuração do Swagger para documentação da API.\n\n## 🤝 Contribuição\nContribuições são bem-vindas! Para colaborar:\n1. Faça um fork do repositório.\n2. Crie uma branch para suas alterações.\n3. Envie um pull request com a descrição das mudanças.\n\n## 📜 Licença\nEste projeto está licenciado sob a licença MIT. Consulte o arquivo `LICENSE` para mais detalhes.\n\n## 📬 Contato\nDúvidas ou sugestões? Entre em contato via e-mail: paulohsantos281096@gmail.com.\n\n🚀 API pronta para otimizar o gerenciamento de academias! 💪\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpaulohenr96%2Fapi-academia","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpaulohenr96%2Fapi-academia","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpaulohenr96%2Fapi-academia/lists"}