Interactive Quiz Builder
Run ID: 69cac93feff1ba2b79624c9d2026-03-30Education
PantheraHive BOS
BOS Dashboard

Interactive Quiz Builder: Design Requirements & Specifications

This document outlines the comprehensive design requirements, wireframe descriptions, color palettes, and user experience (UX) recommendations for the "Interactive Quiz Builder" application. The goal is to create an intuitive, engaging, and robust platform for users to create, manage, and take interactive quizzes.


1. Project Overview & Goal

The Interactive Quiz Builder aims to provide a seamless and powerful platform for individuals and organizations to:

  • Create diverse quizzes: Supporting various question types and configurations.
  • Manage quizzes efficiently: Organize, edit, and share created content.
  • Engage participants: Offer an interactive and user-friendly quiz-taking experience.
  • Analyze performance: Provide insightful results and feedback for both creators and takers.

This initial design phase focuses on establishing a strong foundation for the user interface (UI) and user experience (UX) to ensure a delightful and productive interaction for all users.


2. Detailed Design Specifications

2.1 User Roles & Permissions

The system will primarily support two main user roles, with potential for an administrative role in future iterations.

  • Quiz Creator:

* Create, edit, delete, and publish quizzes.

* Add various question types (Multiple Choice, True/False, Fill-in-the-Blank, Short Answer).

* Configure quiz settings (time limits, attempts, scoring, feedback, visibility).

* Share quizzes via direct link, embed code, or social media.

* View detailed results and analytics for their quizzes.

* Manage their profile and created content.

  • Quiz Taker:

* Browse and search for available quizzes.

* Take quizzes within specified parameters.

* Receive instant feedback and scores upon completion.

* Review their answers and correct solutions (if enabled by creator).

* View their quiz history and performance.

* Manage their profile.

2.2 Functional Requirements (Core Features)

2.2.1 User Authentication & Profile Management

  • Secure user registration (email/password, social login options).
  • User login/logout.
  • Password recovery.
  • User profile settings (name, email, profile picture, preferences).

2.2.2 Quiz Creation Workflow

  • Dashboard: Central hub for creators to view created quizzes, drafts, and analytics summaries.
  • New Quiz Wizard: Guided multi-step process for creating a quiz.

* Step 1: Quiz Details: Title, Description, Category, Tags, Thumbnail Image.

* Step 2: Question Editor:

* Add new questions (multiple types).

* Edit/reorder/delete existing questions.

* Preview individual questions.

* Option to add explanations/feedback for correct/incorrect answers.

* Step 3: Quiz Settings & Configuration:

* Time Limit: Per question or per quiz.

* Attempts: Number of allowed attempts.

* Scoring: Points per question, total score, passing score.

* Feedback: Instant feedback, feedback after completion, show correct answers.

* Visibility: Public, private (link only), password protected.

* Shuffle Options: Shuffle questions, shuffle answer options.

* Completion Actions: Redirect URL, custom message.

  • Drafts & Publishing: Save quizzes as drafts, publish live, unpublish.

2.2.3 Question Types

  • Multiple Choice: Single correct answer, multiple correct answers.

* Option to add images/media to questions and answers.

  • True/False: Simple binary choice.
  • Fill-in-the-Blank: Text input with specific correct answers.
  • Short Answer: Free text input (requires manual review by creator or keyword matching).

2.2.4 Quiz Taking Experience

  • Browse/Search: Ability for takers to find quizzes by category, tags, or keywords.
  • Quiz Start Page: Displays quiz title, description, time limit, number of questions, and creator.
  • Interactive Quiz Interface:

* Clear display of current question and answer options.

* Progress indicator (e.g., "Question 3 of 10").

* Timer display (if applicable).

* Navigation (Next/Previous, Submit).

* Responsive design for various devices.

  • Submission & Results:

* Confirmation before final submission.

* Immediate score and feedback.

* Detailed review of answers (correct/incorrect, explanations).

2.2.5 Results & Analytics

  • Creator Dashboard:

* Summary of quiz performance (total attempts, average score, completion rate).

* Detailed breakdown per quiz: participant list, individual scores, time taken.

* Question-level analytics: difficulty, most missed questions.

* Export results (CSV, PDF).

  • Quiz Taker History:

* List of quizzes taken, scores, and completion dates.

* Ability to review past quiz attempts.

2.2.6 Sharing & Embedding

  • Unique shareable URL for each published quiz.
  • Embed code for integrating quizzes into other websites.
  • Social media sharing options.

2.3 Technical Considerations

  • Scalability: Designed to handle a growing number of quizzes and users without performance degradation.
  • Security: Robust authentication, data encryption, protection against common web vulnerabilities (OWASP Top 10).
  • Responsiveness: Fully adaptive design to ensure optimal viewing and interaction across desktops, tablets, and mobile devices.
  • Accessibility: Adherence to WCAG 2.1 guidelines for inclusive design.
  • Performance: Optimized for fast loading times and smooth interactions.

3. Wireframe Descriptions (Key Screens)

The following descriptions outline the essential elements and layout for key screens within the Interactive Quiz Builder.

3.1 Login / Signup Page

  • Layout: Centered, clean, minimalist.
  • Elements:

* Application Logo/Brand Name.

* Input fields for Email/Username and Password.

* "Login" button.

* "Forgot Password" link.

* "Don't have an account? Sign Up" link.

* Optional: Social login buttons (Google, Facebook).

3.2 Creator Dashboard

  • Layout: Two-column layout (sidebar navigation, main content area).
  • Elements:

* Sidebar: Logo, User Profile, Navigation (Dashboard, My Quizzes, Create New Quiz, Analytics, Settings, Logout).

* Main Content:

* Header: "Welcome, [User Name]!"

* Summary Cards: Quick overview (e.g., "Total Quizzes," "Total Attempts," "Average Score").

* "My Quizzes" Section: List of recently created/edited quizzes (Title, Status, Last Modified, Actions: Edit, View Results, Share).

* "Quick Actions" Section: Prominent "Create New Quiz" button.

* Analytics Snapshot: Mini-charts or key metrics for overall performance.

3.3 Create New Quiz - Step 1: Quiz Details

  • Layout: Form-based, clear progression indicator (e.g., "Step 1 of 3").
  • Elements:

* Header: "Create New Quiz - Quiz Details."

* Input Fields:

* Quiz Title (text input).

* Quiz Description (textarea, rich text editor optional).

* Category (dropdown/tags input).

* Tags (tags input).

* Thumbnail Image Upload (drag-and-drop area with preview).

* Navigation: "Next" button, "Save as Draft" button, "Cancel" button.

3.4 Create New Quiz - Step 2: Question Editor

  • Layout: Main question list on the left/top, detailed editor on the right/bottom.
  • Elements:

* Header: "Create New Quiz - Add Questions."

* Question List (Left/Top):

* List of added questions (Question #, Type, first few words of question).

* Drag-and-drop reordering.

* Edit/Delete icons for each question.

* "Add New Question" button (opens question type selector).

* Question Editor (Right/Bottom - appears when adding/editing a question):

* Dropdown for "Question Type" (Multiple Choice, True/False, Fill-in-the-Blank, Short Answer).

* Question Text Input: Rich text editor, option to add image/video.

* Answer Options (based on type):

* Multiple Choice: List of input fields, radio buttons/checkboxes to mark correct answer(s), "Add Option" button.

* True/False: Radio buttons for True/False.

* Fill-in-the-Blank: Input field for correct answer(s), option for multiple correct responses.

* Short Answer: Instructions for expected answer, optional keywords for auto-grading.

* Feedback/Explanation: Input field for optional explanation for correct/incorrect answers.

* Points: Input field for question points.

* "Save Question" button, "Cancel" button.

* Navigation: "Previous" button, "Next (Configure Settings)" button, "Save as Draft" button.

3.5 Create New Quiz - Step 3: Quiz Settings & Configuration

  • Layout: Form-based, with clear sections for different settings.
  • Elements:

* Header: "Create New Quiz - Configure Settings."

* Sections with collapsible/toggle options:

* Timing: Time limit per question/quiz (input field, toggle on/off).

* Attempts: Number of allowed attempts (dropdown/input).

* Scoring: Points per question (default), passing score (input), show score immediately (toggle).

* Feedback: Show correct answers after completion (toggle), show explanations (toggle).

* Visibility: Public, Private (link only), Password Protected (input for password).

* Display Options: Shuffle questions (toggle), Shuffle answer options (toggle).

* Completion Actions: Custom message (textarea), Redirect URL (input).

* Navigation: "Previous" button, "Publish Quiz" button, "Save as Draft" button.

3.6 Quiz Taker - Home / Browse Quizzes

  • Layout: Grid or list view of available quizzes.
  • Elements:

* Header: Application Logo, User Profile/Login button, Search bar.

* Navigation: Categories/Tags filter (sidebar or top bar).

* Quiz Cards: For each quiz: Thumbnail, Title, Description snippet, Creator, Number of Questions, "Start Quiz" button.

* Pagination/Load More.

3.7 Quiz Taking Interface

  • Layout: Clean, focused, minimal distractions.
  • Elements:

* Header: Quiz Title, Progress indicator ("Question X of Y"), Timer (if active).

* Question Area:

* Question text/media prominently displayed.

* Answer options (radio buttons/checkboxes for MC, input for Fill-in-the-Blank/Short Answer).

* Navigation: "Previous" button (disabled on first question), "Next" button, "Submit Quiz" button (on last question).

* Footer: Branding, copyright.

3.8 Quiz Results Page

  • Layout: Summary at the top, detailed breakdown below.
  • Elements:

* Header: "Quiz Completed!"

* Summary:

* Quiz Title.

* Score (e.g., "8/10 points," "80%").

* Status (e.g., "Passed," "Failed").

* Time Taken.

* Custom completion message (if configured).

* Detailed Review (optional, based on quiz settings):

* List of questions with user's answer and correct answer.

* Explanation for correct/incorrect answers.

* Visual indicators (checkmark for correct, 'X' for incorrect).

* Actions: "Retake Quiz" (if allowed), "Share Score," "Back to Quizzes."


4. Color Palette & Typography

The chosen palette and typography aim for a professional, clean, and engaging aesthetic, promoting readability and ease of use.

4.1 Color Palette

  • Primary Brand Color: #007BFF (A vibrant, trustworthy blue)

Usage:* Main call-to-action buttons, primary navigation highlights, brand elements, active states.

  • Secondary Color: #28A745 (A confident, positive green)

Usage:* Success messages, 'correct' indicators, completion badges.

  • Accent Color: #FFC107 (An energetic, attention-grabbing yellow/orange)

Usage:* Warnings, highlights, progress indicators, 'in-progress' states.

  • Neutral Colors:

* Dark Gray (Text): #343A40

Usage:* Primary text, headings for strong readability.

* Medium Gray (Subtext/Borders): #6C757D

Usage:* Secondary text, placeholders, inactive states, subtle borders.

* Light Gray (Backgrounds): #F8F9FA

Usage:* Page backgrounds, card backgrounds, alternating row colors for lists.

* White: #FFFFFF

Usage:* Main content areas, cards, modal backgrounds.

  • Error Color: #DC3545
gemini Output

Design Specifications: Interactive Quiz Builder

Project Goal: To create a robust, intuitive, and engaging platform that allows users to easily build, manage, and deploy interactive quizzes, and for participants to take these quizzes seamlessly.


1. Core Functionality & Features

The Interactive Quiz Builder will empower creators with comprehensive tools while providing a smooth and enjoyable experience for quiz takers.

1.1. Quiz Creator Features:

  • Quiz Management: Create, edit, duplicate, delete, archive quizzes.
  • Question Types: Support for various question formats:

* Multiple Choice (single/multiple correct answers)

* True/False

* Short Answer (text input, with optional auto-grading or manual review)

* Image/Video-based questions

  • Content Editor: Rich text editor for questions, answers, and explanations.
  • Media Integration: Upload images and embed videos (YouTube, Vimeo) into questions and explanations.
  • Quiz Settings:

* Quiz Title, Description, Category/Topic

* Time Limits (per question or per quiz)

* Number of Attempts

* Scoring System (points per question, partial credit)

* Pass/Fail Threshold

* Randomize Question Order

* Randomize Answer Order

* Show Correct Answers/Explanations (immediately or at end)

* Display Results (score, correct/incorrect answers)

* Public/Private Access (link sharing, password protection)

  • Preview Functionality: Test the quiz experience before publishing.
  • Publish & Share: Generate shareable links or embed codes.
  • Reporting & Analytics: View quiz completion rates, average scores, question performance, participant data.

1.2. Quiz Taker Features:

  • Intuitive Interface: Clear, uncluttered design for taking quizzes.
  • Progress Tracking: Visual indicators of completed questions and remaining time.
  • Navigation: Clear "Next," "Previous," and "Submit" actions.
  • Instant Feedback (Optional): Show correct/incorrect answers and explanations immediately after answering or at the end of the quiz.
  • Result Display: Clear summary of performance, score, and correct answers (as configured by creator).

2. User Roles & Flows

2.1. Quiz Creator User Flow:

  1. Login/Signup: Access the platform.
  2. Dashboard View: See a list of existing quizzes, create a new quiz, or view analytics.
  3. Create New Quiz:

* Step 1: Basic Info: Enter Quiz Title, Description, Topic.

* Step 2: Add Questions:

* Select Question Type (Multiple Choice, True/False, Short Answer).

* Enter Question Text, Answer Options, Mark Correct Answer(s).

* Add Explanation (optional).

* Upload Media (image/video) (optional).

* Repeat for additional questions.

* Reorder questions via drag-and-drop.

* Step 3: Configure Settings: Adjust time limits, scoring, attempts, result display, access control.

* Step 4: Preview Quiz: Test the quiz experience.

* Step 5: Publish Quiz: Make the quiz live, generate shareable link.

  1. Manage Existing Quiz: Select a quiz from the dashboard to Edit, Duplicate, Delete, or View Analytics.
  2. View Analytics: Access detailed reports on quiz performance and participant data.

2.2. Quiz Taker User Flow:

  1. Access Quiz: Click on a shared link or embed.
  2. Quiz Introduction: View Quiz Title, Description, and any instructions.
  3. Start Quiz: Begin the timed (if applicable) quiz.
  4. Answer Questions:

* Read question and answer options.

* Select answer(s).

* Navigate to the next question.

  1. Submit Quiz: Confirm submission upon completion or time expiry.
  2. View Results: See score, correct/incorrect answers, and explanations (based on creator settings).

3. Detailed Wireframe Descriptions (Key Screens)

3.1. Quiz Creator Dashboard

  • Layout:

* Header: Logo, User Profile/Settings, "Create New Quiz" prominent button.

* Sidebar Navigation (Optional/Collapsed on Mobile): Dashboard, My Quizzes, Analytics, Settings, Help.

* Main Content Area:

* "My Quizzes" Section:

* Search bar and filters (e.g., Draft, Published, Archived, Topic).

* Table/Card view of quizzes: Quiz Title, Status (Draft, Published), Number of Questions, Last Modified, Actions (Edit, Duplicate, Share, View Analytics, Delete).

* "Quick Stats" (Optional): High-level overview (e.g., Total Quizzes, Total Participants, Average Score).

  • Key Elements: Clear calls to action, sortable lists, visual status indicators.

3.2. New Quiz Setup Form (Step 1: Basic Info)

  • Layout:

* Header: "Create New Quiz," "Back to Dashboard" link.

* Progress Indicator: "1. Basic Info > 2. Questions > 3. Settings > 4. Preview & Publish."

* Form Fields:

* Quiz Title: Text input (required).

* Quiz Description: Rich text editor (optional).

* Quiz Topic/Category: Dropdown or multi-select tag input (optional).

* Thumbnail Image (Optional): Upload field with preview.

* Navigation: "Next" button, "Save Draft" button.

3.3. Question Editor Interface (Step 2: Add Questions)

  • Layout:

* Header: Quiz Title, "Add New Question" prominent button.

* Question List (Left Panel/Collapsible):

* List of added questions (e.g., "1. What is the capital of France?").

* Drag-and-drop handles for reordering.

* Edit/Delete icons for each question.

* "Add New Question" button at the bottom of the list.

* Question Editor (Right Panel):

* Question Type Selector: Dropdown/buttons (Multiple Choice, True/False, Short Answer).

* Question Text Area: Rich text editor.

* Media Upload: Button to add Image/Video, with preview area.

* Answer Section (dynamically changes based on type):

* Multiple Choice: List of input fields for answers, radio buttons/checkboxes to mark correct, "Add Answer" button.

* True/False: Two radio buttons (True/False) to select correct.

* Short Answer: Input field for expected answer(s) (optional for auto-grading), checkbox for case sensitivity.

* Explanation Field: Rich text editor for feedback (optional).

* Points for Question: Number input.

* Navigation: "Save Question," "Delete Question," "Next Step" (to Settings).

  • Key Elements: Intuitive drag-and-drop, clear visual distinction between question types, easy media integration.

3.4. Quiz Settings Panel (Step 3: Configure Settings)

  • Layout:

* Header: Quiz Title, "Back to Questions" link.

* Accordion/Tabbed Interface: Group related settings.

* General Settings:

* Time Limit (per quiz/per question): Toggle, input field (minutes/seconds).

* Number of Attempts: Dropdown/input field.

* Randomize Question Order: Toggle.

* Randomize Answer Order: Toggle.

* Scoring & Results:

* Pass/Fail Threshold: Percentage input.

* Show Correct Answers: Dropdown (Never, At End, Immediately).

* Show Explanations: Toggle.

* Show Final Score: Toggle.

* Access & Sharing:

* Public/Private: Toggle.

* Password Protection: Toggle, input field for password.

* Shareable Link display.

* Navigation: "Preview Quiz" button, "Save Settings" button.

3.5. Quiz Taker - Question Screen

  • Layout:

* Header: Quiz Title, Progress Indicator (e.g., "Question 3 of 10," or progress bar), Timer (if applicable).

* Main Content Area:

* Question Number and Text.

* Embedded Image/Video (if applicable).

* Answer Options (radio buttons for single choice, checkboxes for multiple choice, text input for short answer).

* Footer: "Previous" button, "Next" button, "Submit Quiz" button (visible on last question).

  • Key Elements: Minimal distractions, clear question presentation, responsive design for various devices.

3.6. Quiz Taker - Results Screen

  • Layout:

* Header: Quiz Title, "Thank You for Participating!" message.

* Main Content Area:

* Overall Score: Prominent display (e.g., "You scored 8/10!").

* Pass/Fail Status: Clear indicator (e.g., "Congratulations, you Passed!").

* Summary (Optional): List of questions with user's answer, correct answer, and explanation (if configured).

* Call to Action (Optional): "Retake Quiz," "Share Score."

  • Key Elements: Clear, immediate feedback, celebratory or encouraging tone.

4. Color Palette

A clean, modern, and inviting color palette will be used to ensure an engaging and professional user experience.

  • Primary Brand Color (Engagement & Action):

* Name: Panthera Blue

* Hex: #007BFF

* RGB: (0, 123, 255)

* Usage: Primary buttons, active states, progress indicators, highlights. Represents trust, intelligence, and professionalism.

  • Secondary Accent Color (Success & Positive Feedback):

* Name: Emerald Green

* Hex: #28A745

* RGB: (40, 167, 69)

* Usage: Correct answers, success messages, "Passed" indicators.

  • Tertiary Accent Color (Warning & Error Feedback):

* Name: Sunset Orange

* Hex: #FFC107 (Warning) / #DC3545 (Error)

* RGB: (255, 193, 7) / (220, 53, 69)

* Usage: Warnings, "Failed" indicators, incorrect answers, important alerts.

  • Neutral Colors (Backgrounds & Text):

* Dark Text/Primary Text:

* Name: Graphite Black

* Hex: #343A40

* RGB: (52, 58, 64)

* Usage: Headings, primary body text. Ensures high readability.

* Light Background/Card Background:

* Name: Whisper White

* Hex: #F8F9FA

* RGB: (248, 249, 250)

* Usage: Main content backgrounds, card backgrounds, panels. Provides a clean canvas.

* Border/Divider/Disabled State:

* Name: Silver Gray

* Hex: #CED4DA

* RGB: (206, 212, 218)

* Usage: Borders, dividers, subtle inactive elements.


5. Typography

  • Primary Font Family (Headings & UI Elements):

* Font: Montserrat (or similar sans-serif for modern, clean look)

* Usage: All headings (H1, H2, H3), button text, navigation labels.

* Weights: Bold (700) for main headings, Semibold (600) for subheadings and important UI text.

  • Secondary Font Family (Body Text & Explanations):

* Font: Open Sans (or similar highly readable sans-serif)

* Usage: All body text, question descriptions, answer options, explanations, form labels.

* Weights: Regular (400) for standard text, Semibold (600) for emphasized text.

  • Font Sizing (Responsive):

* H1: 2.5rem (40px) - Large, impactful.

* H2: 2rem (32px) - Section titles.

* H3: 1.5rem (24px) - Card titles, question numbers.

* Body Text: 1rem (16px) - Standard, highly readable.

* Small Text: 0.875rem (14px) - Helper text, captions.


6. Iconography

  • Style: Line-art (outline) style for a modern and lightweight feel. Icons should be consistent in stroke weight and corner radius.
  • Library: Utilize a well-established icon library (e.g., Font Awesome, Material Icons, Feather Icons) for consistency and broad coverage of common UI actions.
  • Usage: For navigation, actions (edit, delete, share), question types, feedback (checkmarks, crosses), and progress indicators.

7. User Experience (UX) Recommendations

7.1. Usability:

  • Intuitive Navigation: Clear, consistent navigation elements. Use breadcrumbs for complex workflows (e.g., within quiz creation).
  • Clear Calls to Action (CTAs): Use prominent buttons with clear labels (e.g., "Create New Quiz," "Add Question," "Publish").
  • Instant Feedback: Provide immediate visual feedback for user actions (e.g., successful save, validation errors, loading states).
  • Error Prevention & Handling: Validate inputs in real-time. Provide clear, actionable error messages. Offer "undo" options where possible (e.g., deleting a question).
  • Drag-and-Drop: Implement for reordering
gemini Output

Finalized Design Assets: Interactive Quiz Builder

This document outlines the comprehensive and detailed design specifications for the "Interactive Quiz Builder," providing a robust foundation for development. The design prioritizes clarity, intuitive user experience, and a modern aesthetic, ensuring a powerful yet user-friendly tool for creating engaging quizzes.


Executive Summary

The design for the Interactive Quiz Builder focuses on streamlining the quiz creation process while offering rich customization options. This deliverable finalizes the visual identity, defines core UI components, provides detailed wireframe descriptions for key screens, and offers critical UX recommendations. The aim is to deliver a professional, accessible, and highly efficient builder that empowers users to create compelling quizzes with ease.


I. Core Design Principles

The following principles guided the finalization of these design assets:

  • Clarity & Simplicity: Ensure all elements are easy to understand and navigate, reducing cognitive load.
  • Intuitive Workflow: Guide users through the quiz creation process with logical steps and clear calls to action.
  • Engaging & Modern: Employ a clean, contemporary visual style that is appealing and professional.
  • Responsive & Accessible: Design for optimal performance across various devices and ensure inclusivity for all users.
  • Efficient & Productive: Provide tools and layouts that allow users to build quizzes quickly and effectively.

II. Visual Identity & Branding

A. Color Palette

A balanced color palette has been selected to provide a professional yet inviting feel, ensuring good contrast and clear visual hierarchy.

  • Primary Brand Color (Interaction & Key Actions):

* Purpose: Dominant color for primary buttons, active states, important headings, and branding elements.

* Hex: #3B82F6

* RGB: 59, 130, 246

* Usage: "Create New Quiz" button, "Save" button, active navigation links.

  • Secondary Accent Color (Highlight & Support):

* Purpose: To complement the primary color, used for secondary actions, accents, and progress indicators.

* Hex: #60A5FA

* RGB: 96, 165, 250

* Usage: Hover states for primary buttons, progress bars, subtle decorative elements.

  • Neutral Palette (Backgrounds & Text):

* Dark Text/Primary Text:

* Hex: #1F2937

* RGB: 31, 41, 55

* Usage: Main body text, headings.

* Secondary Text/Subtle Text:

* Hex: #4B5563

* RGB: 75, 85, 99

* Usage: Placeholder text, helper text, secondary information.

* Light Grey (Borders/Dividers):

* Hex: #D1D5DB

* RGB: 209, 213, 219

* Usage: Input field borders, card separators, subtle dividers.

* Off-White (Main Background):

* Hex: #F9FAFB

* RGB: 249, 250, 251

* Usage: Primary page backgrounds, content areas.

* White (Component Backgrounds):

* Hex: #FFFFFF

* RGB: 255, 255, 255

* Usage: Cards, modals, sidebars.

  • Feedback Colors:

* Success:

* Hex: #10B981

* RGB: 16, 185, 129

* Usage: Quiz saved, action successful.

* Warning:

* Hex: #F59E0B

* RGB: 245, 158, 11

* Usage: Pending actions, non-critical alerts.

* Error:

* Hex: #EF4444

* RGB: 239, 68, 68

* Usage: Validation errors, critical issues.

B. Typography

A clean and highly readable sans-serif font family will be used to maintain a professional and modern aesthetic.

  • Primary Font Family: Inter (or a similar modern sans-serif like Roboto, Open Sans)

* Purpose: Used for all UI elements, headings, and body text.

* Weights: Regular (400), Medium (500), Semi-Bold (600), Bold (700)

  • Heading Styles:

* H1 (Page Title): Font size: 2.25rem (36px), Line-height: 1.2, Weight: Semi-Bold (600), Color: #1F2937

* H2 (Section Title): Font size: 1.875rem (30px), Line-height: 1.25, Weight: Semi-Bold (600), Color: #1F2937

* H3 (Card Title/Sub-section): Font size: 1.5rem (24px), Line-height: 1.33, Weight: Medium (500), Color: #1F2937

* H4 (Component Title): Font size: 1.25rem (20px), Line-height: 1.5, Weight: Medium (500), Color: #1F2937

  • Body Text:

* Default: Font size: 1rem (16px), Line-height: 1.6, Weight: Regular (400), Color: #1F2937

* Small: Font size: 0.875rem (14px), Line-height: 1.5, Weight: Regular (400), Color: #4B5563

  • Call-to-Action (CTA) Text:

* Font size: 1rem (16px), Weight: Semi-Bold (600)

C. Iconography

  • Style: Modern, minimalist, outline-style icons. Filled versions may be used sparingly for active states or specific emphasis.
  • Source: Utilize a reputable icon library (e.g., Font Awesome, Feather Icons, Material Icons) for consistency and scalability.
  • Common Icons:

* Navigation: Home, Dashboard, Settings, Help, Profile

* Actions: Add (+), Edit (Pencil), Delete (Trash Can), Save (Disk/Checkmark), Publish (Rocket/Upload), Preview (Eye), Duplicate, Share

* Quiz Elements: Question Mark (for question types), Image, Video, Text, Checkbox, Radio Button, Timer

* Feedback: Checkmark (Success), Exclamation Mark (Warning), X (Error)

D. Imagery/Illustrations (General Guidance)

  • Style: Focus on modern, clean, and often abstract or flat illustrations that complement the UI without distracting. If photography is used, it should be high-quality, professional, and relevant.
  • Usage: Primarily for empty states, onboarding, or feature highlights. Avoid overly busy or conflicting imagery.

III. UI Component Specifications

A. Buttons

  • Border-Radius: 0.375rem (6px) for all buttons.
  • Padding:

* Default: 0.75rem (12px) vertical, 1.5rem (24px) horizontal.

* Small: 0.5rem (8px) vertical, 1rem (16px) horizontal.

  • Font: Inter, Semi-Bold (600), 1rem (16px).
  • Primary Button:

* Default: Background: #3B82F6, Text: #FFFFFF

* Hover: Background: #2563EB (darker blue)

* Active: Background: #1D4ED8 (even darker blue), subtle shadow

* Disabled: Background: #D1D5DB, Text: #9CA3AF

  • Secondary Button (Outline):

* Default: Background: transparent, Border: 1px solid #D1D5DB, Text: #4B5563

* Hover: Background: #F3F4F6, Border: 1px solid #9CA3AF, Text: #1F2937

* Active: Background: #E5E7EB, Border: 1px solid #6B7280

* Disabled: Background: transparent, Border: 1px solid #E5E7EB, Text: #9CA3AF

  • Ghost Button (Text-only):

* Default: Background: transparent, Text: #4B5563

* Hover: Background: #F3F4F6, Text: #1F2937

* Active: Background: #E5E7EB

* Disabled: Text: #9CA3AF

  • Destructive Button (e.g., Delete):

* Default: Background: #EF4444, Text: #FFFFFF

* Hover: Background: #DC2626

* Active: Background: #B91C1C

B. Input Fields

  • Border-Radius: 0.375rem (6px).
interactive_quiz_builder.md
Download as Markdown
Copy all content
Full output as text
Download ZIP
IDE-ready project ZIP
Copy share link
Permanent URL for this run
Get Embed Code
Embed this result on any website
Print / Save PDF
Use browser print dialog
\n\n\n"); var hasSrcMain=Object.keys(extracted).some(function(k){return k.indexOf("src/main")>=0;}); if(!hasSrcMain) zip.file(folder+"src/main."+ext,"import React from 'react'\nimport ReactDOM from 'react-dom/client'\nimport App from './App'\nimport './index.css'\n\nReactDOM.createRoot(document.getElementById('root')!).render(\n \n \n \n)\n"); var hasSrcApp=Object.keys(extracted).some(function(k){return k==="src/App."+ext||k==="App."+ext;}); if(!hasSrcApp) zip.file(folder+"src/App."+ext,"import React from 'react'\nimport './App.css'\n\nfunction App(){\n return(\n
\n
\n

"+slugTitle(pn)+"

\n

Built with PantheraHive BOS

\n
\n
\n )\n}\nexport default App\n"); zip.file(folder+"src/index.css","*{margin:0;padding:0;box-sizing:border-box}\nbody{font-family:system-ui,-apple-system,sans-serif;background:#f0f2f5;color:#1a1a2e}\n.app{min-height:100vh;display:flex;flex-direction:column}\n.app-header{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:40px}\nh1{font-size:2.5rem;font-weight:700}\n"); zip.file(folder+"src/App.css",""); zip.file(folder+"src/components/.gitkeep",""); zip.file(folder+"src/pages/.gitkeep",""); zip.file(folder+"src/hooks/.gitkeep",""); Object.keys(extracted).forEach(function(p){ var fp=p.startsWith("src/")?p:"src/"+p; zip.file(folder+fp,extracted[p]); }); zip.file(folder+"README.md","# "+slugTitle(pn)+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\nnpm install\nnpm run dev\n\`\`\`\n\n## Build\n\`\`\`bash\nnpm run build\n\`\`\`\n\n## Open in IDE\nOpen the project folder in VS Code or WebStorm.\n"); zip.file(folder+".gitignore","node_modules/\ndist/\n.env\n.DS_Store\n*.local\n"); } /* --- Vue (Vite + Composition API + TypeScript) --- */ function buildVue(zip,folder,app,code,panelTxt){ var pn=pkgName(app); var C=cc(pn); var extracted=extractCode(panelTxt); zip.file(folder+"package.json",'{\n "name": "'+pn+'",\n "version": "0.0.0",\n "type": "module",\n "scripts": {\n "dev": "vite",\n "build": "vue-tsc -b && vite build",\n "preview": "vite preview"\n },\n "dependencies": {\n "vue": "^3.5.13",\n "vue-router": "^4.4.5",\n "pinia": "^2.3.0",\n "axios": "^1.7.9"\n },\n "devDependencies": {\n "@vitejs/plugin-vue": "^5.2.1",\n "typescript": "~5.7.3",\n "vite": "^6.0.5",\n "vue-tsc": "^2.2.0"\n }\n}\n'); zip.file(folder+"vite.config.ts","import { defineConfig } from 'vite'\nimport vue from '@vitejs/plugin-vue'\nimport { resolve } from 'path'\n\nexport default defineConfig({\n plugins: [vue()],\n resolve: { alias: { '@': resolve(__dirname,'src') } }\n})\n"); zip.file(folder+"tsconfig.json",'{"files":[],"references":[{"path":"./tsconfig.app.json"},{"path":"./tsconfig.node.json"}]}\n'); zip.file(folder+"tsconfig.app.json",'{\n "compilerOptions":{\n "target":"ES2020","useDefineForClassFields":true,"module":"ESNext","lib":["ES2020","DOM","DOM.Iterable"],\n "skipLibCheck":true,"moduleResolution":"bundler","allowImportingTsExtensions":true,\n "isolatedModules":true,"moduleDetection":"force","noEmit":true,"jsxImportSource":"vue",\n "strict":true,"paths":{"@/*":["./src/*"]}\n },\n "include":["src/**/*.ts","src/**/*.d.ts","src/**/*.tsx","src/**/*.vue"]\n}\n'); zip.file(folder+"env.d.ts","/// \n"); zip.file(folder+"index.html","\n\n\n \n \n "+slugTitle(pn)+"\n\n\n
\n \n\n\n"); var hasMain=Object.keys(extracted).some(function(k){return k==="src/main.ts"||k==="main.ts";}); if(!hasMain) zip.file(folder+"src/main.ts","import { createApp } from 'vue'\nimport { createPinia } from 'pinia'\nimport App from './App.vue'\nimport './assets/main.css'\n\nconst app = createApp(App)\napp.use(createPinia())\napp.mount('#app')\n"); var hasApp=Object.keys(extracted).some(function(k){return k.indexOf("App.vue")>=0;}); if(!hasApp) zip.file(folder+"src/App.vue","\n\n\n\n\n"); zip.file(folder+"src/assets/main.css","*{margin:0;padding:0;box-sizing:border-box}body{font-family:system-ui,sans-serif;background:#fff;color:#213547}\n"); zip.file(folder+"src/components/.gitkeep",""); zip.file(folder+"src/views/.gitkeep",""); zip.file(folder+"src/stores/.gitkeep",""); Object.keys(extracted).forEach(function(p){ var fp=p.startsWith("src/")?p:"src/"+p; zip.file(folder+fp,extracted[p]); }); zip.file(folder+"README.md","# "+slugTitle(pn)+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\nnpm install\nnpm run dev\n\`\`\`\n\n## Build\n\`\`\`bash\nnpm run build\n\`\`\`\n\nOpen in VS Code or WebStorm.\n"); zip.file(folder+".gitignore","node_modules/\ndist/\n.env\n.DS_Store\n*.local\n"); } /* --- Angular (v19 standalone) --- */ function buildAngular(zip,folder,app,code,panelTxt){ var pn=pkgName(app); var C=cc(pn); var sel=pn.replace(/_/g,"-"); var extracted=extractCode(panelTxt); zip.file(folder+"package.json",'{\n "name": "'+pn+'",\n "version": "0.0.0",\n "scripts": {\n "ng": "ng",\n "start": "ng serve",\n "build": "ng build",\n "test": "ng test"\n },\n "dependencies": {\n "@angular/animations": "^19.0.0",\n "@angular/common": "^19.0.0",\n "@angular/compiler": "^19.0.0",\n "@angular/core": "^19.0.0",\n "@angular/forms": "^19.0.0",\n "@angular/platform-browser": "^19.0.0",\n "@angular/platform-browser-dynamic": "^19.0.0",\n "@angular/router": "^19.0.0",\n "rxjs": "~7.8.0",\n "tslib": "^2.3.0",\n "zone.js": "~0.15.0"\n },\n "devDependencies": {\n "@angular-devkit/build-angular": "^19.0.0",\n "@angular/cli": "^19.0.0",\n "@angular/compiler-cli": "^19.0.0",\n "typescript": "~5.6.0"\n }\n}\n'); zip.file(folder+"angular.json",'{\n "$schema": "./node_modules/@angular/cli/lib/config/schema.json",\n "version": 1,\n "newProjectRoot": "projects",\n "projects": {\n "'+pn+'": {\n "projectType": "application",\n "root": "",\n "sourceRoot": "src",\n "prefix": "app",\n "architect": {\n "build": {\n "builder": "@angular-devkit/build-angular:application",\n "options": {\n "outputPath": "dist/'+pn+'",\n "index": "src/index.html",\n "browser": "src/main.ts",\n "tsConfig": "tsconfig.app.json",\n "styles": ["src/styles.css"],\n "scripts": []\n }\n },\n "serve": {"builder":"@angular-devkit/build-angular:dev-server","configurations":{"production":{"buildTarget":"'+pn+':build:production"},"development":{"buildTarget":"'+pn+':build:development"}},"defaultConfiguration":"development"}\n }\n }\n }\n}\n'); zip.file(folder+"tsconfig.json",'{\n "compileOnSave": false,\n "compilerOptions": {"baseUrl":"./","outDir":"./dist/out-tsc","forceConsistentCasingInFileNames":true,"strict":true,"noImplicitOverride":true,"noPropertyAccessFromIndexSignature":true,"noImplicitReturns":true,"noFallthroughCasesInSwitch":true,"paths":{"@/*":["src/*"]},"skipLibCheck":true,"esModuleInterop":true,"sourceMap":true,"declaration":false,"experimentalDecorators":true,"moduleResolution":"bundler","importHelpers":true,"target":"ES2022","module":"ES2022","useDefineForClassFields":false,"lib":["ES2022","dom"]},\n "references":[{"path":"./tsconfig.app.json"}]\n}\n'); zip.file(folder+"tsconfig.app.json",'{\n "extends":"./tsconfig.json",\n "compilerOptions":{"outDir":"./dist/out-tsc","types":[]},\n "files":["src/main.ts"],\n "include":["src/**/*.d.ts"]\n}\n'); zip.file(folder+"src/index.html","\n\n\n \n "+slugTitle(pn)+"\n \n \n \n\n\n \n\n\n"); zip.file(folder+"src/main.ts","import { bootstrapApplication } from '@angular/platform-browser';\nimport { appConfig } from './app/app.config';\nimport { AppComponent } from './app/app.component';\n\nbootstrapApplication(AppComponent, appConfig)\n .catch(err => console.error(err));\n"); zip.file(folder+"src/styles.css","* { margin: 0; padding: 0; box-sizing: border-box; }\nbody { font-family: system-ui, -apple-system, sans-serif; background: #f9fafb; color: #111827; }\n"); var hasComp=Object.keys(extracted).some(function(k){return k.indexOf("app.component")>=0;}); if(!hasComp){ zip.file(folder+"src/app/app.component.ts","import { Component } from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\n\n@Component({\n selector: 'app-root',\n standalone: true,\n imports: [RouterOutlet],\n templateUrl: './app.component.html',\n styleUrl: './app.component.css'\n})\nexport class AppComponent {\n title = '"+pn+"';\n}\n"); zip.file(folder+"src/app/app.component.html","
\n
\n

"+slugTitle(pn)+"

\n

Built with PantheraHive BOS

\n
\n \n
\n"); zip.file(folder+"src/app/app.component.css",".app-header{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;gap:16px}h1{font-size:2.5rem;font-weight:700;color:#6366f1}\n"); } zip.file(folder+"src/app/app.config.ts","import { ApplicationConfig, provideZoneChangeDetection } from '@angular/core';\nimport { provideRouter } from '@angular/router';\nimport { routes } from './app.routes';\n\nexport const appConfig: ApplicationConfig = {\n providers: [\n provideZoneChangeDetection({ eventCoalescing: true }),\n provideRouter(routes)\n ]\n};\n"); zip.file(folder+"src/app/app.routes.ts","import { Routes } from '@angular/router';\n\nexport const routes: Routes = [];\n"); Object.keys(extracted).forEach(function(p){ var fp=p.startsWith("src/")?p:"src/"+p; zip.file(folder+fp,extracted[p]); }); zip.file(folder+"README.md","# "+slugTitle(pn)+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\nnpm install\nng serve\n# or: npm start\n\`\`\`\n\n## Build\n\`\`\`bash\nng build\n\`\`\`\n\nOpen in VS Code with Angular Language Service extension.\n"); zip.file(folder+".gitignore","node_modules/\ndist/\n.env\n.DS_Store\n*.local\n.angular/\n"); } /* --- Python --- */ function buildPython(zip,folder,app,code){ var title=slugTitle(app); var pn=pkgName(app); var src=code.replace(/^\`\`\`[\w]*\n?/m,"").replace(/\n?\`\`\`$/m,"").trim(); var reqMap={"numpy":"numpy","pandas":"pandas","sklearn":"scikit-learn","tensorflow":"tensorflow","torch":"torch","flask":"flask","fastapi":"fastapi","uvicorn":"uvicorn","requests":"requests","sqlalchemy":"sqlalchemy","pydantic":"pydantic","dotenv":"python-dotenv","PIL":"Pillow","cv2":"opencv-python","matplotlib":"matplotlib","seaborn":"seaborn","scipy":"scipy"}; var reqs=[]; Object.keys(reqMap).forEach(function(k){if(src.indexOf("import "+k)>=0||src.indexOf("from "+k)>=0)reqs.push(reqMap[k]);}); var reqsTxt=reqs.length?reqs.join("\n"):"# add dependencies here\n"; zip.file(folder+"main.py",src||"# "+title+"\n# Generated by PantheraHive BOS\n\nprint(title+\" loaded\")\n"); zip.file(folder+"requirements.txt",reqsTxt); zip.file(folder+".env.example","# Environment variables\n"); zip.file(folder+"README.md","# "+title+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\npython3 -m venv .venv\nsource .venv/bin/activate\npip install -r requirements.txt\n\`\`\`\n\n## Run\n\`\`\`bash\npython main.py\n\`\`\`\n"); zip.file(folder+".gitignore",".venv/\n__pycache__/\n*.pyc\n.env\n.DS_Store\n"); } /* --- Node.js --- */ function buildNode(zip,folder,app,code){ var title=slugTitle(app); var pn=pkgName(app); var src=code.replace(/^\`\`\`[\w]*\n?/m,"").replace(/\n?\`\`\`$/m,"").trim(); var depMap={"mongoose":"^8.0.0","dotenv":"^16.4.5","axios":"^1.7.9","cors":"^2.8.5","bcryptjs":"^2.4.3","jsonwebtoken":"^9.0.2","socket.io":"^4.7.4","uuid":"^9.0.1","zod":"^3.22.4","express":"^4.18.2"}; var deps={}; Object.keys(depMap).forEach(function(k){if(src.indexOf(k)>=0)deps[k]=depMap[k];}); if(!deps["express"])deps["express"]="^4.18.2"; var pkgJson=JSON.stringify({"name":pn,"version":"1.0.0","main":"src/index.js","scripts":{"start":"node src/index.js","dev":"nodemon src/index.js"},"dependencies":deps,"devDependencies":{"nodemon":"^3.0.3"}},null,2)+"\n"; zip.file(folder+"package.json",pkgJson); var fallback="const express=require(\"express\");\nconst app=express();\napp.use(express.json());\n\napp.get(\"/\",(req,res)=>{\n res.json({message:\""+title+" API\"});\n});\n\nconst PORT=process.env.PORT||3000;\napp.listen(PORT,()=>console.log(\"Server on port \"+PORT));\n"; zip.file(folder+"src/index.js",src||fallback); zip.file(folder+".env.example","PORT=3000\n"); zip.file(folder+".gitignore","node_modules/\n.env\n.DS_Store\n"); zip.file(folder+"README.md","# "+title+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\nnpm install\n\`\`\`\n\n## Run\n\`\`\`bash\nnpm run dev\n\`\`\`\n"); } /* --- Vanilla HTML --- */ function buildVanillaHtml(zip,folder,app,code){ var title=slugTitle(app); var isFullDoc=code.trim().toLowerCase().indexOf("=0||code.trim().toLowerCase().indexOf("=0; var indexHtml=isFullDoc?code:"\n\n\n\n\n"+title+"\n\n\n\n"+code+"\n\n\n\n"; zip.file(folder+"index.html",indexHtml); zip.file(folder+"style.css","/* "+title+" — styles */\n*{margin:0;padding:0;box-sizing:border-box}\nbody{font-family:system-ui,-apple-system,sans-serif;background:#fff;color:#1a1a2e}\n"); zip.file(folder+"script.js","/* "+title+" — scripts */\n"); zip.file(folder+"assets/.gitkeep",""); zip.file(folder+"README.md","# "+title+"\n\nGenerated by PantheraHive BOS.\n\n## Open\nDouble-click \`index.html\` in your browser.\n\nOr serve locally:\n\`\`\`bash\nnpx serve .\n# or\npython3 -m http.server 3000\n\`\`\`\n"); zip.file(folder+".gitignore",".DS_Store\nnode_modules/\n.env\n"); } /* ===== MAIN ===== */ var sc=document.createElement("script"); sc.src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js"; sc.onerror=function(){ if(lbl)lbl.textContent="Download ZIP"; alert("JSZip load failed — check connection."); }; sc.onload=function(){ var zip=new JSZip(); var base=(_phFname||"output").replace(/\.[^.]+$/,""); var app=base.toLowerCase().replace(/[^a-z0-9]+/g,"_").replace(/^_+|_+$/g,"")||"my_app"; var folder=app+"/"; var vc=document.getElementById("panel-content"); var panelTxt=vc?(vc.innerText||vc.textContent||""):""; var lang=detectLang(_phCode,panelTxt); if(_phIsHtml){ buildVanillaHtml(zip,folder,app,_phCode); } else if(lang==="flutter"){ buildFlutter(zip,folder,app,_phCode,panelTxt); } else if(lang==="react-native"){ buildReactNative(zip,folder,app,_phCode,panelTxt); } else if(lang==="swift"){ buildSwift(zip,folder,app,_phCode,panelTxt); } else if(lang==="kotlin"){ buildKotlin(zip,folder,app,_phCode,panelTxt); } else if(lang==="react"){ buildReact(zip,folder,app,_phCode,panelTxt); } else if(lang==="vue"){ buildVue(zip,folder,app,_phCode,panelTxt); } else if(lang==="angular"){ buildAngular(zip,folder,app,_phCode,panelTxt); } else if(lang==="python"){ buildPython(zip,folder,app,_phCode); } else if(lang==="node"){ buildNode(zip,folder,app,_phCode); } else { /* Document/content workflow */ var title=app.replace(/_/g," "); var md=_phAll||_phCode||panelTxt||"No content"; zip.file(folder+app+".md",md); var h=""+title+""; h+="

"+title+"

"; var hc=md.replace(/&/g,"&").replace(//g,">"); hc=hc.replace(/^### (.+)$/gm,"

$1

"); hc=hc.replace(/^## (.+)$/gm,"

$1

"); hc=hc.replace(/^# (.+)$/gm,"

$1

"); hc=hc.replace(/\*\*(.+?)\*\*/g,"$1"); hc=hc.replace(/\n{2,}/g,"

"); h+="

"+hc+"

Generated by PantheraHive BOS
"; zip.file(folder+app+".html",h); zip.file(folder+"README.md","# "+title+"\n\nGenerated by PantheraHive BOS.\n\nFiles:\n- "+app+".md (Markdown)\n- "+app+".html (styled HTML)\n"); } zip.generateAsync({type:"blob"}).then(function(blob){ var a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download=app+".zip"; a.click(); URL.revokeObjectURL(a.href); if(lbl)lbl.textContent="Download ZIP"; }); }; document.head.appendChild(sc); } function phShare(){navigator.clipboard.writeText(window.location.href).then(function(){var el=document.getElementById("ph-share-lbl");if(el){el.textContent="Link copied!";setTimeout(function(){el.textContent="Copy share link";},2500);}});}function phEmbed(){var runId=window.location.pathname.split("/").pop().replace(".html","");var embedUrl="https://pantherahive.com/embed/"+runId;var code='';navigator.clipboard.writeText(code).then(function(){var el=document.getElementById("ph-embed-lbl");if(el){el.textContent="Embed code copied!";setTimeout(function(){el.textContent="Get Embed Code";},2500);}});}