Analytics Dashboard Builder
Run ID: 69cc5b74b4d97b7651475a532026-03-31Analytics
PantheraHive BOS
BOS Dashboard

This document outlines the finalized design assets and comprehensive specifications for the Analytics Dashboard, ensuring a professional, intuitive, and highly functional user experience. This deliverable serves as the blueprint for development, detailing the visual language, interactive elements, and user experience principles.


Analytics Dashboard: Finalized Design Specifications

1. Design Philosophy & Goals

The core philosophy guiding the design of this Analytics Dashboard is Clarity, Actionability, and User-Centricity. Our primary goals are to:

2. Core Design System Elements

2.1. Color Palette

A carefully selected color palette ensures visual harmony, data differentiation, and accessibility.

* Primary Blue: #007BFF (RGB: 0, 123, 255) - Used for primary actions, active states, main navigation highlights.

* Secondary Blue: #6C757D (RGB: 108, 117, 125) - Used for secondary actions, subtle borders, inactive states.

* Background: #F8F9FA (RGB: 248, 249, 250) - Lightest background for main content areas.

* Surface/Card Background: #FFFFFF (RGB: 255, 255, 255) - For widgets, cards, and primary content blocks.

* Text Primary: #212529 (RGB: 33, 37, 41) - Main body text, headings.

* Text Secondary: #6C757D (RGB: 108, 117, 125) - Labels, helper text, secondary information.

* Borders/Dividers: #DEE2E6 (RGB: 222, 226, 230) - Subtle separators.

* Success (Green): #28A745 (RGB: 40, 167, 69) - Positive trends, successful operations.

* Warning (Yellow): #FFC107 (RGB: 255, 193, 7) - Caution, moderate alerts.

* Danger (Red): #DC3545 (RGB: 220, 53, 69) - Negative trends, critical errors.

* Info (Cyan): #17A2B8 (RGB: 23, 162, 184) - Informational messages, highlights.

* A set of 6-8 distinct, WCAG AA compliant colors for categorical data (e.g., #007BFF, #28A745, #FFC107, #DC3545, #17A2B8, #6F42C1, #FD7E14, #20C997).

* Sequential gradients will be used for heatmaps or intensity (e.g., light blue to dark blue).

* Diverging palettes (e.g., red-white-green) for showing deviation from a midpoint.

2.2. Typography

A clear and consistent typographic hierarchy ensures readability and guides the user's eye.

* Rationale: Excellent legibility across various screen sizes, professional, and clean.

* Dashboard Title (H1): 28px / Semi-bold

* Section Titles (H2): 22px / Semi-bold

* Widget Titles (H3): 18px / Medium

* Key Performance Indicators (KPIs): 36px / Bold (for the main number), 14px / Regular (for comparison/label)

* Body Text: 14px / Regular

* Labels & Annotations: 12px / Regular

* Small Text (e.g., footnotes): 10px / Regular

2.3. Iconography

Icons provide visual cues and reinforce navigation.

* Navigation: Represent dashboard sections (e.g., chart-line for Overview, store for Sales, bullhorn for Marketing).

* Actions: download for Export, filter for Filters, cog for Settings, sync for Refresh.

* Status Indicators: check-circle for Success, exclamation-triangle for Warning.

3. Layout & Wireframe Descriptions

The dashboard will utilize a flexible 12-column responsive grid system, primarily designed for desktop, with clear adaptation rules for tablet and mobile.

3.1. Global Layout Structure

* Logo/Brand: Top-left.

* Dashboard Title: Centered or left-aligned.

* Global Actions: User profile, notifications, search, settings (top-right).

* Collapsible (default expanded on desktop, collapsed on mobile).

* Primary navigation links to main dashboard sections (e.g., Overview, Sales, Marketing, Customers, Operations).

* Icons accompanying text labels for clarity.

* Occupies the majority of the screen space.

* Contains widgets, charts, tables, and filters relevant to the selected section.

* Utilizes a card-based layout for individual widgets.

3.2. Key Dashboard Sections (Wireframe Concepts)

A. Overview Dashboard (High-Level Summary)

* KPI Cards: Large number, relevant metric (e.g., "Total Revenue: $1.2M", "New Customers: 1,234"), percentage change from previous period, small trend indicator (up/down arrow).

* Trend Line Chart: e.g., "Revenue Over Time" (full width).

* Bar Chart: e.g., "Sales by Region" (half width).

* Donut/Pie Chart: e.g., "Revenue by Product Category" (half width, consider using bar chart for better comparison if more than 5 categories).

B. Detailed Analytics View (e.g., Sales Performance)

* Top section: Key filters (date range, product category, sales rep, region).

* Middle section: 2-3 primary KPI cards relevant to sales (e.g., "Average Deal Size", "Conversion Rate").

* Main content: Combination of detailed charts and a data table.

* Stacked Bar Chart: e.g., "Sales by Month & Product Type".

* Line Chart with Multiple Series: e.g., "Sales vs. Target vs. Previous Year".

* Scatter Plot: e.g., "Customer Lifetime Value vs. Acquisition Cost".

* Data Table: "Detailed Transaction Log" with pagination, sorting, and export options.

* Filters apply dynamically to all relevant widgets.

* Clickable elements on charts (e.g., a bar in a bar chart) can trigger drill-down to the detailed data table or another specific view.

4. Detailed Component Specifications

4.1. KPI Cards

text • 68 chars
    ^ 12.5%
    $1,234,567
    Total Revenue
    vs. Last Month
    
Sandboxed live preview

Analytics Dashboard Builder: Design & Requirements Specification

This document outlines the detailed design specifications, wireframe concepts, color palettes, and user experience (UX) recommendations for the "Analytics Dashboard Builder." The goal is to create a robust, intuitive, and visually appealing platform that empowers users to gain actionable insights from their data effectively.


1. Project Overview & Goal

The Analytics Dashboard Builder aims to provide a centralized, customizable, and interactive platform for businesses to visualize, monitor, and analyze key performance indicators (KPIs) across various operational areas (e.g., Sales, Marketing, Operations, Finance). The primary goal is to transform raw data into clear, actionable intelligence, enabling data-driven decision-making.

Target Audience: Business Owners, C-Suite Executives, Department Heads (Sales, Marketing, Operations, Finance), Business Analysts, and Data Teams.


2. Core Features & Functionality

The dashboard will support the following key capabilities:

  • Customizable Dashboards: Users can create multiple dashboards, add/remove widgets, and arrange them according to their preferences.
  • Diverse Data Sources: Integration capabilities for various data sources (e.g., CRM, ERP, Marketing Automation, Databases, Spreadsheets).
  • Interactive Visualizations: A library of chart types (line, bar, pie, scatter, gauge, tables, maps) with interactive elements like tooltips, zoom, and drill-down.
  • Filtering & Segmentation: Advanced filtering options by date range, dimensions (e.g., product category, region, customer segment), and metrics.
  • Real-time/Near Real-time Data: Ability to display data with minimal latency, supporting scheduled refreshes.
  • Alerts & Notifications: Configurable alerts based on predefined thresholds for KPIs.
  • User & Role Management: Granular permissions to control access to dashboards, data sources, and features.
  • Export & Sharing: Options to export data and visualizations (CSV, PDF, PNG) and share dashboards with other users or via secure links.
  • Drill-down Capability: From high-level summaries to detailed underlying data.

3. Design Specifications

3.1. Layout Structure

The dashboard will follow a modern, clean, and highly functional layout:

  • Persistent Header (Top Bar):

* Left: Company Logo/Dashboard Title.

* Center: Global Search Bar (for dashboards, reports, data points).

* Right: User Profile (avatar, name, settings, logout), Notifications Icon, Help/Support Icon.

  • Collapsible Sidebar Navigation (Left Panel):

* Main Menu Items: Dashboard Overview, My Dashboards, Data Sources, Reports, Settings, Admin.

* Active State Indicator: Clearly highlight the currently selected navigation item.

* Sub-menus: Expandable sections for deeper navigation within a category (e.g., under "My Dashboards," list created dashboards).

  • Main Content Area:

* Dynamic Grid Layout: Utilizes a responsive grid system (e.g., 12-column grid) to allow flexible placement and resizing of widgets.

* Dashboard Title & Description: Prominently displayed at the top of each dashboard view.

* Global Filters/Controls: A dedicated area (either sticky at the top of the content area or a collapsible right-hand panel) for common filters (e.g., Date Range Selector, Primary Dimension Selector).

* Widget Area: The primary space for data visualizations and KPI cards.

  • Optional Footer: Minimalist, containing copyright information or legal links, generally not visible on core dashboard views.

3.2. Responsive Design Principles

The dashboard will be designed with a "mobile-first" approach, ensuring optimal usability across various devices:

  • Fluid Grids: Widgets will resize and reflow to fit screen dimensions.
  • Adaptive Navigation: Sidebar navigation will transform into a hamburger menu on smaller screens, or be accessible via a swipe gesture.
  • Prioritized Content: Essential KPIs and visualizations will be prioritized for display on smaller screens, with less critical details accessible via expansion or drill-down.
  • Touch-Friendly Interactions: Larger tap targets for buttons, filters, and interactive chart elements.

3.3. Data Visualization Principles

  • Clarity & Simplicity: Visualizations should be easy to understand at a glance, avoiding unnecessary clutter.
  • Consistency: Consistent use of colors, labels, and chart types across the platform for similar data.
  • Actionable Insights: Design charts to highlight trends, outliers, and key takeaways that prompt action.
  • Appropriate Chart Selection: Use the right chart type for the data being presented (e.g., line charts for trends, bar charts for comparisons, pie/donut for proportions).
  • Contextual Information: Provide axis labels, units, legends, and tooltips to give context without overwhelming the user.
  • Accessibility: Ensure high contrast ratios, use distinct color palettes, and provide alternative text for images/charts for screen readers.

3.4. Interactivity

  • Hover States: Visual feedback on hover for interactive elements (buttons, links, chart segments).
  • Click-to-Filter/Drill-down: Clicking on a chart segment or table row should filter other related widgets or navigate to a detailed view.
  • Date Range Selector: Predefined ranges (e.g., "Last 7 Days," "This Month," "YTD") and custom date pickers.
  • Dropdowns & Multi-Select: For filtering by dimensions.
  • Search Functionality: Within tables and filter options.
  • Drag-and-Drop: For rearranging widgets in edit mode.

4. Wireframe Descriptions (Conceptual)

4.1. Dashboard Overview Page

  • Top Section (KPI Cards):

* Four to six prominent KPI cards (e.g., "Total Revenue," "New Customers," "Conversion Rate," "Average Order Value," "Gross Margin").

* Each card displays the current value, a small trend indicator (up/down arrow with percentage change from previous period), and a sparkline chart.

* Clickable to drill down into detailed reports.

  • Middle Section (Trend Analysis):

* Large line chart showing "Revenue Trend Over Time" with options to segment by product category or region.

* Alongside, a bar chart comparing "Sales by Region" or "Top 5 Products by Revenue."

  • Bottom Section (Detailed Breakdown/Table):

* A table displaying "Recent Orders" or "Top Performing Campaigns" with columns for key metrics (e.g., Order ID, Customer Name, Value, Status, Date).

* An interactive map visualization showing "Sales by Geographic Location."

  • Global Filters: Prominently displayed at the top right (Date Range, Business Unit Selector).

4.2. Specific Module: Sales Performance Dashboard

  • Header: "Sales Performance Dashboard" title, followed by global filters (Date Range, Salesperson, Product Category, Region).
  • Top Row:

* Sales Revenue: Large KPI card with current value, % change, and sparkline.

* New Leads: Large KPI card with current value, % change, and sparkline.

* Conversion Rate: Large KPI card with current value, % change, and sparkline.

* Average Deal Size: Large KPI card with current value, % change, and sparkline.

  • Second Row:

* Revenue by Product Category (Bar Chart): Horizontal bar chart showing revenue contribution by different product categories.

* Sales Funnel (Funnel Chart): Visualizing stages from "Leads" to "Closed Won," with conversion rates between stages.

  • Third Row:

* Sales by Region (Geographic Map): Interactive map highlighting sales performance across different regions.

* Top Salespeople (Table): Sortable table displaying individual salesperson performance (Revenue, Deals Closed, Average Deal Size).

  • Fourth Row:

* Sales Trend (Line Chart): Multi-line chart showing daily/weekly/monthly revenue trends for different product lines or sales teams.

4.3. Filter/Control Panel (Right-Hand Collapsible)

  • Header: "Filters & Options"
  • Date Range Selector:

* Quick Select: "Today," "Yesterday," "Last 7 Days," "Last 30 Days," "This Month," "Last Month," "This Quarter," "Last Quarter," "This Year," "Last Year."

* Custom Range: Date picker for "From" and "To" dates.

  • Dimension Filters:

* Dropdowns/Multi-select Checkboxes for: Product Category, Region, Customer Segment, Campaign, Salesperson, etc.

* Search bar within dropdowns for long lists.

  • Metric Selectors: (If applicable) Allow users to switch between different metrics for a single chart (e.g., view "Revenue" vs. "Profit" on the same trend line).
  • Apply Filters Button: To update the dashboard.
  • Reset Filters Button: To clear all selections.

5. Color Palettes

The color palette will be professional, modern, and accessible, designed to enhance data comprehension and user experience.

5.1. Primary & UI Colors

  • Primary Blue (Brand Accent): #0A224D (Deep Navy) - Used for primary buttons, active navigation states, prominent headings, and key branding elements. Conveys trust and professionalism.
  • Secondary Blue (Interactive Elements): #007BFF (Vibrant Blue) - Used for links, hover states, secondary buttons, and interactive elements. Provides a clear contrast and indicates interactivity.
  • Success Green: #28A745 - For positive metrics, success messages, and growth indicators.
  • Warning Yellow: #FFC107 - For warnings, alerts, and moderate performance indicators.
  • Danger Red: #DC3545 - For critical alerts, errors, and negative performance indicators.

5.2. Neutral & Text Colors

  • Background (Light): #F8F9FA (Off-white/Light Gray) - Main background color for content areas, providing a clean canvas.
  • Background (Darker UI Elements): #E9ECEF (Light Gray) - For cards, distinct sections, or subtle borders.
  • Text (Primary): #343A40 (Dark Gray) - For main body text, headings, and labels.
  • Text (Secondary/Muted): #6C757D (Medium Gray) - For secondary information, descriptions, and helper text.
  • Borders/Dividers: #DEE2E6 (Light Gray) - For subtle separation of UI elements.

5.3. Data Visualization Colors

A carefully selected palette will ensure clarity, distinctiveness, and accessibility for various data types.

  • Sequential Palette (for quantitative data, e.g., heatmaps, intensity):

* #D6E6F2 (Light Blue) -> #A2D2EE -> #63BCEB -> #309CD2 -> #0A73B6 (Dark Blue)

  • Diverging Palette (for data with a critical midpoint, e.g., performance above/below target):

* #DC3545 (Red) -> #F0A7A7 -> #FFFFFF (White/Neutral) -> #A7D9A7 -> #28A745 (Green)

  • Categorical Palette (for distinct categories, ensuring colorblind-friendliness):

* #007BFF (Blue)

* #28A745 (Green)

* #FFC107 (Yellow/Orange)

* #DC3545 (Red)

* #6F42C1 (Purple)

* #17A2B8 (Cyan)

* #FD7E14 (Orange)

* #6C757D (Gray)

gemini Output

Analytics Dashboard Builder: Detailed Design Specifications

This document outlines the comprehensive design specifications for the "Analytics Dashboard Builder" platform, serving as a detailed blueprint for development. It covers functional and non-functional requirements, user experience (UX) principles, visual design elements, and interactive behaviors to ensure a robust, intuitive, and professional product.


1. Project Overview and Goals

The Analytics Dashboard Builder aims to empower users to easily connect to various data sources, create custom, interactive dashboards, and visualize key metrics and performance indicators (KPIs) in a meaningful way. The primary goals are:

  • Empowerment: Provide users with tools to build and customize dashboards without extensive technical knowledge.
  • Flexibility: Support diverse data sources and visualization types.
  • Usability: Offer an intuitive and engaging user experience.
  • Actionability: Present data in a way that facilitates informed decision-making.
  • Scalability: Design for future growth in data volume, user base, and features.

2. Design Specifications

2.1 Functional Requirements

  • Data Source Integration:

* Support for various data connectors (e.g., SQL Databases, Cloud Data Warehouses like Snowflake/BigQuery, Google Analytics, Salesforce, HubSpot, custom APIs, CSV/Excel file uploads).

* Secure credential management and connection testing.

* Ability to define data schemas and relationships.

  • Dashboard Creation & Customization:

* Drag-and-drop interface for adding and arranging widgets on a grid-based canvas.

* Resizable widgets.

* Pre-built widget templates (e.g., KPI cards, line charts, bar charts, pie charts, data tables, scatter plots, heatmaps).

* Ability to define custom metrics and dimensions from connected data sources.

* Support for multiple data sources within a single dashboard.

* Text/Markdown widgets for contextual information.

* Image widgets for branding or static visuals.

  • Data Visualization:

* Wide range of chart types with configurable axes, legends, tooltips, and color schemes.

* Ability to switch chart types for the same data.

* Conditional formatting for data tables and KPI cards.

  • Interactivity:

* Global and widget-specific filters (date ranges, categorical dropdowns, search boxes, multi-select).

* Drill-down capabilities for charts and tables.

* Cross-filtering: selecting data points in one widget filters related data in others.

* Hover-over details for data points.

* Real-time or near real-time data refresh options (manual and scheduled).

  • Collaboration & Sharing:

* Role-based access control (Administrator, Analyst/Editor, Viewer).

* Secure sharing of dashboards via URL, email, or embedded code.

* Export functionality (PDF, CSV, PNG, JSON).

* Version history for dashboards (optional, for future consideration).

  • User Management:

* User authentication (email/password, SSO integration).

* Management of user roles and permissions.

* Audit logs for user activities.

  • Alerting & Notifications (Future Consideration):

* Threshold-based alerts on key metrics.

* Email or in-app notifications.

2.2 Key Metrics & KPIs (Illustrative Examples)

The dashboard builder will support the visualization of a wide array of metrics, categorized for clarity:

  • Sales & Revenue: Total Revenue, Average Order Value (AOV), Conversion Rate, Sales Growth, Customer Lifetime Value (CLTV), Churn Rate.
  • Marketing Performance: Leads Generated, Click-Through Rate (CTR), Cost Per Acquisition (CPA), Return on Ad Spend (ROAS), Website Traffic, Bounce Rate.
  • Product & Operations: Active Users, Feature Adoption, Session Duration, Support Tickets, Resolution Time, Inventory Levels, Production Throughput.
  • Financials: Gross Profit, Net Profit, Operating Expenses, Cash Flow, Budget vs. Actual.

2.3 User Roles & Permissions

  • Administrator: Full access to all features, including user management, data source configuration, global template management, and all dashboards. Can create, edit, share, and delete any content.
  • Analyst/Editor: Can connect to pre-configured data sources, create new dashboards, edit their own dashboards, and edit dashboards shared with them. Can share dashboards with other users.
  • Viewer: Can view and interact with dashboards shared with them (apply filters, drill down) but cannot edit, create, or share dashboards.

3. Wireframe Descriptions

The platform will feature several key views, each designed for specific user workflows.

3.1 Dashboard Overview Page

  • Layout: Standard web application layout with a persistent header and left-hand navigation.
  • Header:

* Logo: Prominent branding.

* Global Search Bar: For finding dashboards, data sources, or users.

* User Profile/Settings: Dropdown for account management, logout.

* "Create New Dashboard" Button: Primary call-to-action.

  • Left Navigation Bar:

* My Dashboards: List of dashboards owned by the user.

* Shared with Me: Dashboards shared by others.

* Templates: Pre-built dashboard templates.

* Data Sources: Link to data source management.

* Users & Roles (Admin Only): Link to user management.

* Settings (Admin Only): Application-level settings.

  • Main Content Area:

* Dashboard List/Grid View: Displays dashboards as cards or a list with:

* Dashboard Title, Description.

* Thumbnail preview (if available).

* Last Modified Date, Owner.

* Action buttons (View, Edit, Share, Delete).

* Filtering & Sorting: Options to filter by owner, tags, last modified date, and sort alphabetically or by date.

3.2 Individual Dashboard View

  • Layout: Full-width display of the selected dashboard.
  • Header:

* Dashboard Title: Clearly displayed.

* Last Updated Timestamp.

* Action Buttons: "Edit Dashboard" (if permitted), "Share", "Export" (PDF/CSV/PNG), "Refresh Data", "Full Screen Mode".

* Date Range Picker: Global filter for the entire dashboard.

  • Global Filters Bar:

* Below the header, a dedicated horizontal bar for dashboard-wide filters (e.g., Region, Product Category, Customer Segment). These filters affect all relevant widgets on the dashboard.

  • Main Canvas:

* Grid-based Layout: Widgets are arranged on a flexible grid, allowing for responsive scaling.

* Widget Display: Each widget occupies its defined space, displaying its specific visualization (KPI card, chart, table, etc.).

* Widget Interaction: Hover states reveal specific data points; clicking on charts can trigger drill-downs or cross-filtering.

3.3 Dashboard Builder / Edit Mode

  • Layout: Dashboard view with added sidebars for configuration.
  • Header:

* Dashboard Title (Editable).

* Action Buttons: "Save", "Save As", "Cancel", "Preview".

  • Main Canvas:

* Editable Widgets: Widgets on the canvas display resize handles, drag handles, and a context menu (Edit Data, Edit Visualization, Duplicate, Delete).

* Drag-and-Drop Zones: Clear indicators for where new widgets can be dropped.

  • Right Sidebar (Collapsible):

* Widget Library: A panel listing all available widget types (KPI, Line Chart, Bar Chart, Table, Text, Image). Users drag these onto the canvas.

* Selected Widget Configuration Panel: When a widget is selected on the canvas, this panel dynamically updates to show its specific settings:

* Data Source Selector: Choose the data source for the widget.

* Metric/Dimension Selector: Define what data to display (e.g., SUM(Revenue) by Month).

* Filter Configuration: Widget-specific filters.

* Visualization Settings: Chart type, axes labels, colors, legends, sorting, conditional formatting.

* Title & Description: Widget-specific metadata.

  • Left Sidebar (Optional, for advanced settings):

* Dashboard Settings: Overall dashboard properties (description, tags, refresh rate, global theme).

* Global Filter Management: Add, edit, or remove dashboard-level filters.

3.4 Data Source Management Page

  • Layout: Standard content page.
  • Header: "Data Sources" title, "Add New Data Source" button.
  • Main Content Area:

* List of Connected Data Sources: Table or list view displaying:

* Data Source Name, Type (e.g

4.2. Charts & Graphs

  • General:

* Minimalist Design: Remove unnecessary grid lines, borders, and decorations.

* Clear Labels: Concise axis labels, data labels (when appropriate), and legends.

* Tooltips: Interactive tooltips on hover to show detailed data points.

* Consistent Color Mapping: Use the data visualization palette consistently for specific categories across different charts.

  • Specific Chart Types:

* Line Charts: Smooth lines for trends, clear markers on data points, multiple series differentiated by color.

* Bar Charts: Vertical or horizontal, consistent bar width, clear spacing between bars. Stacked bars for part-to-whole comparisons.

* Area Charts: Use for cumulative trends, ensure transparency if stacking multiple areas.

* Donut Charts: Max 5-6 segments. Use for showing proportions of a whole. Accompany with the total value in the center.

* Data Tables:

* Headers: Sticky headers for scrolling tables.

* Functionality: Sortable columns, search, pagination, row density options (compact/standard), export to CSV/Excel.

* Visuals: Zebra striping for readability, subtle hover states on rows.

4.3. Filters & Controls

  • Date Range Picker: Calendar-based selection, pre-defined quick options (Last 7 Days, Last 30 Days, This Quarter, YTD).
  • Dropdowns: Single-select and multi-select options. Clear labels, search functionality for long lists.
  • Radio Buttons/Checkboxes: For small sets of mutually exclusive or multiple selection options.
  • Search Bar: Global search in the top bar, context-specific search within tables.

5. User Experience (UX) Recommendations

5.1. Navigation & Information Hierarchy

  • Primary Navigation: Left sidebar for main sections. Active state clearly highlighted.
  • Secondary Navigation: Tabbed interface or sub-menu within a section for different views (e.g., "Sales Overview" tab, "Product Sales" tab).
  • Breadcrumbs: To indicate the user's current location within complex hierarchies.
  • Progressive Disclosure: Present high-level summaries first, allowing users to drill down into details as needed.

5.2. Interactivity & Feedback

  • Hover States: Clearly indicate interactive elements (buttons, links, chart segments) with visual changes.
  • Click Actions: Charts and tables should support drill-
analytics_dashboard_builder.txt
Download source file
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);}});}