Rotas de alunos, coordenadores, professores, turmas e cursos. Envio de emails ao criar aluno.
Para enviar emails, é necessário criar senhas de APP pela conta do Google
Você pode acessar as requisições da API no Postman através do seguinte link: Requisições no Postman
Frontend https://piardigans.vercel.app/
Backend https://pi-backend-jqsj.onrender.com
-
Clone o repositório:
git clone https://github.com/seu-usuario/seu-repositorio.git
-
Instale as dependências:
npm run dev
-
Configure o banco de dados e as variáveis de ambiente no arquivo .env. Para enviar email, crie uma senha de app
# Database - funciona com mysql e postgre DB_DIALECT=mysql # pode utilizar postgre DB_DATABASE=projeto_integrador DB_USER=root DB_PASSWORD= DB_PORT=3306 #trocar para 5432 se for postgre DB_HOST=localhost # EMAIL - é necessário criar um serviço SMTP SEND_MAIL=0 # Ativar envio de emails na criação de alunos (cuidado, pois ao criar aluno por arquivo, todos os alunos receberam o email) EMAIL_SERVICE='gmail' EMAIL_USER= EMAIL_PASS=sua-senha-de-app PORT=3000
-
Execute as migrações e seeds para preparar o banco de dados:
npx sequelize-cli db:migrate npx sequelize-cli db:seed:all
-
Inicie o servidor:
npm start
Aluno
GET /api/students
POST /api/students/store
POST /api/students/store-by-file
DELETE /api/students/{user_id}
PUT /api/students/{user_id}Professor de TG
GET /api/teachers
POST /api/teachers/store
DELETE /api/teachers/{user_id}
PUT /api/teachers/{user_id}Coordenador
GET /api/coordinators
POST /api/coordinators/store
DELETE /api/coordinators/{user_id}
PUT /api/coordinators/{user_id}Curso
GET /api/courses
POST /api/courses/store
DELETE /api/courses/{course_id}
PUT /api/courses/{course_id}Turma
GET /api/classes
POST /api/classes/store
DELETE /api/classes/{class_id}
PUT /api/classes/{class_id}-
Listar Alunos
GET /api/students
Retorna uma lista de todos os alunos cadastrados no sistema.Exemplo de retorno:
{ "id": 195, "name": "Aluno 2", "email": "aluno@gmail.com", "password": "$2b$10$MMRIPwMm5JG4e7x/ZNaf/.GtgIHRDbJei0tKqecKZ8JSXpFf.4YxO", "user_type": "student", "code": "123456", "created_at": "2024-10-07T12:25:48.000Z", "updated_at": "2024-10-07T12:25:48.000Z" }
-
Criar Aluno
POST /api/students/store
Cadastra um novo aluno. Requer os seguintes dados no corpo da requisição:name: Nome do aluno (string, obrigatório)email: Email do aluno (string, obrigatório)password: Senha do aluno (string, obrigatório)code: Código de matrícula ou identificação (string, opcional)
Exemplo de corpo da requisição:
{ "name": "Aluno", "email": "aluno@gmail.com", "password": "123", "code": "123456" }Exemplo de retorno:
{ "message": "Aluno criado", "user": { "id": 195, "name": "Aluno", "email": "aluno@gmail.com", "password": "$2b$10$MMRIPwMm5JG4e7x/ZNaf/.GtgIHRDbJei0tKqecKZ8JSXpFf.4YxO", "user_type": "student", "code": "123456", "created_at": "2024-10-07T12:25:48.000Z", "updated_at": "2024-10-07T12:25:48.000Z" } }
-
Criar Aluno por arquivo
POST /api/students/store-by-file
Permite o cadastro de vários alunos de uma só vez através de um arquivo XLSX. O arquivo deve conter os dados de cada aluno conforme o formato especificado. A requisição retorna os alunos que já estavam cadastrados.Exemplo de retorno:
{ "message": "Alunos cadastrados", "existingStudentClass": [] }
-
Apagar Aluno
DELETE /api/students/{user_id}
Remove um aluno específico pelo user_id.Exemplo de retorno:
{ "message": "Alunos apagado" }
-
Atualizar Aluno
PUT /api/students/{user_id}Atualiza os dados de um aluno específico pelo
user_id. Os campos de atualização podem ser enviados no corpo da requisição.Exemplo de retorno
{ "message": "Aluno atualizado com sucesso", "user": { "id": 2, "name": "Aluno", "email": "aluno@gmail.com", "password": "$2b$10$/JdnAvu0wX8m6LyFJ0VZHusE7EfpC1Gf2Pw6x4zR9A8I6ynzRPWt2", "user_type": "student", "code": "22316", "created_at": "2024-10-07T12:36:43.000Z", "updated_at": "2024-10-07T12:36:43.000Z", "updatedAt": "2024-10-07T12:44:15.305Z" } }
-
Listar Professores
GET /api/teachers
Retorna uma lista de todos os professores cadastrados no sistema.Exemplo de retorno:
{ "id": 5, "name": "Professor 1", "email": "professor@gmail.com", "password": "$2b$10$MMRIPwMm5JG4e7x/ZNaf/.GtgIHRDbJei0tKqecKZ8JSXpFf.4YxO", "user_type": "teacher", "created_at": "2024-10-07T12:25:48.000Z", "updated_at": "2024-10-07T12:25:48.000Z" }
-
Criar Professor
POST /api/teachers/store
Cadastra um novo professor. Requer os seguintes dados no corpo da requisição:name: Nome do professor (string, obrigatório)email: Email do professor (string, obrigatório)password: Senha do professor (string, obrigatório)
Exemplo de corpo da requisição:
{ "name": "Professor", "email": "professor@gmail.com", "password": "123", "code": "123456" }Exemplo de retorno:
{ "message": "Professor criado", "user": { "id": 6, "name": "Professor", "email": "professor@gmail.com", "password": "$2b$10$MMRIPwMm5JG4e7x/ZNaf/.GtgIHRDbJei0tKqecKZ8JSXpFf.4YxO", "user_type": "teacher", "created_at": "2024-10-07T12:25:48.000Z", "updated_at": "2024-10-07T12:25:48.000Z" } }
-
Apagar Professor
DELETE /api/teachers/{user_id}
Remove um professor específico pelo user_id.Exemplo de retorno:
{ "message": "Professor apagado" }
-
Atualizar Professor
PUT /api/teachers/update/{user_id}
Atualiza as informações de um professor existente. Requer os seguintes dados no corpo da requisição:name: Nome do professor (string, opcional)email: Email do professor (string, opcional)password: Senha do professor (string, opcional)
Exemplo de retorno
{ "message": "Professor atualizado com sucesso", "user": { "name": "Professor", "email": "professor@gmail.com", "password": "$2b$10$MMRIPwMm5JG4e7x/ZNaf/.GtgIHRDbJei0tKqecKZ8JSXpFf.4YxO", "code": "123456" } }
-
Listar Coordenador
GET /api/teachers
Retorna uma lista de todos os coordenadores cadastrados no sistema.Exemplo de retorno:
{ "id": 5, "name": "Coordenador 1", "email": "Coordenador@gmail.com", "password": "$2b$10$MMRIPwMm5JG4e7x/ZNaf/.GtgIHRDbJei0tKqecKZ8JSXpFf.4YxO", "user_type": "teacher", "created_at": "2024-10-07T12:25:48.000Z", "updated_at": "2024-10-07T12:25:48.000Z" }
-
Criar Coordenador
POST /api/teachers/store
Cadastra um novo Coordenador. Requer os seguintes dados no corpo da requisição:name: Nome do Coordenador (string, obrigatório)email: Email do Coordenador (string, obrigatório)password: Senha do Coordenador (string, obrigatório)
Exemplo de corpo da requisição:
{ "name": "Coordenador", "email": "Coordenador@gmail.com", "password": "123", "code": "123456" }Exemplo de retorno:
{ "message": "Coordenador criado", "user" : { "id": 6, "name": "Coordenador", "email": "Coordenador@gmail.com", "password": "$2b$10$MMRIPwMm5JG4e7x/ZNaf/.GtgIHRDbJei0tKqecKZ8JSXpFf.4YxO", "user_type": "coordinator", "created_at": "2024-10-07T12:25:48.000Z", "updated_at": "2024-10-07T12:25:48.000Z" } }
-
Apagar Coordenador
DELETE /api/teachers/{user_id}
Remove um Coordenador específico pelo user_id.Exemplo de retorno:
{ "message": "Coordenador apagado" }
-
Atualizar Coordenador
PUT /api/teachers/update/{user_id}
Atualiza as informações de um Coordenador existente. Requer os seguintes dados no corpo da requisição:name: Nome do Coordenador (string, opcional)email: Email do Coordenador (string, opcional)password: Senha do Coordenador (string, opcional)
Exemplo de corpo da requisição:
{ "message": "Coordenador atualizado com sucesso", "user": { "name": "Coordenador", "email": "Coordenador@gmail.com", "password": "$2b$10$MMRIPwMm5JG4e7x/ZNaf/.GtgIHRDbJei0tKqecKZ8JSXpFf.4YxO", "code": "123456" } }
-
Listar Cursos
GET /api/courses
Retorna uma lista de todos os cursos cadastrados no sistema.Exemplo de retorno:
{ "id": 1, "name": "Analise e Desenvolvimento de Sistemas", "period": "noite", "is_annual": true, "type_work": "Teórico", "created_at": "2024-10-07T12:36:43.000Z", "updated_at": "2024-10-07T12:36:43.000Z", "coordinator_id": 1 }
-
Criar Curso
POST /api/courses/storeCadastra um novo curso. Requer os seguintes dados no corpo da requisição:
name: Nome do curso (string, obrigatório)period: Periodo do curso (string, obrigatório)is_annual: Se o curso é anual (boleano, obrigatório)type_work: Tipo de trabalho (string, obrigatório)coordinator_id: ID do coordenador responsável (inteiro, obrigatório)
Exemplo de corpo da requisição:
{ "coordinator_id": 1, "name": "ADS", "period": "tarde", "is_annual": true, "type_work": "monografia" }Exemplo de retorno:
{ "message": "Curso criado", "course": { "id": 4, "coordinator_id": 1, "name": "ADS", "period": "tarde", "type_work": "monografia", "is_annual": true, "updatedAt": "2024-10-07T13:11:31.914Z", "createdAt": "2024-10-07T13:11:31.914Z" } } -
Apagar Curso
DELETE /api/courses/{course_id}
Remove um Curso específico pelocourse_id.Exemplo de retorno:
{ "message": "Curso apagado" }
-
Atualizar Curso
POST /api/courses/storeAtualiza os dados de um curso específico pelo
course_id.Exemplo de retorno:
{ "message": "Curso Atualizado", "course": { "id": 4, "coordinator_id": 1, "name": "ADS", "period": "tarde", "type_work": "monografia", "is_annual": true, "updatedAt": "2024-10-07T13:11:31.914Z", "createdAt": "2024-10-07T13:11:31.914Z" } }
-
Listar Turmas
GET /api/courses
Retorna uma lista de todas as turmas cadastradas no sistema.Exemplo de retorno:
{ "id": 1, "semester": 1, "created_at": "2024-10-07T12:36:43.000Z", "updated_at": "2024-10-07T12:36:43.000Z", "teacher_id": 1, "course_id": 1 }
-
Criar Turma
POST /api/classes/store
Cadastra uma nova turma. Requer os seguintes dados no corpo da requisição:teacher_id: ID do professor (inteiro, obrigatório)course_id: ID do curso relacionado (inteiro, obrigatório)semester: Semestre ou ano da turma (inteiro, obrigatório)
Exemplo de corpo da requisição:
{ "teacher_id": 1, "course_id": 1, "semester": 1 }Exemplo de retorno:
{ "message": "Turma criada", "class": { "id": 4, "semester": 1, "teacher_id": 1, "course_id": 1, "updatedAt": "2024-10-07T13:24:14.403Z", "createdAt": "2024-10-07T13:24:14.403Z" } }
-
Apagar Turma
DELETE /api/classes/{user_id}
Remove uma turma específica peloclass_id.Exemplo de retorno:
{ "message": "Turma apagada" }
-
Atualizar Turma
PUT /api/students/{class_id}Atualiza os dados de uma turma específica pelo
class_id.Exemplo de retorno
{ "message": "Turma atualizada com sucesso", "class": { "id": 4, "semester": 1, "teacher_id": 1, "course_id": 1, "updatedAt": "2024-10-07T13:24:14.403Z", "createdAt": "2024-10-07T13:24:14.403Z" } }
- As rotas usam
user_id,course_ideclass_idpara identificar usuários, cursos e turmas respectivamente. - As requisições
POSTePUTexigem o envio dos dados no corpo da requisição em formato JSON. - As rotas protegidas não necessitam de autenticação
- Node.js
- Express
- Sequelize (ORM para o banco de dados)
- MySQL
