Loading repository data…
Loading repository data…
bagrielz / repository
API Rest of a question generator application.
A DevQuest API é o motor de back-end de uma plataforma de ensino gamificada voltada para a área de Tecnologia da Informação. A aplicação funciona como um provedor de recursos essenciais para potencializar o aprendizado técnico de desenvolvedores e estudantes de TI.
O grande diferencial tecnológico do projeto está na sua integração nativa com a API da OpenAI (ChatGPT). Em vez de depender de um banco de dados estático e limitado com perguntas repetitivas, a DevQuest API utiliza inteligência artificial generativa para criar, sob demanda, questões teóricas e exercícios práticos de programação 100% personalizados, adaptando-se estritamente à tecnologia (ex: Java, React, SQL) e ao nível de dificuldade (ex: Iniciante, Intermediário, Avançado) selecionados pelo usuário.
Para garantir a manutenibilidade, o projeto foi estruturado seguindo:
.env)Nessa seção deixo o template do arquivo .env. Modifique os valores das variáveis com valores de sua preferência.
.env..env e preencha-o seguindo o modelo interativo abaixo:# 🛡️ CONFIGURAÇÕES DE SEGURANÇA (JWT)
TOKEN_JWT_SECRETKEY=sua_chave_secreta_jwt_aqui
TOKEN_JWT_EXPIRELENGTH=360000
# 🐘 CREDENCIAIS DO BANCO DE DADOS (POSTGRESQL)
POSTGRES_USER=seu_usuario_do_banco
POSTGRES_PASSWORD=sua_senha_do_banco
POSTGRES_DB=devquest-db
# ☕ CONEXÃO DA API SPRING COM O BANCO
# ⚠️ ATENÇÃO: Mantenha o host como 'db' para a comunicação interna do Docker!
SPRING_DATASOURCE_URL=jdbc:postgresql://db:5432/devquest-db
SPRING_DATASOURCE_USERNAME=seu_usuario_do_banco
SPRING_DATASOURCE_PASSWORD=sua_senha_do_banco
# 🤖 INTEGRAÇÃO COM A INTELIGÊNCIA ARTIFICIAL (CHATGPT)
SPRING_AI_OPENAI_API_KEY=sua_chave_real_da_openai_aqui
Graças à containerização do projeto, você não precisa ter o Java ou o PostgreSQL instalados na sua máquina. O Docker cuidará de todo o processo de build e execução.
.env com valores de sua preferênciaAbra o seu terminal e clone o projeto:
git clone https://github.com/msimeaor/backend-devquest.git
Com o Docker Desktop aberto e rodando em segundo plano, execute o único comando abaixo no seu terminal para que o Docker baixe as imagens, compile o projeto Java e inicialize todos os serviços:
docker compose up -d --build
Com a API em execução, acesse a documentação Swagger no navegador:
http://localhost:8080/swagger-ui/index.html
A partir da interface do Swagger, siga o fluxo abaixo para autenticar, gerar uma questão e responder a questão gerada.
No Swagger, localize o controller AuthController e execute o endpoint:
POST /auth/signin

Utilize o seguinte body:
{
"username": "msimeaor",
"password": "123"
}

Após executar a requisição, copie o token retornado na response.
Ele será utilizado nas próximas chamadas da API.
No controller QuestionController, execute o endpoint:
GET /api/questions/generate

No header Authorization, informe o token retornado no login utilizando o seguinte formato:
Authorization: Bearer SEU_TOKEN_AQUI
Nos campos:
technologydifficultySelecione qualquer uma das opções disponíveis nos selects.

Após executar a requisição, uma nova questão será gerada.
Ainda no QuestionController, execute o endpoint:
GET /api/questions/answer/{id}

Utilize:
id = 1
Informe novamente o token JWT no header Authorization:
Authorization: Bearer SEU_TOKEN_AQUI
No campo status, selecione qualquer uma das opções disponíveis.

Após executar a requisição, a questão será respondida com sucesso.
Seguindo os passos acima, o usuário conseguirá: