Quiz Structure
Every quiz in ClassQuiz consists of:- Metadata: Title, description, cover image, and background styling
- Questions: A list of quiz questions with various types and configurations
- Visibility: Public or private access control
Supported Question Types
ClassQuiz supports 7 different question types defined inclassquiz/db/models.py:131-138:
ABCD (Multiple Choice)
The most common question type with up to 4 answer choices.CHECK (Checkbox)
Similar to ABCD but explicitly designed for multiple correct answers.RANGE (Numeric Range)
Asks players to select a value within a range. Perfect for estimation questions.TEXT (Open-ended Text)
Accepts text input from players. Supports case-sensitive matching.Provide multiple acceptable variations of the answer to improve player experience (e.g., “water”, “Water”, “H2O”).
VOTING (Poll)
Non-graded questions where players vote on options. Great for icebreakers and opinions.ORDER (Ordering)
Players arrange items in the correct sequence.SLIDE (Information Slide)
Non-interactive content slides for instructions or information.Best Practices
Time Limits
Keep it reasonable
Time limits are in seconds. Typical ranges:
- Simple recall: 10-20 seconds
- Reading comprehension: 30-45 seconds
- Complex problems: 60-120 seconds
Test your quiz
Always play through your quiz to ensure time limits are appropriate. What seems easy to you might be challenging for players.
Question Writing
DO:- Use clear, unambiguous language
- Keep questions concise
- Avoid double negatives
- Include images to enhance engagement
- Vary question types to maintain interest
- Use trick questions that frustrate players
- Include questions that require external knowledge
- Make all questions the same difficulty
- Use unclear or low-quality images
Answer Choices
- Consistency: Keep answer lengths similar
- Randomization: Enable answer shuffling to prevent pattern memorization
- Colors: Use the default color scheme for accessibility
Visual Design
Cover Images
Add a compelling cover image to your quiz:- In quiz browsing lists
- On the game lobby screen
- When sharing quiz links
Background Styling
Customize quiz appearance with:background_color: Solid color hex codebackground_image: Storage item ID for background image
If both
background_color and background_image are set, the image takes precedence.Creating a Quiz via API
Endpoint:POST /api/v1/quiz
Request Body:
Starting a Game
Once your quiz is created, start a game session: Endpoint:POST /api/v1/quiz/start/{quiz_id}
Parameters:
game_mode: Game mode identifiercaptcha_enabled: Enable CAPTCHA for player join (default: true)custom_field: Optional custom field prompt (e.g., “Student ID”)randomize_answers: Shuffle answer order (default: false)
game_pin at /play.
Import and Export
Export to Excel
Export your quiz structure to Excel for offline editing: Endpoint:GET /api/v1/eximport/excel/{quiz_id}
The spreadsheet includes:
- Quiz title and description
- Question list with answers
- Time limits
- Correct answer indicators
classquiz/routers/eximport.py:140-194 for implementation details.
Import from Excel
Import quizzes from Excel files: Endpoint:POST /api/v1/quiz/excel-import
Body: multipart/form-data with Excel file
Excel format:
- Row 5, Column B: Title
- Row 6, Column B: Description
- Row 13+: Questions with answers
Export as .cqa File
ClassQuiz Archive (.cqa) format includes the quiz and all images: Endpoint:GET /api/v1/eximport/{quiz_id}
The file contains:
- Gzip-compressed quiz JSON
- Embedded images as binary data
- Special delimiters for parsing
Storage Management
Images and media count toward your storage quota:- Check usage:
user.storage_used(in bytes) - Free tier limit:
settings.free_storage_limit - Storage check happens before import/upload operations
Quiz Visibility
Private Quizzes
By default, quizzes are private (public: false):
- Only visible to the creator
- Not indexed in public search
- Can be played by anyone with the direct link
Public Quizzes
Making a quiz public (public: true):
- Appears in quiz search results
- Indexed by Meilisearch
- Anyone can view and play
- Subject to moderation review
Performance Tips
- Optimize images: Compress images before uploading to reduce storage and load times
- Limit question count: 20-30 questions is ideal for engagement
- Test on mobile: Ensure questions are readable on small screens
- Cache static content: Use CDN for frequently accessed quizzes
Analytics
Every quiz tracks:views: How many times the quiz page was viewedplays: Number of game sessions startedlikes: Positive ratingsdislikes: Negative ratings