Back to Course

Welcome to the Ultimate Online Quiz Practice App!

0% Complete
0/0 Steps
Lesson 1 of 1
In Progress

Online Quiz App

Sonu January 3, 2025

Statement of Work (SOW): Online Quiz App


1. Project Overview

The Online Quiz App is an end-to-end application designed for users to create, participate in quizzes, and view results. The app will support user authentication, a quiz creation module, a quiz-taking interface with a timer, and leaderboard functionality. The application will be built using Flask for the backend and React for the frontend, with data stored in PostgreSQL.


2. Objectives

  • Provide a seamless and intuitive platform for quiz creation and participation.
  • Ensure robust user authentication and secure data handling.
  • Deliver a leaderboard system to foster competitive engagement.

3. Scope of Work

3.1 Functional Features

  1. User Authentication:
    • Login and Signup using email/password.
    • Password encryption for secure storage.
    • Persistent sessions with JWT-based authentication.
  2. Quiz Creation:
    • Admin and user roles for quiz creation.
    • Add multiple-choice questions (MCQs).
    • Specify time limits for quizzes.
  3. Take Quizzes:
    • Quiz-taking interface with a real-time timer.
    • Submit answers and track progress.
  4. Results and Leaderboard:
    • View quiz scores after submission.
    • Display a leaderboard based on user scores.

4. User Stories in Gherkin Format

User Authentication

Feature: User Authentication
  Scenario: User signs up
    Given I am on the signup page
    When I enter my email, password, and confirm password
    And I click on "Sign Up"
    Then I should see a success message
    And my account should be created.

  Scenario: User logs in
    Given I have a registered account
    And I am on the login page
    When I enter my email and password
    And I click on "Login"
    Then I should be redirected to the dashboard.

Quiz Creation

Feature: Quiz Creation
  Scenario: User creates a quiz
    Given I am logged in as an admin or user
    And I am on the "Create Quiz" page
    When I provide a quiz title, description, and questions with answers
    And I set a time limit
    Then I should be able to save the quiz.

Taking Quizzes

Feature: Taking Quizzes
  Scenario: User starts a quiz
    Given I am logged in
    And I select a quiz from the "Available Quizzes" list
    When I click on "Start Quiz"
    Then I should see the first question and a timer.

  Scenario: User submits a quiz
    Given I am taking a quiz
    When I answer all questions
    And I click "Submit"
    Then my score should be calculated
    And I should see the results.

Leaderboard

Feature: Leaderboard
  Scenario: View leaderboard
    Given I am logged in
    When I navigate to the "Leaderboard" page
    Then I should see a ranked list of users based on scores.

5. Wireframes

  1. Login/Signup Page
    • Input fields for email and password
    • “Sign Up” and “Login” buttons.
  2. Dashboard
    • Button to create a quiz
    • List of available quizzes.
  3. Create Quiz Page
    • Fields for quiz title, description, and questions.
    • Option to add multiple-choice answers.
  4. Quiz Taking Page
    • Question display area
    • Multiple-choice answer options
    • Timer visible at the top.
  5. Results Page
    • Score display
    • List of correct and incorrect answers.
  6. Leaderboard Page
    • Ranked table of users with scores and quiz titles.

6. Acceptance Criteria

  • Authentication: Users must log in or sign up before accessing features.
  • Quiz Creation: Quizzes must save successfully and display in the dashboard.
  • Quiz Taking: Timer must work accurately and stop when the quiz is submitted.
  • Leaderboard: Scores must update immediately after submission.

7. Test Cases

Authentication

Test Case IDTest ScenarioExpected Result
TC001User signs upAccount created successfully
TC002User logs in with valid dataRedirect to dashboard
TC003Login with invalid dataDisplay error message

Quiz Creation

Test Case IDTest ScenarioExpected Result
TC004Create a quiz with valid dataQuiz saved successfully
TC005Create a quiz with incomplete dataDisplay validation errors

Quiz Taking

Test Case IDTest ScenarioExpected Result
TC006Start a quizTimer starts and questions appear
TC007Submit a quiz before time endsScore calculated and displayed

Leaderboard

Test Case IDTest ScenarioExpected Result
TC008View leaderboardDisplay ranked list of users

8. Validations

  • Authentication:
    • Password must be at least 8 characters.
    • Email format validation.
  • Quiz Creation:
    • Quiz title cannot be empty.
    • At least one question is required.
  • Quiz Taking:
    • Timer should reset for each new quiz.

9. Deliverables

  • Complete Online Quiz App with source code.
  • Documentation for setup and usage.
  • Wireframes and API specifications.

10. Timeline

Day 1-2: Authentication module development.

Day 3-4: Quiz creation and display functionality.

Day 5: Quiz-taking interface with timer.

Day 6: Results calculation and leaderboard implementation.

Day 7: Testing, debugging, and deployment.


11. Assumptions

  • APIs for quiz-related operations will use REST principles.
  • Deployment will be on a single-server environment.
  • Minimal styling to focus on functionality.

12. Out of Scope

  • Mobile application development.
  • Advanced analytics or reporting.

Build your project portfolio on LinkedIn: Sample Post:

🚀 Exciting Announcement: Practice [Project Name] Complete! 🚀

I’m thrilled to share a major milestone at my Internship @CareerPhi! 🎉

[Project Name] is designed to [briefly describe the purpose or problem it solves], and we couldn’t be more proud of the hands-on practice we’ve done. 🌍

🎥 Check out the video below for a quick overview of what we’ve built and how it works:

👉 [Insert link to the video or embed video]

A huge shoutout to my incredible team and partners who made this possible:

[Tag team members, if any]
[Tag CareerPhi]
This is just the beginning, and we have exciting upcoming projects. 🚀 Stay tuned for more updates, and if you’re interested in learning more, feel free to connect with me or reach out! Let’s keep innovating together! 💡

ProjectName #Innovation #TechForGood #CareerDevelopment #Teamwork

Submit Project

Please enable JavaScript in your browser to complete this form.
Share technologies’ list in detail.
NOTE: Begin your video by talking about your experience at CareerPhi, experience of building this project and then continue. Describe your code and project in depth, don’t cut corners. You can upload your video on Google Drive or similar and keep sharing as “Anyone with the link can view”. Share the Google Drive link in this box.
We need a link to LinkedIn & other social media post showcasing your project. Remember, we are trying to build your portfolio so more recruiters start noticing you.
You consent CareerPhi may use the content on various platforms

Responses

Your email address will not be published. Required fields are marked *