Online Quiz App
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
- User Authentication:
- Login and Signup using email/password.
- Password encryption for secure storage.
- Persistent sessions with JWT-based authentication.
- Quiz Creation:
- Admin and user roles for quiz creation.
- Add multiple-choice questions (MCQs).
- Specify time limits for quizzes.
- Take Quizzes:
- Quiz-taking interface with a real-time timer.
- Submit answers and track progress.
- 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
- Login/Signup Page
- Input fields for email and password
- “Sign Up” and “Login” buttons.
- Dashboard
- Button to create a quiz
- List of available quizzes.
- Create Quiz Page
- Fields for quiz title, description, and questions.
- Option to add multiple-choice answers.
- Quiz Taking Page
- Question display area
- Multiple-choice answer options
- Timer visible at the top.
- Results Page
- Score display
- List of correct and incorrect answers.
- 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 ID | Test Scenario | Expected Result |
---|---|---|
TC001 | User signs up | Account created successfully |
TC002 | User logs in with valid data | Redirect to dashboard |
TC003 | Login with invalid data | Display error message |
Quiz Creation
Test Case ID | Test Scenario | Expected Result |
TC004 | Create a quiz with valid data | Quiz saved successfully |
TC005 | Create a quiz with incomplete data | Display validation errors |
Quiz Taking
Test Case ID | Test Scenario | Expected Result |
TC006 | Start a quiz | Timer starts and questions appear |
TC007 | Submit a quiz before time ends | Score calculated and displayed |
Leaderboard
Test Case ID | Test Scenario | Expected Result |
TC008 | View leaderboard | Display 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
Responses