Training Course Builder
Run ID: 69cc5da7b4d97b7651475bf72026-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 and Design Requirements for the Training Course Builder

This document outlines the detailed research and design requirements for the "Training Course Builder" workflow. The goal is to create a robust, intuitive, and AI-assisted platform capable of generating comprehensive training courses across any subject, complete with modules, lesson plans, quizzes, hands-on exercises, and certification criteria.


1. Project Overview & Scope

The Training Course Builder will empower subject matter experts, instructional designers, and educators to rapidly develop high-quality, structured learning experiences. It will streamline the course creation process by providing intelligent assistance and a user-friendly interface for content generation, organization, and assessment design.

Key Deliverables:

  • A comprehensive course structure (modules, lessons).
  • Detailed lesson plans with learning objectives and content.
  • Varied assessment tools (quizzes, exercises).
  • Clear certification criteria.
  • An intuitive authoring environment.

2. Research Findings & User Persona

Target Users (Course Creators):

  • Subject Matter Experts (SMEs): Deep knowledge in their field, but may lack instructional design expertise. Need tools to structure their knowledge effectively.
  • Instructional Designers: Understand learning principles, but may need to accelerate content creation and leverage AI for efficiency.
  • Trainers/Educators: Need to quickly build and update courses for their students or employees, often with limited time and resources.

Key Pain Points Identified:

  • Time-Consuming Content Creation: Drafting lesson plans, writing quiz questions, and designing exercises from scratch.
  • Lack of Structure/Guidance: Difficulty in organizing complex subjects into coherent, engaging learning paths.
  • Ensuring Learning Effectiveness: Aligning content with learning objectives and designing effective assessments.
  • Maintaining Consistency: Ensuring a consistent voice, style, and quality across all course materials.
  • Technical Barriers: Struggling with complex authoring tools or LMS interfaces.

Instructional Design Principles to Integrate:

  • Adult Learning Principles (Andragogy): Self-direction, relevancy, experience-based, problem-centered, internal motivation.
  • Bloom's Taxonomy: Support for designing learning objectives and assessments across cognitive levels (Remembering, Understanding, Applying, Analyzing, Evaluating, Creating).
  • Gagne's Nine Events of Instruction: Guidance for structuring lessons (gain attention, inform learners of objectives, stimulate recall, present content, provide guidance, elicit performance, provide feedback, assess performance, enhance retention/transfer).
  • Constructivism: Encourage active learning through hands-on exercises and problem-solving.

3. Functional Requirements

The system must provide the following core functionalities:

  • Course Setup:

* Define Course Title, Description, Target Audience, and Overall Learning Objectives.

* Set estimated Course Duration.

* Select Course Subject/Category.

  • Module Management:

* Create, edit, delete, and reorder modules.

* Define Module Title, Description, and Learning Outcomes.

  • Lesson Plan Creation:

* Create, edit, delete, and reorder lessons within modules.

* Define Lesson Title, Specific Learning Objectives, and Estimated Duration.

* Rich Content Editor: Support for text, images, videos (embed/upload), audio, tables, code snippets.

* Resource Management: Attach external links, documents (PDF, PPT), or internal files.

  • Quiz Builder:

* Create various question types: Multiple Choice (single/multiple answer), True/False, Short Answer, Matching.

* Add question explanations/feedback.

* Set points per question and passing score for quizzes.

* Option to create a question bank for randomized quizzes.

  • Hands-on Exercise Designer:

* Provide detailed instructions and scenarios for exercises.

* Define submission types (e.g., file upload, text input, link to external project).

* Attach example solutions or rubrics for evaluation.

* Specify evaluation criteria.

  • Certification Criteria Definition:

* Set overall course completion requirements (e.g., complete all modules, pass all quizzes, submit all exercises).

* Define minimum overall score for certification.

* Option for a final project or exam.

  • AI-Powered Assistance:

* Content Generation: Suggest lesson outlines, quiz questions, exercise ideas based on course topic and learning objectives.

* Objective Alignment: Analyze content against defined learning objectives and provide suggestions for improvement.

* Grammar & Style Check: Basic spell check and grammar suggestions.

* Structure Recommendations: Suggest optimal module/lesson flow.

  • Preview Functionality:

* View the course as a learner would, enabling creators to review content and flow.

  • Save & Publish:

* Draft mode for ongoing work.

* Publish course for deployment (e.g., export, integrate with LMS).

  • Export Options:

* Export course content in common formats (e.g., SCORM, PDF, HTML, JSON).


4. Non-Functional Requirements

  • Usability: Intuitive interface, minimal learning curve, efficient workflow.
  • Performance: Fast loading times, responsive interactions, smooth content editing.
  • Scalability: Ability to handle a large number of courses, modules, lessons, and users.
  • Security: Data encryption, secure user authentication, robust access control.
  • Accessibility: WCAG 2.1 AA compliance for both the builder interface and the generated course content.
  • Responsiveness: Optimized for various screen sizes (desktop, tablet).
  • Maintainability: Modular architecture, well-documented codebase for future enhancements.

5. Information Architecture & User Flows

Information Architecture:

  • Dashboard: Home for course creators, displaying a list of their courses (Draft, Published), quick access to "Create New Course."
  • Course Overview: Central hub for a specific course, showing modules, overall progress, and actions (Edit, Preview, Publish, Export).
  • Module Editor: Dedicated view for managing lessons, quizzes, and exercises within a module.
  • Content Editors: Specialized interfaces for creating/editing lessons, quizzes, exercises, and certification criteria.

Key User Flow: Creating a New Course

  1. Start New Course: User clicks "Create New Course" from Dashboard.
  2. Define Course Basics: User inputs Course Title, Description, Target Audience, Overall Learning Objectives, and Estimated Duration. AI provides initial suggestions.
  3. Create Modules: User adds first module, defines Module Title, Description, and Learning Outcomes. AI suggests module structure.
  4. Add Lessons/Quizzes/Exercises:

* User selects "Add Lesson" within a module.

* User defines Lesson Title, Objectives.

* User uses Rich Content Editor to add content. AI suggests content structure/points.

* User selects "Add Quiz" or "Add Exercise," uses respective builders. AI suggests questions/exercise ideas.

  1. Define Certification: User navigates to "Certification Criteria" and sets requirements.
  2. Preview & Refine: User uses "Preview" to review the course from a learner's perspective, makes edits as needed.
  3. Publish/Export: User publishes the course or exports it for external use.

6. Detailed Design Specifications

6.1. Wireframe Descriptions

  1. Dashboard (High-Level):

* Header: Logo, User Profile/Settings, "Help" button.

* Main Area:

* "My Courses" heading.

* "Create New Course" prominent button.

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

* Card view of existing courses: Course Title, Status, Last Edited date, "Edit" / "Preview" / "More Options" (duplicate, delete).

* Sidebar (Optional): Quick links to "All Courses," "Templates," "Analytics" (future scope).

  1. Course Overview Page:

* Header: Breadcrumbs (Dashboard > Course Title), "Preview," "Publish," "Export," "Settings" buttons.

* Course Details Section: Course Title, Description, Target Audience, Overall Objectives (editable).

* Modules Section:

* List of modules with collapsible sections.

* Each module shows: Module Title, Description, Learning Outcomes.

* Within each module: List of lessons, quizzes, exercises (with icons).

* "Add Module," "Add Lesson," "Add Quiz," "Add Exercise" buttons (contextual).

* Drag-and-drop handles for reordering modules/items.

* Right Sidebar: "AI Suggestions" panel (e.g., "Suggest next lesson topic," "Review objective alignment").

* Bottom Section: "Certification Criteria" link.

  1. Content Editor (Lesson Example):

* Header: Breadcrumbs (Course > Module > Lesson Title), "Save Draft," "Close" buttons.

* Left Panel: Course Outline (navigable tree view of modules/lessons).

* Main Content Area:

* Lesson Title input field.

* Learning Objectives input (bullet points, AI suggestions).

* Rich Text Editor: WYSIWYG interface with formatting tools (bold, italics, lists, headings), media embed options (image, video, audio), link insertion, code block.

* "Add Resource" button (upload file, link URL).

* Right Panel: AI Assistant (e.g., "Suggest content for this objective," "Improve clarity," "Check grammar").

  1. Quiz Builder:

* Header: Breadcrumbs, "Save Draft," "Close."

* Left Panel: Course Outline.

* Main Content Area:

* Quiz Title, Description, Passing Score input.

* "Add Question" button.

* For each question:

* Question Type selector (MCQ, T/F, Short Answer).

* Question Text input.

* Answer options (for MCQ), Correct Answer selector.

* Feedback text for correct/incorrect answers.

* Points for question.

* "Add to Question Bank" checkbox.

* Drag-and-drop to reorder questions.

* Right Panel: AI Assistant (e.g., "Generate 3 MCQ questions on X topic," "Suggest distractor options").

6.2. Color Palettes

The color palette aims for professionalism, clarity, and a calming user experience, promoting focus during content creation.

  • Primary Brand Color (Accent): #007BFF (Vibrant Blue) - Used for primary CTAs, active states, key highlights.
  • Secondary Accent: #28A745 (Success Green) - Used for positive feedback, publish buttons.
  • Neutral Palette (Backgrounds & Text):

* Backgrounds:

* #F8F9FA (Light Grey/Off-white): Main page backgrounds.

* #FFFFFF (Pure White): Card backgrounds, content editor areas.

* Text:

* #212529 (Dark Charcoal): Primary text, headings.

* #6C757D (Medium Grey): Secondary text, descriptions, labels.

* Borders/Dividers: #DEE2E6 (Light Grey).

  • Interactive Elements:

* Hover/Active State: Slightly darker/lighter shade of the primary color.

* Error/Warning: #DC3545 (Red), #FFC107 (Yellow).

Accessibility Note: All color combinations will be checked for WCAG AA contrast compliance to ensure readability for all users.

6.3. UX Recommendations

  1. Progressive Disclosure: Present complex options only when needed. Start with simple inputs, then reveal advanced settings.
  2. Clear Visual Hierarchy: Use consistent typography, spacing, and color to guide the user's eye and highlight important information. Headings, subheadings, and body text should be clearly distinguishable.
  3. Intuitive Navigation: Implement clear breadcrumbs, a persistent sidebar or top navigation, and contextual links to help users understand their location and move efficiently.
  4. "What You See Is What You Get" (WYSIWYG) Editor: Provide a rich text editor that closely mirrors the final output, reducing guesswork for content creators.
  5. Drag-and-Drop Functionality: Enable easy reordering of modules, lessons, questions, and other elements, enhancing flexibility and ease of use.
  6. Real-time Feedback & Validation: Provide immediate feedback on user input (e.g., required fields, character limits, successful saves).
  7. Autosave: Implement an autosave feature for all content editors
gemini Output

As a professional AI assistant within PantheraHive, we are pleased to present the detailed design specifications for your "Training Course Builder." This document outlines the user interface (UI) and user experience (UX) principles, wireframe descriptions, color palettes, and key recommendations to ensure a robust, intuitive, and highly effective course creation platform.


Training Course Builder: Design Specifications

1. Introduction & Design Philosophy

The Training Course Builder will empower users to create comprehensive, engaging, and professional training courses with ease. Our design philosophy centers on:

  • Clarity & Simplicity: A clean, uncluttered interface that guides users through the course creation process without overwhelming them.
  • Efficiency: Streamlined workflows, drag-and-drop functionality, and intuitive editing tools to minimize effort and maximize productivity.
  • Flexibility: Adaptable components and customizable options to cater to a wide range of subjects and learning methodologies.
  • Engagement: Tools that facilitate the creation of interactive content, fostering a rich learning experience for end-users.
  • Professionalism: A sophisticated aesthetic that reflects the high quality of the courses built on the platform.

2. Detailed Design Specifications

2.1 Core Workflow: Course Creation Journey

The builder will follow a logical, step-by-step process, allowing users to define course structure before diving into content.

  1. Course Overview: Define basic course information (title, description, image, target audience).
  2. Structure Definition: Create and organize modules and lessons.
  3. Content Authoring: Populate lessons with diverse content, quizzes, and exercises.
  4. Certification & Settings: Configure certification criteria and advanced course settings.
  5. Preview & Publish: Review the complete course and make it live.

2.2 Key Feature Specifications

##### a. Course Settings & Overview

  • Course Title & Subtitle: Prominent text fields.
  • Course Description: Rich text editor with basic formatting (bold, italic, lists).
  • Course Thumbnail/Cover Image: Upload functionality with image preview and cropping tool.
  • Target Audience: Multi-select dropdown/tag input for demographics, skill levels.
  • Prerequisites: Text field or link to other courses/resources.
  • Course Categories/Tags: Multi-select dropdown or tag input for discoverability.
  • Estimated Duration: Input field (e.g., "hours," "days," "weeks").
  • Language Selection: Dropdown for course content language.
  • Enrollment Type: (e.g., Open, Invitation Only, Paid - if applicable).
  • Visibility Status: Draft, Published, Archived.

##### b. Module & Lesson Management

  • Structure Panel (Left Sidebar): Tree-view navigation displaying Modules and their nested Lessons.
  • Add Module Button: Clearly visible, prompting for module title.
  • Add Lesson Button: Visible within each module, prompting for lesson title.
  • Drag-and-Drop Reordering: Intuitive functionality for modules and lessons within and across modules.
  • Context Menus (on hover/click): Edit Title, Duplicate, Delete Module/Lesson.
  • Module Progress Indicators: (Optional) Visual cues for completion status (e.g., number of lessons completed out of total).

##### c. Lesson Content Editor

  • WYSIWYG Rich Text Editor:

* Text Formatting: Bold, Italic, Underline, Strikethrough, Headings (H1-H4), Blockquote, Code Block.

* Lists: Ordered and Unordered.

* Links: Insert/edit hyperlinks.

* Media Embedding:

* Images: Upload, resize, align, add alt text.

* Videos: Embed from popular platforms (YouTube, Vimeo) or direct upload (with transcoding options).

* Audio: Upload audio files.

* Tables: Basic table creation and editing.

* Horizontal Rule: Separator.

* Code Snippets: Syntax highlighting for various languages.

  • Content Blocks: Ability to add distinct sections for text, images, videos, quizzes, exercises within a single lesson.
  • Auto-Save Functionality: Continuous saving of content to prevent data loss.
  • Version History: (Advanced) Ability to revert to previous lesson versions.

##### d. Quiz Builder

  • Question Types:

* Multiple Choice (Single/Multiple Answer): Add question, multiple options, designate correct answer(s).

* True/False: Add statement, select true/false.

* Short Answer: Add question, define optional keywords/phrases for auto-grading, or mark for manual review.

* Matching: Two columns, drag-and-drop to match pairs.

* Fill-in-the-Blank: Define blanks within a sentence, provide correct answers.

  • Question Settings:

* Points: Assign point value per question.

* Feedback: Provide specific feedback for correct/incorrect answers.

* Randomize Options: Shuffle answer choices.

* Question Bank Integration: (Advanced) Select questions from a pre-existing bank.

  • Quiz Settings:

* Passing Score: Percentage or fixed points.

* Time Limit: Optional timer for the entire quiz.

* Attempts Allowed: Number of times a learner can take the quiz.

* Show Answers: Control when answers are revealed (after submission, after passing, never).

##### e. Hands-on Exercise Builder

  • Exercise Title & Description: Clear instructions for the learner.
  • Instructions Editor: Rich text editor for detailed steps.
  • Resource Links/Files: Ability to attach supporting documents, code templates, external links.
  • Submission Type:

* Text Input: For written responses.

* File Upload: For projects, documents, code files.

* Code Editor Integration: (Advanced) Embedded code editor for coding challenges with syntax highlighting and basic execution (if applicable to subject).

  • Evaluation Criteria: Rubric builder or free-form text area for grading guidelines.
  • Manual Grading Flag: Mark exercises requiring instructor review.

##### f. Certification Criteria

  • Course Completion Requirement: Automatically marked upon completion of all lessons/modules.
  • Minimum Quiz Score: Aggregate or specific quiz passing thresholds.
  • Exercise Submission/Approval: Require all hands-on exercises to be submitted and/or approved.
  • Final Project Submission: (Optional) Require a specific final project.
  • Certificate Template: Basic customization options (logo, signature, background).

3. Wireframe Descriptions

We will describe key screens to illustrate the layout and user flow.

3.1 Dashboard / Course Listing

  • Layout: Grid or list view of all courses created by the user.
  • Elements:

* Header: "My Courses," "Create New Course" button (prominent).

* Search/Filter: Search bar, filters for status (Draft, Published), category.

* Course Cards/Rows: Each displays Course Thumbnail, Title, Status, Last Edited Date, Progress Bar (if applicable), and "Edit" / "Preview" / "Publish" / "More Options" (ellipsis menu).

3.2 Course Editor (Main View)

  • Layout: Three-panel layout.

* Left Sidebar (15-20% width): Course Structure (Modules & Lessons) with drag-and-drop.

* Main Content Area (60-70% width): Contextual editor based on selected item (Lesson, Quiz, Exercise, Settings).

* Right Sidebar (15-20% width): Contextual properties panel (e.g., Lesson settings, Quiz question options, element properties).

  • Elements:

* Top Bar: Course Title, "Preview Course" button, "Publish/Update" button, "Settings" icon (for global course settings).

* Left Sidebar: Expandable/collapsible modules, nested lessons. "Add Module" / "Add Lesson" buttons.

* Main Content: This area dynamically changes based on the selected item in the left sidebar. It will host the Lesson Editor, Quiz Builder, etc.

* Right Sidebar: Provides quick access to properties relevant to the currently selected content element (e.g., lesson duration, quiz question points, image properties).

3.3 Lesson Editor View (within Main Content Area)

  • Layout: Focus on the rich text editor.
  • Elements:

* Lesson Title: Editable at the top.

* Toolbar: Standard WYSIWYG editor toolbar (bold, italic, headings, media insert, etc.).

* Content Area: Large, scrollable area for lesson content.

* "Add Content Block" Button: Allows inserting specific blocks like Quiz, Exercise, or additional text sections.

3.4 Quiz Builder View (within Main Content Area)

  • Layout: List of questions, with an editor panel for the selected question.
  • Elements:

* Quiz Title: Editable.

* "Add Question" Button: Prominent, with dropdown for question types.

* Question List: Vertically stacked cards for each question, showing type and first few words. Drag-and-drop to reorder.

* Question Editor Panel (on selection): Detailed fields for question text, answer options, correct answers, feedback, points.

* Quiz Settings Panel (Right Sidebar): Passing score, time limit, attempts.

3.5 Hands-on Exercise Builder View (within Main Content Area)

  • Layout: Structured form for defining the exercise.
  • Elements:

* Exercise Title: Editable.

* Instructions Editor: Rich text editor for detailed instructions.

* "Add Resource" Button: For linking files or external URLs.

* Submission Type Selector: Radio buttons or dropdown (Text Input, File Upload, Code Editor).

* Evaluation Criteria Editor: Rich text or specific rubric fields.

* "Requires Manual Grading" Checkbox.

4. Color Palettes

A professional, calm, and focused color palette will enhance user concentration and engagement.

  • Primary Brand Color: #007BFF (A vibrant, trustworthy blue - for primary buttons, active states, key highlights).
  • Secondary Accent Color: #28A745 (A confident green - for success messages, "Publish" buttons, positive indicators).
  • Neutral Palette:

* Dark Text: #343A40 (Deep charcoal for primary text, headings).

* Light Text/Subtle Icons: #6C757D (Medium gray for secondary text, labels, inactive states).

* Backgrounds: #F8F9FA (Very light gray for main content areas).

* Card/Panel Backgrounds: #FFFFFF (Pure white for distinct content blocks, modals).

* Borders/Dividers: #DEE2E6 (Light gray for subtle separation).

  • System Colors:

* Success: #28A745 (Green, consistent with secondary accent).

* Warning: #FFC107 (Amber yellow - for alerts, pending actions).

* Error: #DC3545 (Red - for invalid inputs, critical errors).

* Info: #17A2B8 (Cyan blue - for informational messages).

  • Accessibility: All color combinations will adhere to WCAG 2.1 AA contrast standards for readability.

5. UX Recommendations

  • Intuitive Navigation:

* Consistent Global Navigation: Top bar for main actions (Save, Preview, Publish) and settings.

* Contextual Sidebars: Left sidebar for course structure, right sidebar for element-specific properties.

* Breadcrumbs: To help users understand their location within the course hierarchy (e.g., Course Name > Module Name > Lesson Name).

  • Drag-and-Drop Functionality: Implement widely for reordering modules, lessons, questions, and content blocks to provide a highly intuitive and efficient editing experience.
  • Real-time Saving & Feedback:

* Auto-save: Automatically save user progress every few seconds.

* Clear Status Indicators: "Saving...", "Saved!", "Error Saving" messages.

* Undo/Redo: Provide standard undo/redo functionality for content editing.

  • Progress Indicators & Onboarding:

* Course Creation Checklist/Progress Bar: Guide users through the initial course setup process.

* Tooltips & Coach Marks: Offer helpful hints for new users on complex features.

  • "What You See Is What You Get" (WYSIWYG) Principle: Ensure that the content editor closely reflects how the content will appear to learners. A dedicated "Preview Mode" will be essential for a full learner perspective.
  • Templating and Defaults:

* Lesson Templates: Provide pre-defined lesson structures (e.g., "Introduction," "Theory," "Practice") to speed up creation.

* Default Settings: Pre-populate common settings (e.g., quiz attempts, passing scores) that can be easily overridden.

  • Responsiveness: The builder interface will be designed to be fully responsive, ensuring a consistent and usable experience across various screen sizes (desktop, tablet).
  • Accessibility: Adhere to WCAG 2.1 guidelines for keyboard navigation, screen reader compatibility, and sufficient color contrast.
  • Clear Calls to Action: Buttons and interactive elements will have clear, concise
gemini Output

Finalized Design Assets: Training Course Builder

This document outlines the comprehensive design specifications, wireframe descriptions, color palettes, typography, iconography, and user experience (UX) recommendations for the "Training Course Builder" application. The goal is to create an intuitive, powerful, and aesthetically pleasing platform that empowers users to efficiently build high-quality training courses.


1. Overall Design Philosophy

The design of the Training Course Builder prioritizes clarity, efficiency, and flexibility. It aims to provide a clean, modern interface that minimizes cognitive load while offering robust tools for content creation and organization. Key principles include:

  • User-Centric: Intuitive workflows, clear feedback, and accessible design for all users.
  • Modular & Scalable: Components are designed to be reusable and adaptable for various course structures and content types.
  • Visual Hierarchy: Clear separation of primary actions, content areas, and supportive information.
  • Professional & Engaging: A clean aesthetic that inspires confidence and encourages creativity.
  • Performance: Optimized for responsiveness and speed across devices.

2. Detailed Design Specifications

This section describes the core UI components and their functionalities.

2.1. Global Navigation & Layout

  • Top Navigation Bar:

* Logo/Brand: Top-left, links to Dashboard.

* Course Selector (Dropdown): Allows quick switching between active courses.

* "Create New Course" Button: Prominent, primary action.

* Help/Support Icon: Access to documentation, tutorials, or support chat.

* User Profile/Settings Icon: Access to account details, notifications, logout.

* Search Bar: Global search for courses, modules, lessons, or content within the builder.

  • Left Sidebar (Contextual):

* Dashboard View: Links to "My Courses," "Templates," "Analytics," "Settings."

* Course Editor View: Links to "Course Settings," "Modules & Lessons," "Quizzes," "Exercises," "Certification," "Preview," "Publish."

* Collapsible: Allows users to maximize screen real estate for content editing.

2.2. Dashboard & Course Management

  • Course Cards: Each card displays:

* Course Title

* Thumbnail/Cover Image

* Status (Draft, Published, Archived)

* Last Modified Date

* Progress Bar (e.g., "70% Complete")

* Quick Action Buttons (Edit, Preview, Duplicate, Archive/Delete)

  • Filtering & Sorting: Options to filter by status, category, owner, and sort by date, title.
  • "Create New Course" Workflow:

* Template Selection: Option to start from a blank course or select from predefined templates (e.g., "Software Training," "Compliance Course").

* Basic Info Form: Course Title, Description, Category, Target Audience, Estimated Duration.

* Cover Image Uploader.

2.3. Course Editor (Main Content Area)

  • Module & Lesson Structure (Tree View):

* Drag-and-Drop Reordering: Allows easy rearrangement of modules and lessons.

* Expand/Collapse Functionality: For individual modules to show/hide lessons.

* Context Menu (on hover/click): Add Module, Add Lesson, Duplicate, Delete.

* Visual Indicators: Icons for lesson type (Text, Video, Quiz, Exercise), completion status.

  • Content Editor (WYSIWYG):

* Rich Text Editor: Standard formatting (bold, italic, underline, lists, headings).

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

* File Attachments: Upload and link documents (PDF, DOCX, PPTX).

* Code Blocks: For technical courses.

* Tables, Hyperlinks, Emojis.

* Version History/Revisions: Ability to revert to previous saves.

* Autosave Functionality: Frequent automatic saving of changes.

2.4. Quiz Builder

  • Question Types: Multiple Choice (single/multiple answer), True/False, Short Answer, Fill-in-the-Blank, Matching, Essay.
  • Question Bank: Ability to create and reuse questions across multiple quizzes.
  • Settings per Quiz:

* Passing Score

* Time Limit

* Number of Attempts

* Randomize Questions/Answers

* Feedback (correct/incorrect answer explanations)

* Show Answers After Completion

  • Drag-and-Drop Reordering: For questions within a quiz.
  • Scoring Configuration: Points per question.

2.5. Hands-on Exercise Builder

  • Exercise Description: Rich text editor for instructions, scenarios, and objectives.
  • Resource Attachments: Files, code snippets, external links.
  • Submission Types:

* Text Input: For written responses or code.

* File Upload: For project files, documents, screenshots.

* URL Submission: For external project links (e.g., GitHub repo, live demo).

  • Evaluation Criteria: Checklists, rubrics, example solutions.
  • Peer Review Option: Toggle to enable/disable peer feedback.
  • Automated Testing Integration (Optional): For coding exercises, integrate with external services to run tests.

2.6. Certification Criteria Editor

  • Requirements Definition:

* Course Completion: Must complete all modules/lessons.

* Quiz Performance: Achieve a minimum average score across all quizzes.

* Exercise Completion/Passing: All required exercises submitted and approved.

* Minimum Time Spent: (Optional) e.g., "Must spend at least X hours in the course."

  • Certificate Design:

* Template Selection: Predefined templates for certificates.

* Customization Options: Upload logo, add instructor signature, custom text fields (e.g., "Awarded to," "For completion of").

* Dynamic Fields: Learner Name, Course Title, Date of Completion, Unique Certificate ID.

  • Preview Certificate: Instant preview of the generated certificate.

2.7. Preview & Publishing Interface

  • Interactive Preview: Simulates the learner experience within the builder.

* Ability to navigate through modules, lessons, quizzes, exercises.

* Toggle between desktop, tablet, and mobile views.

  • Publishing Options:

* Public/Private: Control course visibility.

* Enrollment Options: Self-enroll, invite-only, paid.

* Schedule Publication: Set a future publication date.

* Unpublish/Archive Course.

  • Pre-Publish Checklist: Reminders for incomplete sections, missing content, or unconfigured settings (e.g., "Quiz X has no passing score defined").

3. Wireframe Descriptions (Key Screens)

3.1. Dashboard / My Courses

  • Layout: Top navigation bar (logo, search, user menu). Main content area with a "My Courses" header, "Create New Course" button (top right), filters/sort options below the header. Below that, a grid of course cards (3-4 per row).
  • Elements: Each card shows thumbnail, title, status badge, progress bar, and an ellipsis menu for actions. Empty state will show a prompt to create the first course.

3.2. Course Editor (Modules & Lessons View)

  • Layout: Top navigation (course selector, course actions like preview/publish). Left sidebar (Course Settings, Modules & Lessons, Quizzes, etc.). Main content area for the module/lesson tree.
  • Elements:

* Left Sidebar: Active state on "Modules & Lessons."

* Main Content: "Course Structure" header. A list of expandable modules. Each module shows its title, an "Add Lesson" button, and an ellipsis menu (Edit, Duplicate, Delete). Lessons are indented under modules, showing title, type icon, and ellipsis menu (Edit, Duplicate, Delete, Move).

* Drag Handles: Visible on hover for modules and lessons to indicate reordering capability.

* "Add Module" Button: Prominent at the top or bottom of the list.

3.3. Lesson Detail View (Content Editor)

  • Layout: Top navigation (course selector, lesson title, save status). Left sidebar (collapsed or showing course navigation). Main content area split into two main sections:

* Left Panel: Lesson settings (Title, Description, Duration, Visibility, Associated Quiz/Exercise).

* Right Panel: Rich Text Editor for lesson content.

  • Elements:

* Lesson Settings: Input fields, toggles, dropdowns.

* Rich Text Editor: Toolbar at the top (bold, italic, lists, media, etc.). Large content area.

* "Add Media" / "Attach File" Buttons: Clearly visible for content insertion.

* "Save Draft" / "Publish Lesson" Buttons: At the bottom right, with autosave status indicator.

3.4. Quiz Builder View

  • Layout: Top navigation. Left sidebar (active on "Quizzes"). Main content area with a list of quizzes for the course (if multiple), and then the selected quiz's questions and settings.
  • Elements:

* Quiz List (if multiple): Cards or list items for each quiz, with "Add New Quiz" button.

* Selected Quiz View:

* Quiz Settings Panel: Title, Description, Passing Score, Time Limit, Attempts, Feedback options.

* Question List: Each question displayed as a collapsible card. Card shows question type, text snippet.

* Inside Question Card: Question text editor, answer options (radio buttons/checkboxes for MCQs), correct answer indicator, explanation field, point value.

* "Add Question" Button: Prominent, with dropdown for question types.

* Drag Handles: For reordering questions.

3.5. Preview / Publish View

  • Layout: Top navigation. Left sidebar (active on "Preview & Publish"). Main content area split into two:

* Left Panel: Pre-publish checklist, publishing options, course status.

* Right Panel: Interactive course preview area.

  • Elements:

* Checklist: List of items (e.g., "All lessons have content," "Quizzes have passing scores"). Green checkmark for complete, red X for incomplete, with links to fix.

* Publishing Options: Toggles for public/private, dropdowns for enrollment, date picker for scheduled publication.

* "Publish Course" / "Update Course" Button: Primary action.

* Device Toggle Icons: Desktop, Tablet, Mobile icons above the preview area.

* Interactive Preview: The course rendered as a learner would see it, allowing navigation through modules and lessons.


4. Color Palettes

A professional, clean, and inviting color palette will be used to ensure readability and a pleasant user experience.

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

Usage*: Primary buttons, active navigation states, progress bars, accents on interactive elements.

  • Secondary Accent Color: #28A745 (A confident, growth-oriented green)

Usage*: Success messages, "Publish" buttons, completion indicators, positive feedback.

  • Neutral Palette:

* Background: #F8F9FA (Light gray, soft and clean)

* Card/Panel Background: #FFFFFF (Pure white for content areas)

* Borders/Dividers: #E9ECEF (Subtle light gray)

* Text - Primary: #343A40 (Dark charcoal for main body text, highly readable)

* Text - Secondary: #6C757D (Medium gray for descriptions, helper text, inactive states)

* Text - Placeholder: #ADB5BD (Light gray for input hints)

  • Alert/Error Color: #DC3545 (A clear, attention-grabbing red)

Usage*: Error messages, warning icons, destructive actions (e.g., "Delete").

  • Warning Color: #FFC107 (A warm, noticeable yellow/orange)

Usage*: Pending actions, warning messages, items needing attention.


5. Typography

A clean, modern, and highly readable font stack will be used.

  • Primary Font Family: Inter, Roboto, or Lato (sans-serif, for headings and body text)

Fallback*: Arial, sans-serif

* Headings (H1-H6): Bold or Semi-bold weights, increasing size for hierarchy.

* H1 (Course Title): 2.5rem - 3rem (40-48px)

* H2 (Section Header): 2rem (32px)

* H3 (Module Title): 1.5rem (24px)

* H4 (Lesson Title): 1.25rem (20px)

* H5 (Sub-headers): 1.125rem (18px)

* H6 (Card Titles): 1rem (16px)

* Body Text: Regular weight, 1rem (16px) for optimal readability.

* Small Text: 0.875rem (14px) for captions, helper text, meta-information.

* Button Text: Semi-bold, 1rem (16px).

  • Monospace Font (for code blocks): Fira Code or Source Code Pro

Fallback*: Consolas, monospace


6. Iconography

A consistent and intuitive icon set will enhance usability and visual appeal.

  • Style: Flat or subtly outlined, modern, and easily recognizable.
  • Library: Utilize a well-known library like Font Awesome, Material Icons, or a custom set.
  • Usage:

* Navigation: Home, Settings, Help, User.

* Course Elements: Module, Lesson, Video, Quiz, Exercise, Document, Link.

* Actions: Add, Edit, Delete, Duplicate, Preview, Publish, Save, Reorder (drag handle), Expand/Collapse.

* Status: Checkmark (complete), Warning (incomplete), Error (issue).

* Media: Image, Video, Audio, Attachment.

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
"); 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' import ReactDOM from 'react-dom/client' import App from './App' import './index.css' ReactDOM.createRoot(document.getElementById('root')!).render( ) "); 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' import './App.css' function App(){ return(

"+slugTitle(pn)+"

Built with PantheraHive BOS

) } export default App "); zip.file(folder+"src/index.css","*{margin:0;padding:0;box-sizing:border-box} body{font-family:system-ui,-apple-system,sans-serif;background:#f0f2f5;color:#1a1a2e} .app{min-height:100vh;display:flex;flex-direction:column} .app-header{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:40px} h1{font-size:2.5rem;font-weight:700} "); 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)+" Generated by PantheraHive BOS. ## Setup ```bash npm install npm run dev ``` ## Build ```bash npm run build ``` ## Open in IDE Open the project folder in VS Code or WebStorm. "); zip.file(folder+".gitignore","node_modules/ dist/ .env .DS_Store *.local "); } /* --- 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",'{ "name": "'+pn+'", "version": "0.0.0", "type": "module", "scripts": { "dev": "vite", "build": "vue-tsc -b && vite build", "preview": "vite preview" }, "dependencies": { "vue": "^3.5.13", "vue-router": "^4.4.5", "pinia": "^2.3.0", "axios": "^1.7.9" }, "devDependencies": { "@vitejs/plugin-vue": "^5.2.1", "typescript": "~5.7.3", "vite": "^6.0.5", "vue-tsc": "^2.2.0" } } '); zip.file(folder+"vite.config.ts","import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import { resolve } from 'path' export default defineConfig({ plugins: [vue()], resolve: { alias: { '@': resolve(__dirname,'src') } } }) "); zip.file(folder+"tsconfig.json",'{"files":[],"references":[{"path":"./tsconfig.app.json"},{"path":"./tsconfig.node.json"}]} '); zip.file(folder+"tsconfig.app.json",'{ "compilerOptions":{ "target":"ES2020","useDefineForClassFields":true,"module":"ESNext","lib":["ES2020","DOM","DOM.Iterable"], "skipLibCheck":true,"moduleResolution":"bundler","allowImportingTsExtensions":true, "isolatedModules":true,"moduleDetection":"force","noEmit":true,"jsxImportSource":"vue", "strict":true,"paths":{"@/*":["./src/*"]} }, "include":["src/**/*.ts","src/**/*.d.ts","src/**/*.tsx","src/**/*.vue"] } '); zip.file(folder+"env.d.ts","/// "); zip.file(folder+"index.html"," "+slugTitle(pn)+"
"); 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' import { createPinia } from 'pinia' import App from './App.vue' import './assets/main.css' const app = createApp(App) app.use(createPinia()) app.mount('#app') "); var hasApp=Object.keys(extracted).some(function(k){return k.indexOf("App.vue")>=0;}); if(!hasApp) zip.file(folder+"src/App.vue"," "); 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} "); 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)+" Generated by PantheraHive BOS. ## Setup ```bash npm install npm run dev ``` ## Build ```bash npm run build ``` Open in VS Code or WebStorm. "); zip.file(folder+".gitignore","node_modules/ dist/ .env .DS_Store *.local "); } /* --- 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",'{ "name": "'+pn+'", "version": "0.0.0", "scripts": { "ng": "ng", "start": "ng serve", "build": "ng build", "test": "ng test" }, "dependencies": { "@angular/animations": "^19.0.0", "@angular/common": "^19.0.0", "@angular/compiler": "^19.0.0", "@angular/core": "^19.0.0", "@angular/forms": "^19.0.0", "@angular/platform-browser": "^19.0.0", "@angular/platform-browser-dynamic": "^19.0.0", "@angular/router": "^19.0.0", "rxjs": "~7.8.0", "tslib": "^2.3.0", "zone.js": "~0.15.0" }, "devDependencies": { "@angular-devkit/build-angular": "^19.0.0", "@angular/cli": "^19.0.0", "@angular/compiler-cli": "^19.0.0", "typescript": "~5.6.0" } } '); zip.file(folder+"angular.json",'{ "$schema": "./node_modules/@angular/cli/lib/config/schema.json", "version": 1, "newProjectRoot": "projects", "projects": { "'+pn+'": { "projectType": "application", "root": "", "sourceRoot": "src", "prefix": "app", "architect": { "build": { "builder": "@angular-devkit/build-angular:application", "options": { "outputPath": "dist/'+pn+'", "index": "src/index.html", "browser": "src/main.ts", "tsConfig": "tsconfig.app.json", "styles": ["src/styles.css"], "scripts": [] } }, "serve": {"builder":"@angular-devkit/build-angular:dev-server","configurations":{"production":{"buildTarget":"'+pn+':build:production"},"development":{"buildTarget":"'+pn+':build:development"}},"defaultConfiguration":"development"} } } } } '); zip.file(folder+"tsconfig.json",'{ "compileOnSave": false, "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"]}, "references":[{"path":"./tsconfig.app.json"}] } '); zip.file(folder+"tsconfig.app.json",'{ "extends":"./tsconfig.json", "compilerOptions":{"outDir":"./dist/out-tsc","types":[]}, "files":["src/main.ts"], "include":["src/**/*.d.ts"] } '); zip.file(folder+"src/index.html"," "+slugTitle(pn)+" "); zip.file(folder+"src/main.ts","import { bootstrapApplication } from '@angular/platform-browser'; import { appConfig } from './app/app.config'; import { AppComponent } from './app/app.component'; bootstrapApplication(AppComponent, appConfig) .catch(err => console.error(err)); "); zip.file(folder+"src/styles.css","* { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: system-ui, -apple-system, sans-serif; background: #f9fafb; color: #111827; } "); 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'; import { RouterOutlet } from '@angular/router'; @Component({ selector: 'app-root', standalone: true, imports: [RouterOutlet], templateUrl: './app.component.html', styleUrl: './app.component.css' }) export class AppComponent { title = '"+pn+"'; } "); zip.file(folder+"src/app/app.component.html","

"+slugTitle(pn)+"

Built with PantheraHive BOS

"); 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} "); } zip.file(folder+"src/app/app.config.ts","import { ApplicationConfig, provideZoneChangeDetection } from '@angular/core'; import { provideRouter } from '@angular/router'; import { routes } from './app.routes'; export const appConfig: ApplicationConfig = { providers: [ provideZoneChangeDetection({ eventCoalescing: true }), provideRouter(routes) ] }; "); zip.file(folder+"src/app/app.routes.ts","import { Routes } from '@angular/router'; export const routes: Routes = []; "); 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)+" Generated by PantheraHive BOS. ## Setup ```bash npm install ng serve # or: npm start ``` ## Build ```bash ng build ``` Open in VS Code with Angular Language Service extension. "); zip.file(folder+".gitignore","node_modules/ dist/ .env .DS_Store *.local .angular/ "); } /* --- Python --- */ function buildPython(zip,folder,app,code){ var title=slugTitle(app); var pn=pkgName(app); var src=code.replace(/^```[w]* ?/m,"").replace(/ ?```$/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(" "):"# add dependencies here "; zip.file(folder+"main.py",src||"# "+title+" # Generated by PantheraHive BOS print(title+" loaded") "); zip.file(folder+"requirements.txt",reqsTxt); zip.file(folder+".env.example","# Environment variables "); zip.file(folder+"README.md","# "+title+" Generated by PantheraHive BOS. ## Setup ```bash python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt ``` ## Run ```bash python main.py ``` "); zip.file(folder+".gitignore",".venv/ __pycache__/ *.pyc .env .DS_Store "); } /* --- Node.js --- */ function buildNode(zip,folder,app,code){ var title=slugTitle(app); var pn=pkgName(app); var src=code.replace(/^```[w]* ?/m,"").replace(/ ?```$/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)+" "; zip.file(folder+"package.json",pkgJson); var fallback="const express=require("express"); const app=express(); app.use(express.json()); app.get("/",(req,res)=>{ res.json({message:""+title+" API"}); }); const PORT=process.env.PORT||3000; app.listen(PORT,()=>console.log("Server on port "+PORT)); "; zip.file(folder+"src/index.js",src||fallback); zip.file(folder+".env.example","PORT=3000 "); zip.file(folder+".gitignore","node_modules/ .env .DS_Store "); zip.file(folder+"README.md","# "+title+" Generated by PantheraHive BOS. ## Setup ```bash npm install ``` ## Run ```bash npm run dev ``` "); } /* --- 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:" "+title+" "+code+" "; zip.file(folder+"index.html",indexHtml); zip.file(folder+"style.css","/* "+title+" — styles */ *{margin:0;padding:0;box-sizing:border-box} body{font-family:system-ui,-apple-system,sans-serif;background:#fff;color:#1a1a2e} "); zip.file(folder+"script.js","/* "+title+" — scripts */ "); zip.file(folder+"assets/.gitkeep",""); zip.file(folder+"README.md","# "+title+" Generated by PantheraHive BOS. ## Open Double-click `index.html` in your browser. Or serve locally: ```bash npx serve . # or python3 -m http.server 3000 ``` "); zip.file(folder+".gitignore",".DS_Store node_modules/ .env "); } /* ===== 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(/ {2,}/g,"

"); h+="

"+hc+"

Generated by PantheraHive BOS
"; zip.file(folder+app+".html",h); zip.file(folder+"README.md","# "+title+" Generated by PantheraHive BOS. Files: - "+app+".md (Markdown) - "+app+".html (styled HTML) "); } 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);}});}