Skip to content

AbatGabriel/API-Agendamento_de_Aulas

Repository files navigation

API de Agendamento de Aulas

Essa aplicação consiste em um backend para a administração de agendamento de aulas de alunos com instrutores. A partir dessa aplicação, é possível cadastrar dados de alunos e instrutores, edita-los e deleta-los, além de permitir o upload de documentos(txt, docx e pdf) e associá-los a agendamentos existentes.

Autores

Iniciando a aplicação

Primeiramente, clone o repositório atual na sua máquina, pelo terminal a partir do seguinte comando:

git clone <link HTTPS ou SSH> .

Após, utilize o seguinte comando no terminal, estando localizado na pasta da aplicação:

npm install

Na seção "Database" da sua conta MongoDB, escolha uma data base, clique em connect, escolha a opção "Drivers" para o "Connect to your application" e copie a connection string gerada para a Database.

Modifique o nome do arquivo ".env.example" para ".env", e no valor "MONGO_URI" iguale a connection string gerada, lembrando de completar os parametros dela. A connection string tem o seguinte formato:

mongodb+srv://<nome-do-usuario>:<password>@<host>.mongodb.net/<database-name>?retryWrites=true&w=majority

Sendo os campos "password" a senha da sua database, "database-name" o nome da database a ser criada e o campo "nome-do-usuario" o seu nome de usuário no MongoDB e o campo "host" o cluster do seu banco de dados, sendo esses dois últimos campos gerados automaticamente.

Copie o Cloud Name de sua conta no cloudinary e cole no valor "CLOUD_NAME" dentro do arquivo ".env". Também copie a API Key e cole no valor "CLOUD_API_KEY", o mesmo para a API Secret que deve ser colada no valor "CLOUD_API_SECRET".

Após essas configurações da aplicação do MongoDB e do Cloudinary, está na hora de configurar o Postman.

Com o aplicativo do Postman aberto e com sua conta logada, clique no canto superior esquerdo, na seção "My workspace" em import e arraste o arquivo "API-Agendamento-de-Aulas.postman_collection". Após isso, todas as rotas do Postman já estarão configuradas para serem testadas.

Dessa forma, a aplicação está praticamente configurada. Após tudo isso, digite no terminal o seguinte comando para iniciar a aplicação:

npm start

Utilização da aplicação

Após as instalações anteriores terem sido feitas, e a aplicação estar rodando após o comando "npm start", todas as requisições para as rotas serão feitas através do Postman, e serão explicadas a seguir.

Students Routes

Rota POST/student

A requisição para essa rota criará os dados de um estudante, sendo esses dados enviados pelo corpo da requisição e devem ser em formato JSON. O body enviado deve conter os seguintes campos:

{
    "nome": string,
    "email": string,
    "password": string,
    "role": string
}

Após o sucesso da requisição, será retornado, em formato JSON os dados do aluno criado no banco de dados, alem de ser gerado um campo "_id" com o valor identificador único para o aluno.

Rota POST/student/login

A requisição para essa rota fará a autenticação e o login de algum aluno existente no banco de dados. Os dados de "email" e "password" devem ser enviados no corpo da requisição, em formato JSON, seguindo o seguinte modelo:

{
    "email": string,
    "password": string
}

Após a autenticação ser feita com sucesso, será enviado como resposta uma mensagem de sucesso e o valor do token JWT do aluno logado.

Rota GET/students

A requisição para essa rota retornará os dados de todos os alunos cadastrados em formato JSON. Para que seja feita essa requisição, deve ser passado o valor do token JWT no Header "authorization" da aplicação no seguinte formato:

Bearer <valor-do-token>

Rota PUT/student/:id

A requisição para essa rota fará a atualização dos dados do aluno logado. Para que essa requisição seja feita, é necessário, primeiramente, passar o valor do token JWT do aluno logado no Header "authorization" da aplicação no seguinte formato:

Bearer <valor-do-token>

Após isso, devem ser fornecidos os dados a serem atualizados no corpo da requisição em formato JSON, sendo os campos possíveis de serem atualizados os seguintes:

{
    "nome": string,
    "email": string,
}

Após isso, será retornado, em formato JSON, os dados do aluno já atualizados.

Rota DELETE/student/:id

A requisição para essa rota deletará todos os dados do aluno logado. Para que essa requisição seja feita, é necessário passar o valor do token JWT do aluno logado no Header "authorization" da aplicação no seguinte formato:

Bearer <valor-do-token>

Instructors Routes

Rota POST/instructor

A requisição para essa rota criará os dados de um instrutor, sendo esses dados enviados pelo corpo da requisição e devem ser em formato JSON. O body enviado deve conter os seguintes campos:

{
    "nome": string,
    "email": string,
    "password": string,
    "especialidades": [string],
    "horariosDisponiveis": [string]
}

Após o sucesso da requisição, será retornado, em formato JSON os dados do instrutor criado no banco de dados, alem de ser gerado um campo "_id" com o valor identificador único para o instrutor.

Rota POST/instructor/login

A requisição para essa rota fará a autenticação e o login de algum instrutor existente no banco de dados. Os dados de "email" e "password" devem ser enviados no corpo da requisição, em formato JSON, seguindo o seguinte modelo:

{
    "email": string,
    "password": string
}

Após a autenticação ser feita com sucesso, será enviado como resposta uma mensagem de sucesso e o valor do token JWT do instrutor logado.

Rota GET/instructors

A requisição para essa rota retornará os dados de todos os instrutores cadastrados em formato JSON. Para que seja feita essa requisição, deve ser passado o valor do token JWT no Header "authorization" da aplicação no seguinte formato:

Bearer <valor-do-token>

Rota PUT/instructor/:id

A requisição para essa rota fará a atualização dos dados do instrutor logado. Para que essa requisição seja feita, é necessário, primeiramente, passar o valor do token JWT do instrutor logado no Header "authorization" da aplicação no seguinte formato:

Bearer <valor-do-token>

Após isso, devem ser fornecidos os dados a serem atualizados no corpo da requisição em formato JSON, sendo os campos possíveis de serem atualizados os seguintes:

{
    "nome": string,
    "email": string,
    "especialidades": [string],
    "horariosDisponiveis": [string]
}

Após isso, será retornado, em formato JSON, os dados do instrutor já atualizados.

Rota DELETE/instructor/:id

A requisição para essa rota deletará todos os dados do instrutor logado. Para que essa requisição seja feita, é necessário passar o valor do token JWT do instrutor logado no Header "authorization" da aplicação no seguinte formato:

Bearer <valor-do-token>

Scheduling Routes

Rota POST/schedule

A requisição para essa rota criará os dados de um agendamento. Para que essa requisição seja feita, é necessário, primeiramente, passar o valor do token JWT do aluno logado no Header "authorization" da aplicação no seguinte formato:

Bearer <valor-do-token>

Após isso, devem ser fornecidos os dados a serem atualizados no corpo da requisição em formato JSON, o body enviado deve conter os seguintes campos:

{
    "instrutor":"string",
    "aluno":"string",
    "horario":[string],
    "materia":[string]
}

Nos campos aluno e instrutor devem ser informados os seus respectivos IDs.

Após o sucesso da requisição, será retornado, em formato JSON os dados do agendamento criado no banco de dados, além de ser gerado um campo "_id" com o valor identificador do agendamento, que será o mesmo ID do instrutor.

Rota PUT/schedule/:id

A requisição para essa rota fará a atualização dos dados de um agendamento. Para que essa requisição seja feita, é necessário, primeiramente, passar o valor do token JWT do aluno logado no Header "authorization" da aplicação no seguinte formato:

Bearer <valor-do-token>

Após isso, devem ser fornecidos os dados a serem atualizados no corpo da requisição em formato JSON, sendo os campos possíveis de serem atualizados os seguintes:

{
    "instrutor":"string",
    "aluno":"string",
    "horario":[string],
    "materia":[string]
}

Após isso, será retornado, em formato JSON, os dados do agendamento já atualizados.

Rota DELETE/schedule/:id

A requisição para essa rota deletará o agendamento que tiver seu ID informado ao fazer a requisição. Para que essa requisição seja feita, é necessário passar o valor do token JWT do aluno logado no Header "authorization" da aplicação no seguinte formato:

Bearer <valor-do-token>

Upload Routes

Rota POST/schedule/:id/upload

A requisição para essa rota fará o upload do arquivo e o anexará a um agendamento. Para que essa requisição seja feita, é necessário, primeiramente, passar o valor do token JWT no Header "authorization" da aplicação no seguinte formato:

Bearer <valor-do-token>

Após isso, na seção body deverá ser selecionada a opção form-data, e informada uma key chamada "file" tendo como tipo File e value deverá ser o arquivo a ser anexado ao agendamento. O documento deverá ser do tipo txt, docx ou pdf com tamanho máximo de 3mb.

Após o sucesso da requisição, será retornado em formato JSON o link do arquivo no cloudinary.

Rota GET/schedule/:id/uploads

A requisição para essa rota retornará os links de todos os uploads do agendamento em formato JSON. Para que seja feita essa requisição, deve ser passado o valor do token JWT no Header "authorization" da aplicação no seguinte formato:

Bearer <valor-do-token>

Rota DOCS

A documentação do Swagger dessa aplicação pode ser acessada pela rota "/api-docs".

Tecnologias utilizadas

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published