API back-end para gerenciamento da academia do IFCE campus Cedro, contemplando cadastro de alunos, autenticação via JWT, controle de presenças, horários e integração com serviços da AWS. A aplicação permite que usuários gerenciem alunos, realizem upload de atestados, controlem frequências e exportem dados, garantindo segurança, rastreabilidade e escalabilidade.
- Tecnologias Utilizadas
- Funcionalidades
- Pré-requisitos
- Configurações Iniciais
- Executando a API
- Documentação
- Login com JWT - Autenticação segura com geração de token de acesso
- Recuperação de senha - Envio de código de recuperação de 6 dígitos por e-mail
- Redefinição de senha - Atualização de senha através do código de recuperação
- Validação de token - Verificação de validade e assinatura do token JWT
- Cadastro de usuários - Registro de administradores, estagiários e instrutores
- Listagem de usuários - Visualização de todos os usuários cadastrados
- Exclusão de usuários - Remoção de usuários do sistema (com controle de permissões)
- Lista de espera - Registro e gerenciamento de alunos aguardando efetivação
- Efetivação de alunos - Processo de efetivação de alunos da lista de espera
- Consulta de alunos - Busca por ID, turno e status (efetivados e lista de espera)
- Atualização de dados - Edição de informações cadastrais dos alunos
- Exclusão de alunos - Remoção de alunos da lista de espera ou efetivados
- Upload de atestados - Anexação de atestados médicos em PDF (integração com AWS S3)
- Cadastro de horários - Criação de horários por turno (Manhã, Tarde, Noite)
- Listagem de horários - Visualização de todos os horários ou filtrados por turno
- Exclusão de horários - Remoção de horários (com validação de alunos vinculados)
- Registro de presenças - Marcação de presença de múltiplos alunos por data
- Consulta de presenças - Listagem paginada de todas as presenças
- Filtro por data - Busca de presenças por data específica
- Confirmação de efetivação - E-mail automático ao efetivar aluno
- Recuperação de senha - E-mail com código de recuperação
- Notificação de remoção - E-mail informando remoção do sistema
- Alerta de faltas - Notificação automática por excesso de faltas
Para executar este projeto, você precisará ter instalado:
- Git - Para clonar o repositório
- Java 17 ou superior
- Maven 3.6+ - Para gerenciar dependências
- Docker e Docker Compose (Opcional, mas recomendado)
- PostgreSQL (caso não use Docker)
- Redis (caso não use Docker)
Clone o repositório executando o seguinte comando no terminal:
git clone https://github.com/deiz0n/StudFit-API
cd StudFit-APICrie um arquivo .env com base no arquivo .env.example e preencha com suas credenciais
- As portas
5432para o PostgreSQL e587para servidor SMTP devem está disponíveis - Todas as credenciais informadas são confidenciais e serão utilizadas apenas para o funcionamento da aplicação
- Certifique-se de preencher todos os campos obrigatórios para garantir o correto funcionamento da API
Se você não estiver usando Docker, instale as dependências do projeto executando:
mvn clean installEsta opção iniciará automaticamente o banco de dados PostgreSQL, Redis e a aplicação:
docker-compose up --buildA API estará disponível em: http://localhost:80
Para parar os containers:
docker-compose downCertifique-se de que o PostgreSQL e Redis estão rodando localmente, então execute:
mvn spring-boot:runOu, após buildar o projeto:
java -jar target/studfit-0.0.1-SNAPSHOT.jarA API estará disponível em: http://localhost:{API_PORT}
Construa a imagem Docker:
docker build -t studfit-api .Execute o container:
docker run --env-file .env -p 8080:8080 studfit-apiPara melhor visualização dos diagramas, acesse: clique aqui
A API possui documentação interativa gerada automaticamente com Swagger/OpenAPI.
Após iniciar a aplicação, acesse:
http://localhost:{API_PORT}/swagger-studfit.html
Ou para acessar a especificação JSON da API:
http://localhost:{API_PORT}/v3/api-docs
src/
├── main/
│ ├── java/com/deiz0n/studfit/
│ │ ├── controllers/ # Controladores REST
│ │ ├── domain/ # Entidades, DTOs, Enums
│ │ ├── infrastructure/ # Configurações, Segurança, Repositórios
│ │ ├── services/ # Lógica de negócio
│ │ └── StudfitApplication.java
│ └── resources/
│ ├── application.properties
│ ├── db/migration/ # Scripts Flyway
│ └── templates/ # Templates de e-mail
└── test/
└── java/com/deiz0n/studfit/
├── integration/ # Testes de integração
└── unit/ # Testes unitários
Para problemas, dúvidas ou sugestões, abra uma issue no repositório do projeto.