Este é um projeto de enquetes simplificadas onde criadores podem adicionar questionários com perguntas e estudantes podem respondê-las. O sistema garante o controle de acesso através de permissões, e toda a documentação da API é gerada via Swagger.
-
Gerenciamento de Usuários:
- CRUD completo de usuários com permissões de criador ou estudante.
-
Questionários:
- Criadores podem criar, atualizar e deletar questionários, bem como adicionar perguntas.
-
Respostas:
- Estudantes podem responder perguntas de um questionário.
-
Autenticação JWT:
- Inclusão de permissões no payload do token JWT para controle de acesso.
-
Documentação com Swagger:
- A API é completamente documentada para facilitar o consumo de terceiros.
| Tabela | Descrição |
|---|---|
| Usuarios | Informações dos usuários, como nome e senha. |
| Permissões | Tabelas para controle de permissões de usuário. |
| Questionários | Tabela de questionários criados por usuários. |
| Perguntas | Contém as perguntas associadas aos questionários. |
| Respostas | Respostas dos estudantes às perguntas. |
- Node.js: Ambiente de execução para JavaScript no backend.
- Express.js: Framework web para Node.js.
- PostgreSQL: Sistema de gerenciamento de banco de dados relacional.
- Sequelize: ORM para interagir com o banco de dados.
- JWT (JSON Web Tokens): Para autenticação e controle de acesso.
- Swagger: Para documentação automática da API.
- Yup: Biblioteca de validação de schema.
/src
/controllers
UsuarioController.js
QuestionarioController.js
RespostaController.js
/models
Usuario.js
Permissao.js
Questionario.js
Pergunta.js
Resposta.js
/routes
usuarios.js
questionarios.js
respostas.js
/middlewares
autenticacaoJWT.js
verificarPermissao.js
/migrations
create-tabelas.js
/config
database.js
/docs
swagger.jsgit clone https://github.com/lucasplcorrea/Pergunta-365.gitnpm installCrie um arquivo .env com as variáveis de ambiente do banco de dados:
DB_HOST=localhost
DB_PORT=5432
DB_USER=seu_usuario
DB_PASS=sua_senha
DB_NAME=nome_do_banco
JWT_SECRET=sua_chave_secretanpx sequelize-cli db:migratenpm starthttp://localhost:3000/api-docs- Criadores têm permissão para criar, editar e deletar questionários.
- Estudantes podem responder a questionários, mas não podem criá-los ou editá-los.
Middleware de Controle de Acesso:
- A API verifica as permissões do usuário no token JWT, garantindo que apenas usuários autorizados possam acessar determinados recursos.
expressjsonwebtokenbcryptjssequelizepgswagger-jsdocswagger-ui-expressyupdotenv