Infographic Creator
Run ID: 69cccb803e7fb09ff16a52262026-04-01Design
PantheraHive BOS
BOS Dashboard

This document outlines the comprehensive design requirements and specifications for the Infographic Creator, focusing on user experience, visual aesthetics, and functional capabilities. This deliverable serves as the foundation for the subsequent development and implementation phases.


Infographic Creator: Design Requirements & Specifications

The Infographic Creator aims to empower users to effortlessly transform data and concepts into visually compelling and professional infographics. The design prioritizes ease of use, flexibility, and high-quality output.

1. Core Objectives

  • Simplicity: Enable users with varying design skills to create infographics quickly.
  • Versatility: Support a wide range of infographic types (e.g., statistical, process, timeline, comparison, geographical).
  • Customization: Provide robust tools for personalizing content, style, and branding.
  • Data Integration: Facilitate easy input and visualization of user data.
  • Professional Output: Generate high-resolution, shareable infographics in various formats.

2. Target Audience

  • Marketers: Creating visual content for campaigns, social media, and presentations.
  • Educators/Students: Explaining complex topics, presenting research.
  • Business Professionals: Summarizing reports, illustrating strategies, presenting data.
  • Content Creators: Enhancing blog posts, articles, and websites.
  • Analysts: Visualizing data trends and insights.

3. Key Features (High-Level)

  • Template Library: A diverse collection of pre-designed, customizable templates.
  • Data Input & Visualization: Tools for entering data manually, uploading files (CSV, Excel), and selecting appropriate chart types.
  • Text & Icon Editor: Comprehensive options for adding and styling text, and a searchable library of icons.
  • Image & Media Integration: Ability to upload custom images, logos, and potentially embed media.
  • Layout & Arrangement Tools: Drag-and-drop functionality, alignment, grouping, layering.
  • Color & Branding: Custom color palettes, font management, and brand kit integration.
  • Export & Sharing: Multiple export formats (PNG, JPG, PDF, SVG) and direct sharing options.

Wireframe Descriptions

The following wireframe descriptions outline the key user interfaces and their functionalities within the Infographic Creator.

1. Screen: Template Selection & Project Setup

  • Layout: A landing page featuring a prominent search bar, category filters (e.g., "Business", "Education", "Marketing", "Process", "Timeline"), and a grid display of infographic templates. A "Start from Scratch" option will also be available.
  • Elements:

* Header: Logo, "My Projects" link, "Help/Support" link, User Profile.

* Search Bar: For finding templates by keyword.

* Category Filters: Interactive buttons/dropdowns to narrow down template choices.

* Template Thumbnails: Visually appealing previews of each template, with hover-over "Preview" and "Select" buttons.

* "Start from Scratch" Button: Initiates a blank canvas project.

  • User Flow: User browses/searches templates, previews them, and selects one to begin. Alternatively, they can choose to start with a blank canvas.

2. Screen: Data Input & Visualization Configuration

  • Layout: A two-panel interface. The left panel is dedicated to data input and chart configuration, while the right panel provides a live preview of the infographic canvas.
  • Elements (Left Panel - Data & Chart):

* Data Source Options:

* Manual Entry: A simple table-like interface for entering small datasets.

* Upload Data: Button to upload CSV, Excel files.

* (Future) Connect Data: Placeholder for API integrations (e.g., Google Sheets, analytics platforms).

* Chart Type Selector: Dropdown or icon-based selection for various chart types (Bar, Line, Pie, Area, Scatter, Doughnut, Progress Bar, Icon Matrix).

* Data Mapping: Intuitive drag-and-drop interface or dropdowns to map uploaded/entered data columns to chart axes, values, and labels.

* Chart Customization Options:

* Axis labels, titles, legends.

* Data point colors, hover effects.

* Grid lines, background fills.

  • Elements (Right Panel - Live Canvas Preview):

* A dynamic, real-time render of the infographic, updating as data is input and chart types are selected.

* Zoom/Pan Controls: To navigate the canvas.

  • User Flow: User inputs/uploads data, selects a chart type, maps data, and observes the visualization update in real-time on the canvas.

3. Screen: Infographic Editor & Customization

  • Layout: A central canvas area for the infographic, flanked by a customizable left sidebar for design tools and a top toolbar for common actions.
  • Elements (Top Toolbar):

* Undo/Redo: Standard functionality.

* Zoom Controls: In/Out, Fit to Canvas.

* Grid/Snap Guides: Toggle for alignment assistance.

* Save Button: Auto-save functionality with manual save option.

* Preview Button: Full-screen preview.

* Export Button: Leads to export options.

  • Elements (Left Sidebar - Design Tools):

* Sections/Tabs:

* Templates: Option to change/apply new templates.

* Text: Font selection, size, color, bold/italic, alignment, line spacing, text boxes.

* Icons: Searchable library, categories, color/size adjustment.

* Images: Upload, stock image library integration, basic editing (crop, resize).

* Shapes: Basic geometric shapes, lines, arrows; color, stroke, size.

* Charts: Revisit data input/chart configuration for existing charts.

* Background: Solid color, gradient, image upload.

* Brand Kit: Apply saved brand colors, fonts, logos.

* Element-Specific Properties Panel: When an element on the canvas is selected, this panel dynamically updates to show its specific properties (e.g., for text: font, size; for shape: color, border).

  • Elements (Central Canvas):

* Drag-and-drop functionality for all elements.

* Resize handles, rotation controls.

* Contextual right-click menu for layering (bring to front/back), duplicate, delete, group.

  • User Flow: User selects elements, applies styling, adds new content (text, icons, images), arranges layout, and fine-tunes the design.

4. Screen: Preview & Export Options

  • Layout: A full-screen, high-resolution preview of the final infographic, with an overlay or sidebar containing export and sharing options.
  • Elements:

* Full-Screen Infographic Preview: Allows users to review the final output in detail.

* Export Format Selector: Radio buttons or dropdown for PNG, JPG, PDF, SVG.

* Resolution/Quality Options: (e.g., "Standard," "High," "Print-Ready")

* Background Transparency Toggle: For PNG/SVG.

* Download Button: Initiates the download of the chosen format.

* Share Options: Buttons for direct sharing to social media (Facebook, Twitter, LinkedIn), email, or generating a shareable link.

  • User Flow: User reviews the infographic, selects desired export format and quality, and then downloads or shares the final product.

Color Palettes

Color palettes are crucial for conveying mood, brand identity, and ensuring data readability. The Infographic Creator will offer a range of curated palettes and allow for custom brand integration.

1. General Principles

  • Accessibility: Adherence to WCAG guidelines for color contrast.
  • Clarity: Colors should enhance data comprehension, not obscure it.
  • Consistency: Maintain a cohesive visual language throughout the infographic.
  • Brand Alignment: Support for user-defined brand colors.

2. Suggested Curated Palettes

Palette A: "Professional & Trustworthy"

  • Primary Colors (Dominant):

* #2C3E50 (Deep Navy Blue - Heading/Background)

* #34495E (Charcoal Grey - Text/Secondary Data)

  • Accent Colors (Highlight/Data Series):

* #1ABC9C (Emerald Green)

* #2ECC71 (Nephritis Green)

* #3498DB (Peter River Blue)

* #9B59B6 (Amethyst Purple)

* #E67E22 (Carrot Orange)

  • Neutral/Background:

* #ECF0F1 (Light Grey)

* #FFFFFF (Pure White)

  • Use Case: Corporate reports, business presentations, academic research, finance.

Palette B: "Vibrant & Engaging"

  • Primary Colors (Dominant):

* #FF6B6B (Coral Red - Highlight/Call to Action)

* #4ECDC4 (Turquoise - Main Data/Background Accent)

  • Accent Colors (Highlight/Data Series):

* #F7DC6F (Mustard Yellow)

* #48C9B0 (Medium Aquamarine)

* #5DADE2 (Sky Blue)

* #AF7AC5 (Lavender)

* #EB984E (Orange-Peach)

  • Neutral/Background:

* #F8F8F8 (Off-White)

* #DCDCDC (Soft Grey)

  • Use Case: Marketing, social media, educational content, modern web graphics.

Palette C: "Minimalist & Modern"

  • Primary Colors (Dominant):

* #333333 (Dark Grey - Text/Primary Elements)

* #666666 (Medium Grey - Secondary Text/Subtle Elements)

  • Accent Colors (Highlight/Data Series):

* #A5D6A7 (Light Green)

* #81D4FA (Light Blue)

* #FFAB91 (Light Coral)

* #FFCC80 (Light Orange)

* #B39DDB (Light Purple)

  • Neutral/Background:

* #FFFFFF (Pure White)

* #F5F5F5 (Very Light Grey)

  • Use Case: Tech, clean data visualization, user interfaces, sleek branding.

3. Custom Color Options

  • Color Picker: Full RGB/HEX color picker for individual element customization.
  • Brand Kit Integration: Users can save and apply their own brand color palettes, fonts, and logos for quick application across projects.

UX Recommendations

User experience is paramount for the Infographic Creator to be successful. These recommendations aim to make the tool intuitive, efficient, and enjoyable to use.

1. Intuitive Workflow & Onboarding

  • Guided Steps: Implement a clear, progressive workflow (e.g., "1. Choose Template," "2. Add Data," "3. Customize Design," "4. Export").
  • Onboarding Tour: A short, interactive tour for first-time users highlighting key features.
  • Contextual Tooltips: Provide helpful hints when users hover over complex tools or new features.

2. Live Preview & Real-time Feedback

  • Instant Updates: All changes (data input, styling, layout) should be reflected on the canvas in real-time.
  • Clear Feedback Messages: Inform users about successful actions (e.g., "Project Saved"), errors (e.g., "Invalid Data Format"), or progress (e.g., "Exporting Infographic...").

3. Ease of Interaction

  • Drag-and-Drop: Implement drag-and-drop for adding elements (icons, images, text boxes), arranging layout, and potentially for data mapping.
  • Click-to-Edit: Single-click selection and double-click
gemini Output

Infographic Creator: Detailed Design Specifications & UX Strategy

This document outlines the comprehensive design specifications, wireframe descriptions, color palettes, and user experience (UX) recommendations for the Infographic Creator. The goal is to develop a highly intuitive, powerful, and aesthetically pleasing tool that empowers users to create professional infographics with ease.


1. Detailed Design Specifications

The Infographic Creator will be a web-based application designed for a broad audience, including marketers, educators, business professionals, and content creators. It will feature a modular structure to ensure flexibility and scalability.

1.1. Core Functionality

  • Project Management: Create, save, load, duplicate, and delete infographic projects.
  • Template Library: Access to a rich collection of pre-designed, customizable templates categorized by industry, purpose, and style.
  • Drag-and-Drop Editor: An intuitive canvas-based editor for arranging, resizing, and customizing elements.
  • Rich Asset Libraries: Extensive collections of text styles, images, icons, shapes, and data visualization components.
  • Customization Tools: Granular control over colors, fonts, sizes, positions, and other properties of all elements.
  • Data Integration: Tools for inputting and visualizing data through various chart types.
  • Export & Share: Options to download infographics in multiple formats and potentially share directly.

1.2. Key Modules & Features

A. Dashboard / Project Management

  • User Interface: Grid or list view of user's saved infographic projects.
  • Project Cards: Each card displays a thumbnail preview, title, creation/last modified date, and quick action buttons (Edit, Duplicate, Delete, Export).
  • Creation Options: Prominent "Create New Infographic" button, "Start from Scratch" option, and "Browse Templates" access.
  • Search & Filter: Functionality to search projects by name and filter by date, category, or status.

B. Template Selection

  • Categorization: Templates organized into logical categories (e.g., Business, Education, Health, Marketing, Data, Process).
  • Search & Filter: Search bar for keywords and filters for free/premium, layout style, or color scheme.
  • Preview: Hover-to-enlarge or dedicated preview modal for each template.
  • Action: "Use Template" button to load the selected template into the editor.

C. Infographic Editor Interface

  • Canvas: The central workspace where the infographic is built.

* Adjustable dimensions (e.g., standard infographic sizes, custom dimensions).

* Zoom in/out functionality, fit-to-screen view.

* Toggleable grid and snap-to-object/grid for precise alignment.

  • Top Toolbar:

* Project Controls: Save, Undo, Redo.

* View Controls: Zoom, Grid Toggle, Snap Toggle.

* Output Controls: Preview, Export, Share (if implemented).

  • Left Panel (Elements Library):

* Tabs/Sections: "Templates", "Text", "Images", "Icons", "Shapes", "Charts", "Uploads".

* Search & Categories: Within each section, a search bar and sub-categories for easy navigation.

* Drag-and-Drop: Elements can be easily dragged from the panel onto the canvas.

  • Right Panel (Properties / Settings):

* Contextual Display: This panel dynamically changes based on the selected element on the canvas (or the canvas itself if no element is selected).

* Common Controls: Position (X, Y), Size (Width, Height), Rotation, Opacity, Layer Order (Bring to Front, Send to Back).

* Text Properties: Font family, size, color, bold, italic, underline, alignment, line height, letter spacing.

* Image Properties: Crop, resize, rotate, flip, filters (grayscale, sepia), border, shadow.

* Shape Properties: Fill color, stroke color, stroke width, corner radius.

* Chart Properties: Data input (manual table, CSV/Excel upload), chart type selection, colors, labels, axes settings, animation options.

* Canvas Properties: Background color/image, dimensions, margins.

* Layers Tab: A list of all elements on the canvas, allowing users to reorder layers, lock, and hide elements.

D. Asset Libraries

  • Text Styles: Pre-defined heading, subheading, and body text styles for quick application.
  • Image Library: Curated collection of high-quality, royalty-free stock images.

* Upload custom images with basic editing tools (crop, resize).

  • Icon Library: Extensive collection of vector icons, searchable by keyword and category.

* Customizable icon colors.

  • Shapes & Lines: Basic geometric
gemini Output

Infographic Creator: Final Design Asset Specifications

This document outlines the comprehensive design specifications, wireframe descriptions, color palettes, and user experience (UX) recommendations for your Infographic Creator. The goal is to establish a professional, engaging, and highly effective visual language that can be consistently applied across various infographic topics generated by the system.


1. Infographic Design Specifications

The core aesthetic for the infographics generated will be modern, clean, and data-driven, focusing on clarity, impact, and a sophisticated visual appeal.

1.1 Layout Principles

  • Grid System: A flexible 12-column grid will be used to ensure precise alignment, consistent spacing, and modularity. This allows for diverse content arrangements while maintaining visual harmony.
  • Visual Hierarchy: Clear differentiation between headings, subheadings, body text, and data points is paramount. Larger font sizes, bolder weights, and strategic use of color will guide the viewer's eye.
  • Modularity: Infographics will be constructed from interchangeable content blocks (e.g., data visualizations, key facts, process steps, quotes). This enhances flexibility and content reusability.
  • White Space: Ample white space will be employed to reduce cognitive load, improve readability, and give elements room to breathe, contributing to a premium feel.
  • Directionality: A clear reading path (typically top-to-bottom, left-to-right) will be established through sequential numbering, arrows, and visual flow.

1.2 Typography

A carefully selected font pairing will ensure readability and a modern aesthetic.

  • Heading Font (Primary):

* Family: Montserrat (or similar sans-serif with strong geometric forms like Open Sans, Lato).

* Weights: Bold (700), Extra Bold (800) for main titles; Semi-Bold (600) for subheadings.

* Usage: Main titles, section headings, prominent callouts.

  • Body Font (Secondary):

* Family: Open Sans (or similar highly readable sans-serif like Lato, Roboto).

* Weights: Regular (400), Semi-Bold (600) for emphasis.

* Usage: Body text, captions, data labels, source information.

  • Sizes (Relative to a 16px base):

* Main Title: 48-64px (responsive)

* Section Heading: 32-40px

* Subheading: 20-24px

* Body Text: 16-18px

* Captions/Sources: 12-14px

  • Line Height: 1.5x for body text, 1.2x for headings to optimize readability.

1.3 Iconography

  • Style: Flat or Line art icons (single weight, consistent corner radius). Icons should be simple, universally recognizable, and align with the modern aesthetic.
  • Color: Icons will primarily use accent colors or a neutral dark gray for clarity, with potential for inverse coloring on darker backgrounds.
  • Consistency: All icons within a single infographic must adhere to the same style, size, and level of detail.

1.4 Imagery & Illustrations

  • Purpose: Used sparingly to enhance understanding, break visual monotony, or represent complex concepts.
  • Style: Abstract geometric shapes, subtle gradients, or high-quality, relevant stock photography (if applicable) that aligns with the overall brand.
  • Data Visualization Illustrations: Custom illustrations for process flows, timelines, or conceptual diagrams will be clean and vector-based.

1.5 Data Visualization Elements

  • Chart Types: Bar charts, line charts, pie/donut charts, area charts, scatter plots, tree maps, and progress bars.
  • Design:

* Minimalist: Remove unnecessary chart junk (e.g., heavy borders, excessive grid lines).

* Color Coding: Use the defined color palette to differentiate data series clearly. Accent colors for emphasis.

* Labels: Data labels should be clear, concise, and placed strategically to avoid clutter.

* Legends: Simple and clear, positioned thoughtfully.

* Axis: Clean axes with minimal tick marks, clearly labeled units.

* Infographics-Specific Visuals: Use of pictograms, progress bars, and custom data representations (e.g., filled shapes) to make data more engaging.


2. Wireframe Descriptions

The infographics will be structured using a modular approach, allowing for flexible content arrangement. Below are descriptions of common wireframe blocks that can be combined to form a complete infographic.

2.1 Header Section

  • Layout: Full-width banner.
  • Elements:

* Main Title: Prominently displayed, large heading font.

* Subtitle/Tagline: Concise explanation, body font, slightly smaller.

* Branding: Small, subtle logo placement (top-left or top-right).

* Optional: A relevant hero image or abstract background graphic.

2.2 Introduction/Overview Block

  • Layout: Single column or two-column layout.
  • Elements:

* Key Statistic/Hook: Large number with a short descriptive label (e.g., "75% of Customers").

* Brief Introduction Paragraph: Contextualizes the infographic's topic.

* Optional: A small, relevant icon.

2.3 Data Visualization Block

  • Layout: Flexible, often occupying 6-12 columns.
  • Elements:

* Section Title: Clear heading for the data point.

* Chart/Graph: Bar, line, pie, etc., with clear labels, legends, and axis.

* Key Insight/Explanation: A concise paragraph or bullet points summarizing the data's implications.

* Optional: Supporting icons or small illustrative elements.

2.4 Key Facts/Statistics Block

  • Layout: Grid-based (e.g., 2x2, 1x3, 1x4) or stacked.
  • Elements (for each fact):

* Large Number/Statistic: Bold, prominent, often with an icon.

* Short Description: Explaining the significance of the number.

* Optional: Small illustrative icon related to the fact.

2.5 Process/Timeline Block

  • Layout: Horizontal or vertical flow.
  • Elements:

* Section Title: "Our Process," "How It Works," "Timeline."

* Numbered Steps/Timeline Points:

* Icon/Number: Visual marker for each step.

* Short Title: For the step.

* Brief Description: Explanation of the step.

* Connectors: Arrows or lines to indicate flow.

2.6 Comparison Block

  • Layout: Two-column side-by-side.
  • Elements:

* Section Title: "Before & After," "Option A vs. Option B."

* Column Headings: Clearly label each side.

* Content: Bullet points, short paragraphs, or small data visualizations for each side, highlighting differences/similarities.

* Visual Cues: Distinct background colors or border styles for each column.

2.7 Quote/Testimonial Block

  • Layout: Centered or left-aligned.
  • Elements:

* Large Quote: In italics or a distinct font weight.

* Attribution: Name and title of the person quoted.

* Optional: Small image of the person (if applicable).

2.8 Call-to-Action (CTA) / Footer Section

  • Layout: Full-width band at the bottom.
  • Elements:

* Clear CTA: "Learn More," "Download Report," "Visit Website" (button or prominent text link).

* Contact Information: Website, social media handles, email.

* Source Information: Credible sources for the data presented.

* Branding: Subtle logo repeat.


3. Color Palettes

A versatile and professional color palette is essential for creating impactful and branded infographics. We propose a primary palette with complementary accent and neutral colors.

3.1 Primary Palette (Example: "Corporate Blue & Green")

This palette evokes trust, reliability, and growth.

  • Primary Blue: #0056B3 (RGB: 0, 86, 179)

Usage*: Main headings, borders, primary data series, dominant brand color.

  • Secondary Blue: #007BFF (RGB: 0, 123, 255)

Usage*: Secondary data series, lighter accents, background for subtle elements.

  • Primary Green: #28A745 (RGB: 40, 167, 69)

Usage*: Positive indicators, growth data, alternative primary color for contrast.

  • Secondary Green: #6FCD9E (RGB: 111, 205, 158)

Usage*: Lighter green accents, subtle highlights.

3.2 Accent & Neutral Palette

  • Accent Yellow: #FFC107 (RGB: 255, 193, 7)

Usage*: Highlighting key statistics, critical callouts, warnings, or a third data series for strong contrast.

  • Accent Red: #DC3545 (RGB: 220, 53, 69)

Usage*: Negative indicators, alerts, or a contrasting fourth data series.

  • Dark Neutral: #343A40 (RGB: 52, 58, 64)

Usage*: Body text, subheadings, primary icon color, strong contrast against light backgrounds.

  • Medium Neutral: #6C757D (RGB: 108, 117, 125)

Usage*: Secondary text, captions, less prominent details, subtle borders.

  • Light Neutral (Background): #F8F9FA (RGB: 248, 249, 250)

Usage*: Primary background color, providing clean white space.

  • Pure White: #FFFFFF

Usage*: Essential for contrast, text on dark backgrounds, internal spacing.

3.3 Color Usage Guidelines

  • Contrast: Ensure sufficient contrast between text and background colors for accessibility (WCAG AA standards).
  • Consistency: Apply colors consistently to represent the same type of information throughout the infographic.
  • Purposeful Use: Every color choice should serve a purpose – to differentiate, highlight, or categorize. Avoid arbitrary use of colors.
  • Limited Palette: Stick to a maximum of 4-5 primary data visualization colors within a single chart to prevent visual clutter.

4. User Experience (UX) Recommendations

Effective UX ensures that the infographic is not just visually appealing but also easy to understand, engaging, and memorable.

4.1 Readability & Scannability

  • Clear Visual Path: Guide the viewer's eye with a logical flow from top to bottom, using headings, subheadings, and visual connectors (e.g., arrows, lines).
  • Chunking Information: Break down complex data into smaller, digestible chunks using distinct content blocks.
  • Bullet Points & Lists: Use these for concise delivery of information, improving scannability.
  • Generous Line Spacing: For body text, ensure adequate line height (1.5x font size) to prevent text from feeling dense.
  • Optimal Font Sizes: Adhere to the specified font sizes to ensure legibility across various viewing platforms (print and digital).

4.2 Information Flow & Storytelling

  • Narrative Arc: Structure the infographic to tell a clear story: Introduction -> Problem -> Data/Evidence -> Solution/Insights -> Call to Action.
  • Progressive Disclosure: Present information in a sequence that builds understanding, starting with general concepts and moving to specific details.
  • Contextualization: Always provide context for data points. A number alone is less impactful than a number with a clear explanation of its significance.

4.3 Engagement & Impact

  • Relatable Visuals: Use icons and illustrations that resonate with the target audience and clarify abstract concepts.
  • Interactive Elements (for Digital): Consider hover states for data points to reveal more details, clickable sections for deep dives, or embedded videos/animations where appropriate.
  • Emotional Connection: While data-driven, strategic use of imagery or a compelling narrative can evoke an emotional response, making the information more memorable.
  • Strong Call to Action: A clear, prominent CTA at the end guides the user on the next steps, maximizing the infographic's value.

4.4 Accessibility

  • Color Contrast: Ensure all text and important graphical elements meet WCAG 2.1 AA contrast standards (minimum 4.5:1 for normal text, 3:1 for large text).
  • Descriptive Alt Text (for Digital): For all images and complex data visualizations, provide concise and informative alt text for screen readers.
  • Clear Language: Use plain language, avoid jargon where possible, and explain technical terms clearly.
  • Logical Reading Order: Ensure the underlying structure (HTML for digital) follows a logical reading order for assistive technologies.

4.5 Responsiveness & Adaptability (for Digital Infographics)

  • Mobile-First Consideration: Design with smaller screens in mind, ensuring content stacks gracefully and remains legible.
  • Scalable Vector Graphics (SVG): Utilize SVGs for icons and illustrations to maintain crispness at any resolution.
  • Fluid Layouts: Use relative units (percentages, ems, rems) for spacing and sizing where appropriate, allowing elements to adapt to different screen sizes.

This detailed guide provides a robust framework for creating professional, engaging, and effective infographics. By adhering to these specifications, your Infographic Creator will consistently deliver high-quality visual content that informs and captivates your audience.

infographic_creator.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);}});}