Training Course Builder
Run ID: 69cbbc1961b1021a29a8bd302026-03-31Education
PantheraHive BOS
BOS Dashboard

Build a complete training course with modules, lesson plans, quizzes, hands-on exercises, and certification criteria for any subject.

Step 1: Research & Design Requirements - Training Course Builder

This document outlines the comprehensive design requirements, including functional and technical specifications, wireframe descriptions, color palette, and key User Experience (UX) recommendations for the "Training Course Builder" platform. This forms the foundational blueprint for development, ensuring a robust, intuitive, and engaging experience for course creators and learners alike.


1. Design Specifications

1.1 Functional Requirements

The Training Course Builder will empower users to create, manage, and publish comprehensive training courses. Key functionalities include:

  • Course Management:

* Create New Course: Define course title, description, target audience, learning objectives, and prerequisites.

* Course Settings: Edit course details, set course visibility (draft, published, archived), and define access permissions.

* Course Structure: Ability to add, edit, delete, and reorder modules and lessons within a course using an intuitive drag-and-drop interface.

* Preview Functionality: View the course as a learner at any stage of creation.

* Publish/Unpublish: Control the availability of the course to learners.

* Save Draft: Automatically and manually save progress without publishing.

* Versioning/History: Track changes and revert to previous versions of course content (optional, advanced feature).

  • Content Creation & Management:

* Rich Text Editor (WYSIWYG): For creating lesson content with formatting, images, tables, and links.

* Media Integration: Upload and embed images, videos (MP4, YouTube, Vimeo), audio files, and documents (PDF, PPT, DOCX).

* Quiz Builder:

* Support for multiple-choice (single/multiple correct answers), true/false, and short-answer questions.

* Ability to add feedback for correct and incorrect answers.

* Set quiz parameters: passing score, time limits, number of attempts.

* Question bank functionality for reusability (optional).

* Hands-on Exercise Builder:

* Define exercise title, detailed instructions, and submission requirements (e.g., text input, file upload).

* Specify evaluation criteria and provide a rubric builder.

* Resource Uploads: Attach supplementary materials (e.g., templates, external readings) to lessons or modules.

  • Certification & Completion:

* Certification Criteria: Define conditions for course completion (e.g., complete all modules, pass all quizzes, submit all exercises).

* Certificate Builder: Customize certificate templates with dynamic fields (learner name, course title, completion date) and branding elements (logo, signature).

  • User & Progress Tracking (Admin View):

* Enrollment Management: Manually enroll/unenroll learners from courses.

* Progress Monitoring: View individual learner progress, quiz scores, and exercise submission status.

* Reporting: Generate reports on course completion rates, quiz performance, and engagement metrics.

1.2 Technical Requirements

The platform will be built with scalability, security, and performance in mind.

  • Architecture:

* Cloud-native, microservices-based architecture for scalability and resilience.

* RESTful API for internal and potential external integrations.

  • Frontend:

* Responsive web application ensuring optimal experience across desktops, tablets, and mobile devices.

* Modern JavaScript framework (e.g., React, Vue, Angular) for a dynamic user interface.

  • Backend:

* Robust server-side language/framework (e.g., Node.js, Python/Django, Ruby on Rails).

* Database: PostgreSQL or MongoDB for content and user data storage.

  • Security:

* Secure user authentication and authorization (e.g., OAuth 2.0, JWT).

* Data encryption at rest and in transit (SSL/TLS).

* Regular security audits and vulnerability assessments.

  • Performance:

* Optimized asset loading (lazy loading, image compression).

* Content Delivery Network (CDN) for fast media delivery.

* Efficient database queries and caching mechanisms.

  • Accessibility:

* Adherence to WCAG 2.1 AA guidelines for inclusive design.

  • Integrations (Future Considerations):

* Learning Management System (LMS) integration.

* Payment gateway integration for paid courses.

1.3 Content Structure Requirements

A clear hierarchical structure will facilitate easy content organization and navigation for both creators and learners.

  • Course: The top-level container, defining the overall learning experience.
  • Modules: Logical groupings of lessons, often representing major topics or units.
  • Lessons: Individual learning units within modules, containing specific content elements.
  • Content Elements: The granular components within a lesson:

* Text Blocks

* Images

* Videos

* Audio

* Quizzes

* Hands-on Exercises

* Downloadable Resources (PDF, PPT, etc.)


2. Wireframe Descriptions

The following descriptions outline the key screens and their essential elements. (Note: These are textual descriptions, not visual representations).

2.1 Dashboard / Course Overview (Instructor/Admin)

  • Layout: Main content area with a left-hand navigation sidebar (e.g., "Dashboard", "My Courses", "Users", "Settings").
  • Header: Brand logo, user profile icon, "Create New Course" button.
  • Main Content:

* Summary Widgets: Quick overview of active courses, learner progress, pending reviews.

* Course List: Table or card view displaying all courses created by the user.

* Columns/Cards include: Course Title, Status (Draft, Published), Number of Learners, Completion Rate, Last Modified Date.

* Action buttons for each course: "Edit Course", "Preview", "Publish/Unpublish", "Delete".

* "Create New Course" prominent button.

2.2 Course Editor - Structure View

  • Layout:

* Left Sidebar: Course settings (Title, Description, Objectives, Audience, Prerequisites, Certification Criteria).

* Main Content Area: Visual representation of the course structure.

* Top Bar: Course Title, "Preview Course" button, "Save Draft" button, "Publish Course" button.

  • Main Content:

* "Add Module" button: Clearly visible for new module creation.

* Module Cards:

* Module Title.

* Drag-and-drop handle for reordering.

* "Add Lesson" button within each module.

* Context menu/icons for "Edit Module Details", "Delete Module".

* Lesson Cards (nested within Module Cards):

* Lesson Title.

* Drag-and-drop handle for reordering.

* "Add Content" button (or direct link to content editor).

* Context menu/icons for "Edit Lesson Details", "Delete Lesson".

2.3 Lesson Content Editor

  • Layout:

* Top Bar: Lesson Title, "Save Lesson" button, "Back to Course Structure" button.

* Left Sidebar (Optional): List of content elements within the current lesson for quick navigation.

* Main Content Area:

* Content Block Editor: A canvas where content elements are added and arranged.

* Toolbar/Palette: Icons/buttons to "Add Text Block", "Add Image", "Add Video", "Add Quiz", "Add Hands-on Exercise", "Add File Download".

* Each content block will have its own editing interface upon selection (e.g., WYSIWYG for text, upload/embed for media, dedicated forms for quizzes/exercises).

* Drag-and-drop functionality for reordering content blocks within a lesson.

2.4 Quiz Builder / Editor

  • Layout: Dedicated modal or full-page editor.
  • Quiz Settings:

* Quiz Title, Description.

* Passing Score (%).

* Time Limit (optional).

* Number of Attempts allowed.

* Enable/Disable showing correct answers after submission.

  • Question List:

* "Add New Question" button.

* Each question displayed as a collapsible card.

* Inside Question Card:

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

* Question Text input (WYSIWYG).

* For Multiple Choice: Input fields for answer options, radio buttons/checkboxes to mark correct answer(s).

* For True/False: Radio buttons for True/False, mark correct.

* For Short Answer: Input field for expected answer(s) keywords.

* Feedback fields for correct/incorrect answers.

* "Delete Question" button.

  • "Save Quiz" / "Cancel" buttons.

2.5 Hands-on Exercise Builder / Editor

  • Layout: Dedicated modal or full-page editor.
  • Exercise Details:

* Exercise Title.

* Detailed Instructions (WYSIWYG editor).

* Submission Type: Text Input, File Upload (specify allowed types).

* Required/Optional toggle.

  • Evaluation Criteria / Rubric Builder:

* "Add Rubric Item" button.

* Each rubric item: Criterion description, Max points.

  • "Save Exercise" / "Cancel" buttons.

2.6 Certification Criteria Builder

  • Layout: Section within Course Settings.
  • Requirements Checklist:

* Checkboxes for common requirements: "Complete all modules", "Pass all quizzes", "Submit all exercises".

* Option to add custom requirements with free text.

  • Certificate Template Customization:

* Live preview of the certificate.

* Fields to upload logo, add signature image.

* Dynamic text fields (e.g., [Learner Name], `[Course Title

gemini Output

This document outlines the detailed design specifications for the "Training Course Builder" application. Our goal is to create a robust, intuitive, and highly efficient platform that empowers users to construct comprehensive training courses with ease. The design prioritizes user experience, clarity, and flexibility, ensuring a professional and engaging course creation journey.


1. Executive Summary

The Training Course Builder is envisioned as a web-based application providing a rich user interface for subject matter experts, instructional designers, and trainers to conceptualize, build, and structure training courses. It will support the creation of modules, lessons (with diverse content types), quizzes, hands-on exercises, and define certification criteria. The design emphasizes a modular, drag-and-drop approach, real-time feedback, and a clean, professional aesthetic to facilitate a streamlined content creation workflow.


2. Design Specifications

2.1. Core Application Structure & Workflow

The application will follow a multi-pane layout, typically featuring a global navigation, a context-specific sidebar, and a primary content editing area. The core workflow will guide users through:

  1. Course Creation/Selection: Start a new course or select an existing one from a dashboard.
  2. Course Overview & Settings: Define global course parameters (title, description, audience, prerequisites).
  3. Module Management: Create, reorder, and structure modules.
  4. Lesson & Content Creation: Within each module, add various lesson types (text, video, audio, interactive), quizzes, and exercises.
  5. Content Editing: Dedicated editors for each content type with rich text capabilities, media embedding, and interactive element configuration.
  6. Certification & Completion Criteria: Define requirements for course completion and certification.
  7. Preview & Publish: Review the course as a learner would, then publish it.

2.2. Key Components & Functionality

  • Dashboard:

* List of all created courses (table/card view).

* "Create New Course" button.

* Search and filter capabilities.

* Course status indicators (Draft, Published, Archived).

  • Course Editor (Main Canvas):

* Left Navigation Pane: Hierarchical tree view of modules and lessons, allowing for drag-and-drop reordering.

* Central Content Area: The main workspace for editing the selected module, lesson, quiz, or exercise.

* Right Properties Pane (Contextual): Displays settings and properties relevant to the currently selected item (e.g., module title, lesson type, quiz settings, exercise instructions).

* Top Bar: Course title, "Save" (auto-save with manual override), "Preview," "Publish" buttons, and a "Settings" cog.

  • Module Management:

* Ability to add new modules.

* Rename, duplicate, delete modules.

* Drag-and-drop reordering of modules.

* Progress indicator for modules (e.g., number of lessons, completion status).

  • Lesson Management:

* Within each module, "Add Lesson/Content" button with options for:

* Text/Rich Content Lesson

* Video Lesson (upload/embed)

* Audio Lesson (upload/embed)

* File Download Lesson

* Quiz

* Hands-on Exercise

* External Link

* Drag-and-drop reordering of lessons within a module and between modules.

* Lesson status (Draft, Complete, In Review).

  • Content Editors:

* Rich Text Editor: WYSIWYG editor for text lessons, quiz descriptions, exercise instructions. Supports headings, lists, bold, italics, links, images, code blocks, tables.

* Media Embedders: Simple interfaces for uploading video/audio files or pasting embed codes (YouTube, Vimeo, SoundCloud). Automatic thumbnail generation.

* Quiz Builder:

* Question types: Multiple Choice (single/multiple answer), True/False, Short Answer, Matching, Fill-in-the-Blanks.

* Add/reorder questions.

* Set correct answers, explanations, point values.

* Quiz settings: Time limit, passing score, retake attempts, question randomization.

* Hands-on Exercise Builder:

* Rich text field for instructions, requirements.

* Option to attach starter files/templates.

* Submission type: File upload, text input, URL submission.

* Evaluation criteria/rubric editor.

  • Certification Criteria Editor:

* Define conditions for course completion:

* All lessons completed.

* Minimum score on all quizzes/specific quizzes.

* All exercises submitted/passed.

* Certificate template selection/customization (basic text fields for dynamic data).

  • Version Control & History: (Optional, but highly recommended)

* Ability to view previous saved versions of a course or specific content.

* Option to revert to a previous version.

  • Collaboration Features (Future Consideration):

* Role-based access (e.g., Editor, Reviewer).

* Commenting system for content review.

2.3. Responsive Design

The application will be fully responsive, adapting its layout and functionality for optimal viewing and interaction across various devices (desktop, tablet, mobile). While primary course creation is expected on desktop, the ability to review and make minor edits on tablets is crucial.


3. Wireframe Descriptions

Below are descriptions for key wireframes, outlining the layout and primary UI elements for a desktop view.

3.1. Wireframe 1: Dashboard - Course List

  • Layout: Full-width, single-column layout with a header.
  • Header:

* "Training Course Builder" logo/title (left).

* User profile icon, notifications (right).

  • Main Content Area:

* Title: "My Courses" (H1).

* Action Bar: "Create New Course" button (prominent, primary color), search bar, filter dropdowns (e.g., "Status," "Last Modified").

* Course List (Table View):

* Columns: Course Title, Status (Draft, Published), Modules, Last Modified, Actions.

* Each row represents a course.

* Actions column: "Edit," "Preview," "Duplicate," "Archive," "Delete" (icons or dropdown menu).

* Pagination (bottom).

3.2. Wireframe 2: New Course Creation Wizard (Modal)

  • Layout: Centered modal dialog overlaying a blurred background.
  • Header: "Create New Course" (H2), close button (X).
  • Body:

* Step 1: Course Details (tab/progress indicator).

* Form Fields:

* Course Title (required, text input).

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

* Target Audience (multi-select dropdown/tags).

* Prerequisites (text input/multi-select).

* Estimated Duration (number input + unit dropdown: hours/days/weeks).

* Course Image/Thumbnail Upload.

* Footer: "Cancel" button (secondary), "Next" button (primary).

3.3. Wireframe 3: Course Editor - Main View (Module & Lesson Management)

  • Layout: Three-column layout.
  • Top Bar:

* Course Title (H2, editable).

* "Save" (auto-save indicator), "Preview," "Publish" buttons.

* Settings cog icon.

  • Left Pane (Navigation - ~20% width):

* Header: "Course Structure" (H3).

* "Add Module" button.

* Hierarchical Tree View:

* Module 1 (expandable/collapsible)

* Lesson 1.1 (icon for type: text, video, quiz)

* Lesson 1.2

* "Add Lesson/Content" button for Module 1.

* Module 2

* ...

* Drag-and-drop handles for reordering modules and lessons.

* Context menu (right-click) for "Rename," "Duplicate," "Delete" on modules/lessons.

  • Central Pane (Content Editor - ~55% width):

* Default View (Course Overview): Course title, description, image, summary statistics (e.g., "3 Modules, 12 Lessons, 2 Quizzes").

* "Edit Course Details" button.

* When a Module is selected: Module title, description, "Add Lesson/Content" button. List of lessons within that module.

* When a Lesson is selected: (See Wireframe 4 & 5 for specific content editor views). This pane dynamically changes based on the selected item in the left pane.

  • Right Pane (Properties/Settings - ~25% width):

* Header: "Properties" (H3).

* Contextual Settings:

* For Course: Global settings link, Certification Criteria link.

* For Module: Module Title (text input), Module Description (textarea), Visibility toggle.

* For Lesson: Lesson Title (text input), Lesson Type (read-only), Visibility toggle, Prerequisites for this lesson.

3.4. Wireframe 4: Course Editor - Lesson Editor (Rich Text)

  • Layout: Similar to Wireframe 3, but Central Pane is focused on the editor.
  • Left Pane: Course structure (as before).
  • Top Bar: (As before).
  • Central Pane (Rich Text Lesson Editor):

* Lesson Title: (H2, editable).

* Rich Text Editor: Full-featured WYSIWYG editor (toolbar for bold, italic, headings, lists, links, images, video embeds, tables, code blocks).

* Content Area: Where the user types and formats lesson content.

* Media Upload: Button/area for embedding images/videos directly into the rich text.

  • Right Pane: Lesson properties (as before).

3.5. Wireframe 5: Course Editor - Quiz Builder

  • Layout: Similar to Wireframe 3, Central Pane is focused on quiz creation.
  • Left Pane: Course structure (as before).
  • Top Bar: (As before).
  • Central Pane (Quiz Builder):

* Quiz Title: (H2, editable).

* Quiz Description: (Rich text editor).

* "Add Question" Button: Dropdown for question types (MCQ, True/False, Short Answer, etc.).

* List of Questions:

* Each question appears as a collapsible card.

* Card displays question text, type, points.

* Expand card to reveal:

* Question text (rich text editor).

* Answer options (input fields, radio buttons/checkboxes for correct answer selection).

* Explanation field (rich text).

* "Add Answer Option," "Delete Question" buttons.

* Drag-and-drop handles for reordering questions.

  • Right Pane:

* Quiz Settings:

* Passing Score (%) (number input).

* Time Limit (minutes) (number input, optional).

* Number of Attempts (dropdown: 1, 2, Unlimited).

* Randomize Questions (toggle).

* Show Correct Answers After Submission (toggle).


4. Color Palettes

The chosen color palette aims for professionalism, clarity, and accessibility, reflecting a serious yet intuitive learning environment.

4.1. Primary Palette

  • Primary Blue (#007BFF): Used for primary actions (buttons, links), active states, and key navigational elements. Conveys trust and professionalism.
  • Dark Grey (#343A40): Main text color, strong headings. Ensures high readability.
  • Light Grey (#F8F9FA): Background for main content areas, providing a clean canvas.
  • Medium Grey (#E9ECEF): Borders, dividers, subtle background for sections.

4.2. Secondary Palette

  • Accent Green (#28A745): Success messages, "Publish" button, positive indicators.
  • Accent Red (#DC3545): Error messages, "Delete" actions, warnings.
  • Accent Yellow (#FFC107): Warning messages, pending status indicators.
  • Accent Purple (#6F42C1): A subtle accent for specific interactive elements or branding, if desired, without overpowering the primary blue.

4.3. Neutral Palette

  • White (#FFFFFF): Card backgrounds, modals, text input fields.
  • Light Grey (#CED4DA): Disabled states, subtle borders.
  • Dark Grey (#6C757D): Secondary text, placeholders.

4.4. Accessibility

  • All color combinations will adhere to WCAG 2.1 AA standards for contrast ratios to ensure readability for users with visual impairments.
  • Focus indicators (outlines) will be clearly visible.
  • Semantic colors (red for error, green for success) will be reinforced with icons or text to aid color-blind users.

5. UX Recommendations

5.1. Intuitive Navigation & Information Architecture

  • Clear Hierarchy: The
gemini Output

As the final step in the "Training Course Builder" workflow, this deliverable outlines the comprehensive design specifications, wireframe descriptions, color palette, and critical UX recommendations. The goal is to create a highly intuitive, professional, and efficient platform that empowers users to build engaging and effective training courses with ease.


Training Course Builder: Finalized Design Assets & UX Strategy

1. Design Philosophy & Overall Goals

Our design philosophy centers on Clarity, Efficiency, and Engagement. We aim to provide a robust yet user-friendly interface that simplifies the complex task of course creation.

  • Clarity: Ensure all actions, options, and content are easily understandable and visually distinct. Minimize cognitive load.
  • Efficiency: Streamline workflows, reduce clicks, and provide powerful tools that save creators time. Support rapid prototyping and iteration.
  • Engagement: While primarily a builder tool, the interface itself should be pleasant and encourage continuous use. The tools provided should enable creators to build highly engaging courses for their learners.
  • Professionalism: A clean, modern aesthetic that instills confidence in the platform's capabilities and the quality of the courses it produces.
  • Scalability: The design should accommodate courses of varying sizes and complexity, from short micro-learning modules to extensive certification programs.

2. Design Specifications

2.1 Target Audience

  • Primary: Instructional Designers, Corporate Trainers, Educators, Subject Matter Experts (SMEs), HR & L&D Professionals.
  • Secondary: Independent Course Creators, Consultants.
  • Key Needs: Efficiency, flexibility, ease of use, robust content creation tools, structured course management, clear certification pathways.

2.2 Platform & Responsiveness

  • Platform: Web-based application.
  • Primary Experience: Desktop/Laptop (optimised for larger screens, high productivity).
  • Secondary Experience: Tablet (responsive adjustments for content consumption and light editing).
  • Tertiary Experience: Mobile (read-only preview, limited editing functionality primarily for quick checks).
  • Responsive Strategy:

* Desktop: Multi-column layouts, sidebars, detailed toolbars.

* Tablet: Collapsible sidebars, stacked content blocks, simplified toolbars.

* Mobile: Single-column layout, drawer navigation, touch-optimized controls.

2.3 Accessibility (WCAG 2.1 AA Compliance)

  • Color Contrast: All text and interactive elements will meet WCAG AA contrast ratios.
  • Keyboard Navigation: All interactive elements will be reachable and operable via keyboard (Tab, Shift+Tab, Enter, Spacebar, Arrow keys).
  • Focus Indicators: Clear visual focus states for all interactive elements.
  • Semantic HTML: Proper use of headings, ARIA roles, and labels for screen readers.
  • Alt Text: Requirements for all user-uploaded images.
  • Scalable Text: Text resizing without loss of functionality.

2.4 Performance

  • Fast Loading: Optimized assets, lazy loading for complex modules.
  • Smooth Interactions: CSS transitions for UI changes, minimal reliance on heavy animations.
  • Efficient Data Handling: Asynchronous data loading, optimistic UI updates where appropriate.

3. Wireframe Descriptions (Key Screens)

3.1 Dashboard: Course Overview

  • Layout:

* Top Bar: Global navigation (Home, Analytics, Settings, Help, User Profile), "Create New Course" primary action button.

* Main Content Area:

* Course List: Grid or list view of all created courses. Each card/row displays: Course Title, Status (Draft, Published, Archived), Last Modified Date, Progress Bar (if applicable), Action Menu (Edit, Preview, Duplicate, Archive, Delete).

* Filters/Search: Above the course list, allowing sorting by status, date, category, and keyword search.

* Quick Stats: Optional section displaying overall course metrics (e.g., total courses, published courses).

  • Key Interactions: Clicking a course card/row navigates to the Course Editor. "Create New Course" initiates a guided setup flow.

3.2 Course Editor: Main Layout

  • Layout:

* Top Bar: Course Title (editable), "Save Draft," "Preview," "Publish Course" buttons, Course Settings (gear icon), Undo/Redo.

* Left Sidebar (Navigation):

* Collapsible/Expandable.

* Hierarchical list of course components:

* Course Details: (Title, Description, Objectives, Target Audience)

* Modules: (Expandable to show Lessons, Quizzes, Exercises)

* + Add Module button at the bottom.

* Certification: (Criteria, Certificate Design)

* Settings: (Access, Pricing, Integrations)

* Drag-and-drop functionality for reordering modules/lessons.

* Main Content Area: Dynamic area that changes based on the selected item in the Left Sidebar. This is where the actual building happens.

  • Key Interactions: Selecting an item in the sidebar loads its respective editor in the main content area. Dragging items reorders them.

3.3 Module Editor

  • Context: Main Content Area when a Module is selected.
  • Layout:

* Module Title: Large editable text field.

* Module Description: Rich text editor for detailed overview.

* Learning Objectives: Bulleted list input, with option to add/remove objectives.

* Module Resources: File upload/link input for module-level resources.

* Action Buttons: "Add Lesson," "Add Quiz," "Add Hands-on Exercise" (contextual buttons within the module's section).

  • Key Interactions: Direct inline editing. Buttons add new components within the current module.

3.4 Lesson Plan Editor

  • Context: Main Content Area when a Lesson is selected.
  • Layout:

* Lesson Title: Editable text field.

* Rich Text Editor (WYSIWYG): Primary content area. Includes:

* Standard formatting (bold, italic, underline, lists, headings).

* Media embeds (Image, Video (YouTube, Vimeo, custom upload), Audio).

* File attachments (PDF, DOCX, PPTX).

* Code blocks, quotes.

* Callout boxes/info panels.

* Lesson Settings: Optional sidebar/modal for specific lesson configurations (e.g., estimated time, prerequisites).

  • Key Interactions: Intuitive content creation. Drag-and-drop for media files.

3.5 Quiz Builder

  • Context: Main Content Area when a Quiz is selected.
  • Layout:

* Quiz Title & Description: Editable fields.

* Quiz Settings: (e.g., Pass Score, Time Limit, Attempts Allowed, Randomize Questions, Show Answers).

* Question List: Vertical list of questions, each with:

* Question text (editable).

* Question type selector (Multiple Choice, True/False, Short Answer, Matching, Fill-in-the-Blank).

* Answer options/input fields (dynamic based on type).

* Correct answer indication.

* Feedback for correct/incorrect answers.

* Point value.

* Action buttons (Edit, Duplicate, Delete, Reorder handle).

* "+ Add Question" Button: At the bottom of the list.

  • Key Interactions: Easy addition and configuration of various question types. Drag-and-drop to reorder questions.

3.6 Hands-on Exercise Builder

  • Context: Main Content Area when an Exercise is selected.
  • Layout:

* Exercise Title & Description: Editable fields.

* Instructions: Rich text editor for detailed steps.

* Required Resources: File upload/link input (e.g., starter code, datasets, templates).

* Submission Guidelines: Rich text editor (e.g., "Submit a PDF," "Upload a ZIP file," "Provide a link to your project").

* Evaluation Criteria: Rubric builder (add criteria, description, point values).

* Example Solution (Optional): Upload file or rich text.

  • Key Interactions: Clear definition of task, resources, and evaluation.

3.7 Certification Criteria Editor

  • Context: Main Content Area when "Certification" is selected.
  • Layout:

* Certification Title & Description: Editable fields.

* Completion Requirements: Checkbox list of criteria:

* "Complete all lessons."

* "Pass all quizzes with a minimum score of X%." (Configurable X)

* "Submit all hands-on exercises."

* "Achieve a minimum overall course score of Y%." (Configurable Y)

* Certificate Design:

* Template selector (pre-designed options).

* Customization options (logo upload, signature fields, colors, text fields).

* Live preview of the certificate.

  • Key Interactions: Simple selection of criteria, visual customization of the certificate.

3.8 Course Preview Mode

  • Context: Accessed via "Preview" button in the Top Bar.
  • Layout:

* Simulates the learner's view of the course.

* Top Bar: "Exit Preview," "Share Preview Link" (optional), device switcher (desktop, tablet, mobile view).

* Course Navigation: Learner-facing module/lesson list.

* Content Area: Displays lessons, quizzes, exercises as they would appear to a student.

  • Key Interactions: Navigate through the course as a learner would, test quizzes, view media.

4. Color Palette

Our color palette is designed to be professional, clean, and accessible, using a combination of cool tones for stability and accent colors for key actions and feedback.

  • Primary Brand Color (Core Identity):

* #007BFF (Strong Blue) - Represents trustworthiness, professionalism, and clarity. Used for primary buttons, active states, and key branding elements.

  • Secondary Brand Color (Support/Contrast):

* #6C757D (Medium Gray) - Provides a neutral, sophisticated contrast. Used for secondary buttons, subtle borders, and inactive text.

  • Accent Colors (Call-to-Action & Highlights):

* #28A745 (Green) - Success, positive actions, "Publish," "Save."

* #FFC107 (Amber) - Warning, pending actions, "Draft" status.

* #DC3545 (Red) - Error, destructive actions, "Delete."

* #17A2B8 (Cyan) - Information, highlights, new features.

  • Neutral Palette (Backgrounds & Text):

* #F8F9FA (Lightest Gray) - Main background color for content areas.

* #E9ECEF (Light Gray) - Section separators, subtle borders.

* #DEE2E6 (Border Gray) - Input field borders, dividers.

* #343A40 (Dark Gray) - Primary text color for readability.

* #6C757D (Medium Gray) - Secondary text, helper text.

* #FFFFFF (White) - Card backgrounds, active elements.

  • Accessibility Note: All color combinations will be tested to ensure compliance with WCAG 2.1 AA contrast ratios for text and UI components.

5. Typography

  • Font Families:

* Primary (Headings & UI Elements): Montserrat (Sans-serif) - Modern, clean, and highly readable.

* Secondary (Body Text & Long-form Content): Open Sans (Sans-serif) - Excellent readability across various screen sizes, professional and neutral.

* Fallback: sans-serif

  • Font Sizes:

* Display/Hero Headings: 2.5em - 3em (e.g., Course Editor Title)

* Section Headings (H2): 1.8em - 2em (e.g., Module Title)

* Subheadings (H3): 1.4em - 1.6em

training_course_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);}});}