FIT DREAMS API

Repositório com o objetivo de implementar uma API REST em rails de um sistema de uma academia, em que vários alunos podem ser matriculados em diversas aulas, das quais cada uma será ministrada por um único professor.

Os usuários podem ter uma dentre 3 roles, que são criadas por seed, sendo elas 'aluno' (id 1), 'professor' (id 2) e 'admin' (id 3), sendo que apenas os professores e admins tem permissão de manipular (criar, editar e excluir) categorias e aulas. Um aluno pode se matricular/desmatriculr em alguma aula, porém não pode matricular outro aluno, enquanto que os professores e adminstradores tem permissão de matricular/desmatricular qualquer aluno de qualquer aula.

Banco de Dados

O esquemático do banco de dados pode ser em encontrado no db_diagram e o SGBD escolhido para o projeto foi o postgreSQL.

Gems utilizadas e versões

Para o desenvolvimento do projeto foi optado pela utilização da versão 6.1.5 do rails e da versão 2.7.2 do ruby. Adicionalmente, foram utilizadas outras gems para simplificar e facilitar o desenvolvimento do projeto, dentre elas:

Rodando o projeto

Para inicializar o projeto, comece rodando bundle seguido de um rails db:setup e, caso tenha dado tudo certo, basta rodar um rails s para rodar o servidor.

Para facilitar os testes das requisições que exigem que o usuário seja um admin ou um professor (como edição de categorias e aulas), foi optado por permitir a escolha da role do usuário em seu cadastro. Dessa forma, para testar os métodos dessas controllers, basta criar um novo usuário pela rota post /users/sign_up passando 2 ou 3 para o parâmetro role_id e, em seguida efetuar o login com o email e senha cadastrados (rota post /users/sign_in) para obter o token de autenticação do usuário. Com o token de autenticação do usuário em mãos, basta passar as seguintes informações do usuário no header da requisição: X-User-Email: email_cadastrado e X-User-Token: token_de_autenticacao_obtido_no_login.

Deploy

A API teve seu deploy feito no heroku, e sua URL base é https://fit-dreams-api.herokuapp.com/. Testes para os casos de sucesso e falha para cada requisição podem ser encontrados nos arquivos dentro do diretório spec/requests. Adicionalmente, caso prefira, também é possível importar o arquivo JSON do insomnia que contém chamadas para todas as requisições implementadas utilizando a URL do deploy.