Case study for MySQL, Node/Express and Angular

You have to create an Angular application that allows the user to create question banks, using which he/she may select a bunch of questions for a given test.

DB Design:

Plan for tables that contain the following:

  • Question bank name
  • One or more questions (text) for each question bank
  • Two or more choices (text) for each questions
  • Answer key for a given question
  • Question papers for a given test which contain one or more questions from the bank
  • User information for logging in
  • (and any other tables, if you prefer to add)

Middleware

Use Node and Express combination to create a REST endpoint, to provide the following operations:

  • Create a new question bank
  • Add a question and relevant choices with the correct answer key to a given bank
  • Get the list of all question banks
  • Get the list of all questions along with choices and answer keys for a given question bank
  • Edit a question/choice/answer key and save the same
  • Delete a choice for a given question
  • Delete a question from a given question bank
  • Create a new question paper (with name of the question paper, questions for the question paper)
  • Login using JWT authentication
  • (and any other options that you think suitable)

Front-end

The application to be developed using Angular, should provide the following features:

  • Login to access any operations (this is the homepage)
  • Once the user logs in, there has to be a provision for the user to logout
  • Provide menu options for the following:
    • View available question banks
    • View available question papers
    • Add a new question bank
    • Add a new question to a question bank
    • Create a new question paper
  • When viewing the question banks, provide the options:
    • Edit the name of the question bank
    • Delete the question bank
    • View questions in the question bank
  • When you view a particular question bank, provide the following options:
    • Add a new question to the bank
      • Delete a question from the bank
    • Edit the text for question or choice
    • Change the answer key for a question in the bank
  • When you are creating a question paper, following features to be provided:
    • You should be able to select question from different question banks (for example, a question paper may contain questions from the banks HTML, JavaScript and CSS)
    • Should be able to remove a question from the paper, before saving the question paper
  • When you are viewing a particular question paper, following features must be provided:
    • Download the question paper in Plain Text format. It should include:
      • Title of the question paper
      • Question and the choices in bullet format
      • At the end, the question numbers and the answer keys

You are free to add more features to the case study and be more creative.

© 2020 All rights reserved by Learn with Vinod @ https://vinod.co