/QuizCraft

An application for creating and taking quizzes.

Primary LanguageJavaScript

logo

QuizLab

  • Link to the hosted project: QuizLab

1. Project Description

QuizLab is a SPA serving as a platform for creating and managing educational resources, i.e. quizzes. It is implemented with JavaScript, React and Chakra UI. Data layer is handled with Google Firebase Realtime Database and Google Cloud Storage.


2. Project information

  • Language and version: JavaScript ES2021
  • Platform and version: Node 18.0+
  • Libraries: React 18.2.0 and Chakra UI 2.8.1
  • Database: Firebase Realtime Database 10.5.2

3. Instructions how to setup and run the project locally

  • run npm install from the console in the project path
  • run npm run dev on the same path

4. Goals

QuizLab allows users to:

  • take a sample quiz as anonymous users
  • register for the SPA or sign in to their account
  • three-tier account system: Students, Educators, Admins with their separate dashboards
  • Students can access public quizzes, get assigned / invited to a quiz, review their quizzes and results
  • Educators can manage their quizzes, participate in educators' groups and see stats on their quizzes
  • Admins can ban users (prevent them from logging into their accounts) and edit/delete any quiz

5. Full project view

The App is separated into three layers of access: Public, Private and Admin. Their respective level of authorization is described below:

    • Public MUST do:
    • access the Landing page and participate in a Sample Quiz
    • register and/or log in to their account
      • see few of the most recent and popular public quizzes
    • Public SHOULD do:
    • browse public quizzes
    • Public COULD do:
    • see news and articles, i.e. any relevant information on the "feed"

    • Private MUST do:
    • sign in and sign out to their account
    • have a different role: either Student (default) or Educator (upon verification)
    • update their profile (first name / last name / photo / address / phone number)
    • Private SHOULD do:
    • username should NOT be editable
    • Private COULD do:
    • upload photo on their profile

    • Admin MUST do:
    • advanced search options (search by: name, email, username; list posts by author, date, etc. (sort and filter))
    • ban / lift ban
    • edit / delete any quiz
    • Admin SHOULD do:
    • grant another user Admin privileges
    • Admin COULD do:
    • anything: Admin is god