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.js
git clone https://github.com/lucasplcorrea/Pergunta-365.git
npm install
Crie 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_secreta
npx sequelize-cli db:migrate
npm start
http://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.
express
jsonwebtoken
bcryptjs
sequelize
pg
swagger-jsdoc
swagger-ui-express
yup
dotenv