Nest is a prograssive Node.js framework with TypeScript for building efficient and scalable server-side/backend applications.
Online quiz application backend with Node.js framework. available features are user login, user register, quiz addition, question addition.
- Node.js, NestJs
- Typescript
- PassportJs with Jwt
- MongoDB
- Mongoose
- Rest client
- git
- Users (Quiz Setter/Taker)
- Quiz
- Question -> Options
- src
- auth # User authentication and JWT implementation features
- users # User Entity implementation
- dto # Data Transfer Object
- schemas # Entity schema
- quizTest # Quiz Entity implementation
- dto
- schemas
- quizQuestions # Quiz Question Entity implementation
- dto
- schemas
- example-questions.json # question examples in json format
- example-quizes.json # quiz examples in json format
- rest-client-test.http # api request test example
$ npm install -g @nestjs/cli
$ npm install
# development
$ npm run start
# watch mode
$ npm run start:dev
# production mode
$ npm run start:prod
POST http://localhost:3000/users/registerUser
Content-Type: application/json
{
"username": "test2",
"fullName": "Test User 2",
"email": "test2@mail.com",
"password": "pass123"
}
POST http://localhost:3000/auth/login
Content-Type: application/json
{
"username": "test2",
"password": "pass123"
}
GET http://localhost:3000/quiz-test/availableQuizes
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9....
POST http://localhost:3000/users/requestQuiz
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.....
{
"username": "test2",
"quizId": "quiz03"
}
POST http://localhost:3000/users/submitQuiz
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9....
{
"username": "test2",
"quizId": "quiz03",
"requestId": "c5661978-eb8e-47ff-bbc0-611aa411a64d",
"score": 30
}
6 - Add new QuizTest (Example Quizes in Json Format)
POST http://localhost:3000/quiz-test/newQuizTest
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9....
{
"quizId": "quiz04",
"quizName": "Quiz-04",
"quizDescription": "This is Quiz-04",
"numberOfQuestions": 7,
"quizDuration": 18,
"quizStatus": "active",
"quizIsOpen": false
}
PATCH http://localhost:3000/quiz-test/updateQuiz
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9....
{
"quizId": "quiz04",
"quizIsOpen": true
}
8 - add a new quiz question (Example Questions in Json Format)
POST http://localhost:3000/quiz-questions/newQuestion
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9....
{
"questionId": "q10",
"questionName": "Development Knowledge",
"questionDescription": "What is correct MIME type for JSON ?",
"answerOptions": [
{
"optionId": 1,
"optionDescription": "json/mime",
"isCorrect": false
},
{
"optionId": 2,
"optionDescription": "application/js",
"isCorrect": false
},
{
"optionId": 3,
"optionDescription": "application/xml",
"isCorrect": false
},
{
"optionId": 4,
"optionDescription": "none of these",
"isCorrect": true
}
],
"correctAnswer": 4,
"isPublished": true
}
GET http://localhost:3000/quiz-questions/questions
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9....
PATCH http://localhost:3000/quiz-questions/updateQuestion
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9....
{
"questionId": "q1",
"questionName": "Meaning of life"
}