Skip to content

feat: Expand Quiz Categories and Implement Comprehensive Question Bank with Difficulty LevelsΒ #1

@smirk-dev

Description

@smirk-dev

🎯 Feature Description

Currently, QuizzyArcade only includes 2 quiz categories (HTML Mastery and JavaScript Ninja) with 2 questions each. The data/games.jsx file even has a comment indicating more games should be added: // Add 4–6 more quiz games...

This feature request proposes to significantly expand the quiz content by:

  1. Adding 4-6 new diverse quiz categories
  2. Increasing questions per category to 8-10 for a more engaging experience
  3. Implementing a difficulty level system (Easy, Medium, Hard)
  4. Enhancing the data structure to support better quiz mechanics

πŸ” Problem Statement

Current Issues:

  • Limited Content: Only 2 categories with 2 questions each makes the app feel incomplete
  • Poor Replayability: Users can exhaust all content in under 2 minutes
  • No Difficulty Progression: All questions are treated equally, no challenge scaling
  • Incomplete Implementation: The comment in games.jsx shows this was intended but never completed
  • Missed Gamification Opportunity: No way to track difficulty achievements or progression

User Impact:

  • New users might think the app is a demo/incomplete
  • No incentive to return after completing all quizzes
  • The "arcade" feel is diminished without variety and progression

✨ Proposed Solution

1. New Quiz Categories (Add 4-6 of these):

  • CSS Wizard - CSS selectors, flexbox, grid, animations
  • React Fundamentals - Hooks, components, props, state management
  • Git & GitHub Pro - Version control, branching, pull requests
  • Web Security Essentials - OWASP, XSS, CSRF, authentication
  • Node.js Backend - Express, middleware, REST APIs
  • TypeScript Mastery - Types, interfaces, generics
  • Algorithm Challenge - Big O, data structures, problem-solving
  • Database Fundamentals - SQL, NoSQL, queries

2. Enhanced Data Structure:

export const games = [
  {
    id: 'html',
    title: 'HTML Mastery',
    icon: 'code-slash-outline', // Ionicons name
    color: '#E34C26', // HTML orange
    difficulty: 'easy',
    questions: [
      {
        question: 'What does HTML stand for?',
        options: [
          'Hyper Trainer Marking Language',
          'HyperText Markup Language',
          'HighText Machine Language',
          'Hyperlinks and Text Markup Language'
        ],
        correctAnswer: 'HyperText Markup Language',
        difficulty: 'easy',
        explanation: 'HTML stands for HyperText Markup Language, the standard language for creating web pages.'
      },
      // 7-9 more questions...
    ],
  },
  // More categories...
];

3. New Features to Support:

  • Difficulty Badges: Display difficulty level on GameCard component
  • Progress Tracking: Show X/Y quizzes completed per difficulty
  • Explanations: Show correct answer explanation after answering (optional)
  • Category Icons & Colors: Visual differentiation between categories
  • Question Randomization: Shuffle questions and options for replayability

πŸ“‹ Implementation Checklist

Phase 1: Data Structure Enhancement

  • Update games.jsx schema with new fields (icon, color, difficulty, explanation)
  • Add 4-6 new quiz categories with unique IDs
  • Create 8-10 questions per category (total ~60-80 questions)
  • Ensure diverse difficulty distribution (40% easy, 40% medium, 20% hard)
  • Add explanations for educational value

Phase 2: Component Updates

  • Update GameCard.jsx to display category icon and difficulty badge
  • Modify QuizQuestion.jsx to show difficulty indicator
  • Add optional explanation display after answer submission
  • Implement question/option randomization logic

Phase 3: UI/UX Enhancements

  • Add difficulty color coding (green=easy, yellow=medium, red=hard)
  • Create filter/sort options on HomeScreen (by difficulty, category)
  • Update ScoreScreen to show difficulty-based achievements
  • Add category completion badges

Phase 4: Testing & Documentation

  • Test all questions for accuracy
  • Verify randomization works correctly
  • Update README with new quiz categories
  • Add screenshots showcasing new features

🎨 Visual Mockup Concept

GameCard Enhancement:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ 🎨 CSS Wizard           [MEDIUM] β”‚
β”‚ Complete: 0/10 questions             β”‚
β”‚ Color: #1572B6 (CSS Blue)           β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

QuizQuestion Enhancement:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ React Fundamentals    Question 3/10  β”‚
β”‚ Difficulty: ⭐⭐ Medium              β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ What hook is used for side effects? β”‚
β”‚ β—‹ useState                           β”‚
β”‚ β—‹ useEffect                          β”‚
β”‚ β—‹ useContext                         β”‚
β”‚ β—‹ useReducer                         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

🎯 Benefits

For Users:

  • 10x more content: From 4 to 60+ questions
  • Better engagement: Difficulty progression keeps it challenging
  • Educational value: Explanations help learning
  • Replayability: Randomization makes each session unique
  • Professional feel: Complete app, not a prototype

For the Project:

  • Hacktoberfest ready: Significant contribution opportunity
  • Showcase value: Demonstrates real-world quiz app capabilities
  • Portfolio piece: Contributors can highlight substantial feature work
  • Community engagement: More content = more user testing feedback

🀝 Contribution Opportunity

This is an ideal Hacktoberfest 2025 issue because:

  • βœ… Clearly defined scope with multiple sub-tasks
  • βœ… Suitable for intermediate developers (React Native + data structures)
  • βœ… Significant impact on user experience
  • βœ… Well-documented requirements and acceptance criteria
  • βœ… Allows creative input (question writing, category selection)
  • βœ… Multiple contributors can collaborate (divide categories)

πŸ“š Technical Requirements

  • Maintain existing React Native + Expo architecture
  • Follow current code style and component patterns
  • Ensure data structure remains simple (no external APIs)
  • Test on both iOS and Android (Expo Go)
  • Keep bundle size reasonable

πŸ”— Related Files

  • data/games.jsx - Primary file to update
  • Components/GameCard.jsx - Display enhancements
  • Components/QuizQuestion.jsx - Question UI updates
  • screens/HomeScreen.jsx - Category filtering/sorting
  • screens/ScoreScreen.jsx - Difficulty-based feedback

πŸš€ Getting Started

Interested contributors should:

  1. Comment on this issue to claim specific categories
  2. Fork the repository
  3. Create a feature branch: feat/expand-quiz-categories
  4. Start with data structure updates in games.jsx
  5. Submit PR with descriptive commit messages
  6. Ensure questions are accurate and well-researched

πŸ’¬ Discussion

I'm happy to discuss:

  • Which 4-6 categories are most valuable
  • Difficulty level implementation approach
  • UI/UX design decisions
  • Question quality standards
  • Breaking this into multiple PRs if needed

Labels: enhancement, good first issue, hacktoberfest, help wanted, feature
Priority: High
Estimated Effort: 8-16 hours
Difficulty: Intermediate

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions