Product Roadmap Builder
Run ID: 69cbbe0a61b1021a29a8be992026-03-31Business
PantheraHive BOS
BOS Dashboard

Build a strategic product roadmap with feature prioritization, milestone planning, resource allocation, risk assessment, and stakeholder communication plan.

Product Roadmap Builder: Research & Design Requirements

This document outlines the detailed design specifications, wireframe descriptions, color palettes, and user experience (UX) recommendations for the "Product Roadmap Builder" tool. This foundational step ensures a robust, intuitive, and effective solution for strategic product planning.


1. Detailed Design Specifications

1.1 Functional Requirements

The Product Roadmap Builder must provide the following core functionalities:

  • Roadmap Management:

* Create, edit, delete, and archive multiple roadmaps.

* Define roadmap scope, owner, and time horizons (e.g., quarterly, annual).

* Version control and history tracking for roadmap changes.

  • Feature Management & Prioritization:

* Add, edit, delete, and categorize product features/initiatives.

* Support multiple prioritization frameworks (e.g., MoSCoW, RICE, WSJF, custom scoring).

* Visualize feature priority and status (e.g., Planned, In Progress, Done, Backlog).

* Define feature dependencies and relationships.

* Assign effort and value estimates to features.

  • Milestone Planning & Visualization:

* Define strategic milestones and key release dates.

* Visually link features to specific milestones on a timeline.

* Gantt chart or swimlane view for roadmap visualization.

  • Resource Allocation:

* Define and manage available resources (teams, individuals).

* Allocate resources to features/initiatives.

* Visualize resource capacity and potential bottlenecks.

* Track resource utilization against planned effort.

  • Risk Assessment & Management:

* Identify, categorize, and document potential risks associated with features or the roadmap.

* Assign severity, likelihood, and define mitigation plans for each risk.

* Track risk status and ownership.

  • Stakeholder Communication & Collaboration:

* Generate customizable stakeholder views (e.g., filtered by audience, theme).

* Export roadmaps to various formats (PDF, CSV, image).

* Share read-only or collaborative roadmap links.

* Comment functionality on features and roadmap items.

  • Reporting & Analytics:

* Dashboard view with key roadmap metrics (e.g., feature progress, risk trends, resource allocation summary).

* Customizable reports on roadmap health and execution.

  • Integrations (Future Consideration):

* API for integration with project management tools (e.g., Jira, Trello, Asana).

* Integration with communication platforms (e.g., Slack, Microsoft Teams) for notifications.

1.2 Technical Requirements

  • Scalability: The system must be able to handle a large number of roadmaps, features, users, and associated data without performance degradation.
  • Security:

* Robust user authentication and authorization (e.g., OAuth2, role-based access control).

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

* Regular security audits and vulnerability assessments.

  • Performance:

* Fast load times for all views and interactions.

* Responsive UI across various devices and screen sizes.

  • API Design: A well-documented RESTful API for potential future integrations and extensions.
  • Cloud-Native Architecture: Designed for deployment on a scalable cloud platform (e.g., AWS, Azure, GCP) leveraging microservices where appropriate for modularity and resilience.
  • Data Backup & Recovery: Automated daily backups with defined recovery point objectives (RPO) and recovery time objectives (RTO).

1.3 High-Level Data Model

  • User: UserID, Name, Email, OrganizationID, Role (Admin, Editor, Viewer).
  • Organization: OrganizationID, Name, SubscriptionPlan.
  • Roadmap: RoadmapID, OrganizationID, Name, Description, OwnerUserID, StartDate, EndDate, Status (Active, Archived), CreationDate, LastModifiedDate.
  • Feature: FeatureID, RoadmapID, Name, Description, Category, Status (Backlog, Planned, In Progress, Done), PriorityScore, EffortEstimate, ValueEstimate, StartDate, EndDate, OwnerUserID, Dependencies (list of FeatureIDs).
  • PrioritizationMethod: MethodID, Name (e.g., RICE, MoSCoW), Description, Parameters (JSON for specific inputs).
  • FeaturePriority: FeatureID, MethodID, Score (composite or individual parameter scores).
  • Milestone: MilestoneID, RoadmapID, Name, Description, TargetDate.
  • FeatureMilestone: FeatureID, MilestoneID (linking features to milestones).
  • Resource: ResourceID, OrganizationID, Name, Type (Team, Individual), Capacity (e.g., hours/week).
  • FeatureResource: FeatureID, ResourceID, AllocatedEffort.
  • Risk: RiskID, RoadmapID, FeatureID (optional), Name, Description, Severity (Low, Medium, High), Likelihood (Low, Medium, High), MitigationPlan, OwnerUserID, Status (Open, Mitigated, Closed).
  • StakeholderView: ViewID, RoadmapID, Name, Description, FilterSettings (JSON for what to show/hide), ShareableLink.
  • Comment: CommentID, EntityType (Roadmap, Feature, Risk), EntityID, UserID, Text, Timestamp.
  • ActivityLog: LogID, UserID, Action, EntityType, EntityID, Timestamp.

2. Wireframe Descriptions

The following outlines key screens and their components. These are conceptual descriptions to guide visual design.

2.1 Dashboard / Roadmap Overview

  • Layout: Two-column layout with a main content area and an optional sidebar for quick filters or organizational info.
  • Header: Application Logo, User Profile/Settings, "Create New Roadmap" CTA.
  • Main Content:

* Roadmap Cards/List: Each card represents a roadmap, showing:

* Roadmap Name

* Brief Description

* Owner

* Status (e.g., "Active," "Draft")

* Progress Bar (e.g., % of features "Done")

* Key Dates (Start/End)

* Action Buttons (View, Edit, Archive, Delete).

* Search Bar: To quickly find specific roadmaps.

* Filters/Sort: Options to filter by owner, status, date, or sort by name, last modified.

  • Empty State: Prominent "Create Your First Roadmap" button and a brief explanation.

2.2 Individual Roadmap View (Main Working Area)

  • Layout: Persistent header, left-hand navigation for roadmap sections, and a large central content area.
  • Header:

* Roadmap Name (editable in-line).

* "Roadmap Settings" (modal/side panel for overall roadmap configuration).

* "Share" button (opens sharing options modal).

* "Export" button (opens export options modal).

* "Undo/Redo" buttons.

  • Left Navigation (Roadmap Sections):

* Overview (default view, often a timeline).

* Features (list/table view of all features).

* Milestones (dedicated milestone management).

* Resources (resource allocation view).

* Risks (risk register).

* Stakeholder Views (manage custom views).

  • Main Content Area (Overview/Timeline View):

* Timeline/Gantt Chart:

* Horizontal timeline with customizable timeframes (weeks, months, quarters).

* Swimlanes/Rows representing categories, teams, or themes.

* Feature bars/cards placed on the timeline, showing start/end dates, name, status, and owner.

* Drag-and-drop functionality for adjusting feature dates and positions.

* Milestone markers clearly indicated on the timeline.

* Filters & Search: Robust filtering by status, owner, category, priority, etc.

* "Add New Feature" CTA: Prominently placed.

* Legend: Explaining color codes for status, priority, etc.

2.3 Feature Details Panel / Modal

  • Layout: A side panel or modal that opens upon clicking a feature card/item.
  • Header: Feature Name (editable in-line), Status dropdown, Save/Cancel buttons, "Delete Feature" option.
  • Content Sections:

* Basic Info: Description (rich text editor), Category, Owner (user picker), Start Date, End Date, Effort Estimate, Value Estimate.

* Prioritization:

* Dropdown to select prioritization method (e.g., RICE).

* Input fields for method-specific parameters (e.g., Reach, Impact, Confidence, Effort for RICE).

* Calculated Priority Score displayed.

* Dependencies: List of dependent features, ability to add new dependencies.

* Resources: List of allocated resources, their assigned effort, ability to add/remove resources.

* Risks: List of associated risks, ability to link existing or create new risks.

* Comments: A threaded comment section for collaboration.

* Activity Log: Chronological record of changes to the feature.

2.4 Resource Allocation View

  • Layout: Table view or a more visual "resource board" with a sidebar for resource details.
  • Resource List:

* Table columns: Resource Name, Type (Team/Individual), Total Capacity, Allocated Effort, Remaining Capacity.

* Clicking a resource shows their assigned features in a detail panel.

  • Capacity Visualization: Optional bar charts or heatmaps showing overall team/individual capacity utilization over time.
  • "Add New Resource" CTA.

3. Color Palettes

A professional, clean, and modern aesthetic with clear visual hierarchy and semantic meaning.

3.1 Primary Palette

  • Primary Blue (#007bff): Used for main branding elements, primary calls-to-action (CTAs), active navigation states, and key interactive elements. Represents trust, professionalism, and clarity.
  • Dark Blue (#0056b3): Darker shade of primary blue for hover states, active button backgrounds, and strong emphasis.

3.2 Secondary Palette

  • Light Grey (#f8f9fa): Backgrounds for sections, cards, and subtle separators. Provides a clean, spacious feel.
  • Medium Grey (#e9ecef): Borders, inactive states, and secondary background elements.
  • Dark Grey (#343a40): Main text, headings, and strong contrast elements. Ensures readability.

3.3 Accent & Semantic Colors

  • Accent Green (#28a745): Success messages, "Done" status, positive indicators.
  • Accent Orange (#ffc107): Warning messages, "In Progress" status, attention-grabbing but not critical.
  • Accent Red (#dc3545): Error messages, "Blocked" status, critical risks, delete actions.
  • Accent Purple (#6f42c1): For specific categorization, e.g., "Strategic" features or high priority.
  • Accent Cyan (#17a2b8): For specific categorization, e.g., "Operational" features or medium priority.

3.4 Neutral Text & Backgrounds

  • Body Text (#495057): Standard text for readability.
  • Light Background (#ffffff): Main content areas, modals, and cards.
  • **Border (#ced4da
gemini Output

Product Roadmap Builder: Detailed Design Specifications

This document outlines the detailed design specifications, wireframe descriptions, color palettes, and user experience (UX) recommendations for the "Product Roadmap Builder" application. The goal is to create an intuitive, powerful, and visually appealing tool that enables product teams to strategically plan, prioritize, and communicate their product vision effectively.


1. Overall Design Principles

The design of the Product Roadmap Builder will adhere to the following core principles:

  • Clarity & Simplicity: Information should be easy to understand at a glance, with a clean and uncluttered interface. Complex functionalities will be progressively disclosed.
  • Actionability: Users should be able to quickly take action (add, edit, prioritize, share) without unnecessary steps or cognitive load.
  • Flexibility & Customization: The tool should support various roadmap methodologies (timeline, now/next/later, Kanban) and allow for customization of views and data points.
  • Collaboration-Focused: Facilitate seamless teamwork through sharing, commenting, and real-time updates.
  • Data Visualization: Present complex data (timelines, priorities, resource allocation, risks) in clear, digestible visual formats.
  • Responsiveness: Ensure a consistent and optimal experience across various screen sizes (desktop, tablet).

2. Detailed Design Specifications

2.1. Global Navigation & Controls

  • Top Navigation Bar:

* Logo/App Name: Top-left, branding element.

* Roadmap Selector: Dropdown menu allowing users to switch between different roadmaps they have access to. Displays current roadmap name.

* Global Search: Icon (magnifying glass) in the center, expands into a search bar to find features, initiatives, or milestones across the active roadmap.

* Notifications: Icon (bell) with a badge for unread notifications (e.g., new comments, status changes, mentions).

* User Profile/Settings: Icon (avatar) with a dropdown for profile settings, account management, and logout.

* "Create New" Button: Primary CTA (e.g., "+ Add Feature" or "+ New Initiative") prominently placed.

  • Left Sidebar Navigation (Collapsible):

* Dashboard/Overview: Home screen for a high-level summary.

* Roadmap Views:

* Timeline View (default)

* Kanban View (e.g., "Now/Next/Later" or custom stages)

* List View

* Prioritization: Dedicated section for prioritization frameworks.

* Resources: Management of teams, individuals, and capacity.

* Risks: Tracking and mitigation.

* Reports & Analytics: Performance metrics and customizable reports.

* Team/Project Settings: Configuration options for the current roadmap/project.

2.2. Roadmap View (Default: Timeline)

This is the primary visualization of the product roadmap.

  • Header Controls:

* Roadmap Title: Clearly displayed at the top of the main content area.

* View Switcher: Tabs or buttons to switch between Timeline, Kanban, and List views.

* Timeframe Selector: Dropdown/buttons for viewing monthly, quarterly, or yearly.

* Filters: Icon (funnel) opening a sidebar or dropdown with filters for:

* Teams/Owners: Filter by assigned team or individual.

* Status: (e.g., Planning, In Progress, Complete, On Hold, At Risk).

* Priority: (e.g., High, Medium, Low, or score range).

* Themes/Epics: Grouping features under larger strategic initiatives.

* Tags: Custom labels.

* Sorting Options: By start date, end date, priority, status.

* Share/Export: Button to generate shareable links, export to PDF/CSV/image.

  • Timeline Display Area:

* Horizontal Axis: Represents time (months, quarters, years), dynamically adjusting based on selected timeframe.

* Vertical Axis: Can be grouped by:

* Product Area/Theme: Main strategic buckets.

* Teams/Squads: Who is working on it.

* Swimlanes: Each lane represents a different grouping.

* Feature/Initiative Cards:

* Visual Representation: Rectangular "bars" stretching across the timeline, representing the duration of the feature/initiative.

* Key Information (visible on card): Title, owner/team avatar, status indicator (color-coded dot/icon), progress bar (optional).

* Interactivity:

* Drag-and-Drop: To reschedule start/end dates or move between swimlanes/groups.

* Resize Handles: On either end to adjust duration.

* Click: Opens a detailed Feature/Initiative Modal (see 2.3).

* Hover: Displays a tooltip with more details (e.g., full description, key dates).

* Milestone Markers: Distinct icons or vertical lines on the timeline to denote key dates (e.g., product launch, major release).

* "Today" Indicator: A vertical line showing the current date.

2.3. Feature/Initiative Detail Modal/Sidebar

Opened when a feature card is clicked.

  • Header:

* Title: Editable text field for the feature/initiative name.

* Status Indicator: Dropdown for status selection (Planning, In Progress, Complete, On Hold, At Risk).

* Priority Indicator: Dropdown/selector for priority (High, Medium, Low, or specific score).

* Actions: Edit, Duplicate, Delete, Share Link.

* Close Button: (X icon).

  • Main Content Area (Tabs/Sections):

* Overview/Details Tab:

* Description: Rich text editor for detailed explanation.

* Owner/Team: Dropdown/multi-select for assigning individuals or teams (linked to Resource Management).

* Key Dates: Start Date, End Date, Target Release Date (date pickers).

* Dependencies: Link to other features/initiatives (searchable dropdown).

* Themes/Epics: Multi-select dropdown to link to larger strategic themes.

* Tags: Input field for custom tags.

* Attachments: Drag-and-drop or upload for documents, designs, etc.

* Prioritization Tab:

* Displays the prioritization score (e.g., ICE, RICE) and inputs for its components (Impact, Confidence, Effort, Reach) if applicable.

* Link to the main Prioritization module.

* Risks Tab:

* List of associated risks (linked to Risk Management).

* Option to "Add New Risk" directly from here.

* Comments/Activity Log Tab:

* Comments Section: Text input for new comments, @mentions for team members. Displays chronological list of comments.

* Activity Log: Immutable chronological record of changes to the feature (e.g., status change, date update, owner change).

2.4. Prioritization Module

Dedicated view for comparing and scoring features.

  • View Options:

* Table View: List of all features with columns for prioritization criteria (e.g., Impact, Confidence, Effort, Reach, Score). Sortable and filterable.

* Matrix View (e.g., 2x2): Visual representation, e.g., "Impact vs. Effort" or "Value vs. Risk." Features appear as draggable dots on the matrix.

  • Scoring Mechanism:

* Customizable Criteria: Users can define their own scoring criteria (e.g., "Customer Value," "Strategic Alignment," "Technical Feasibility") and assign weights.

* Input Fields: Number inputs, dropdowns, or sliders for each criterion.

* Automatic Score Calculation: Displays the calculated priority score based on chosen framework (ICE, RICE, custom formula).

  • Bulk Actions: Select multiple features to update status, assign owner, or apply tags.

2.5. Resource Management View

  • Team/Individual List: Left sidebar listing all defined teams and individual contributors.
  • Capacity Overview (Main Area):

* Timeline View: Display teams/individuals on the vertical axis, time on the horizontal axis.

* Allocated Time/Projects: Visual bars showing workload for each resource over time, indicating availability.

* Color-Coding: To indicate over-allocation, optimal allocation, or under-allocation.

* Drill-down: Click on a resource to see details of assigned features/tasks.

  • Resource Details Modal: When clicking a team/individual.

* Name, Role, Availability.

* Assigned Features: List of features they are currently assigned to, with their status and due dates.

* Capacity Settings: Define weekly/monthly capacity.

2.6. Risk Management View

  • Risk Register Table:

* Columns: Risk ID, Title, Description, Status (Open, Mitigated, Closed), Impact (High, Medium, Low), Likelihood (High, Medium, Low), Owner, Mitigation Plan, Associated Features.

* Sorting & Filtering: By status, impact, likelihood, owner.

  • Risk Detail Modal:

* Title, Description.

* Impact & Likelihood: Dropdowns (e.g., 1-5 scale or High/Medium/Low).

* Risk Score: Calculated (Impact x Likelihood).

* Mitigation Plan: Rich text editor for steps to reduce impact or likelihood.

* Contingency Plan: Rich text editor for actions if the risk materializes.

* Owner: Assign individual/team.

* Associated Features: Link to relevant features on the roadmap.

* Status, Date Identified, Date Resolved.

* Comments/Activity Log.

2.7. Reporting & Sharing

  • Customizable Dashboards:

* Widgets for key metrics: Features by Status, Features by Priority, Resource Utilization, Top Risks.

* Ability to add/remove/rearrange widgets.

  • Pre-built Reports:

* Roadmap Summary (PDF export).

* Feature List with Details (CSV export).

* Risk Assessment Report.

  • Stakeholder View:

* Generate a read-only, shareable link to a specific roadmap view.

* Option to hide sensitive information (e.g., internal scores, detailed risks).

* Ability for stakeholders to comment on features (if enabled).


3. Wireframe Descriptions (Key Screens)

3.1. Roadmap Dashboard (Timeline View)

  • Layout: Standard web application layout with a fixed top navigation bar and a collapsible left sidebar.
  • Top Nav: PantheraHive Logo (left), "Product X Roadmap" dropdown (center-left), Global Search (center), Notifications (right), User Avatar (far right).
  • Left Sidebar: "Dashboard", "Roadmap Views" (Timeline, Kanban, List), "Prioritization", "Resources", "Risks", "Reports", "Settings".
  • Main Content Area (Roadmap Timeline):

* Header: "Roadmap for Product X" (H1), "Timeline View" tab active, "Kanban View" tab, "List View" tab.

* Controls Row: "Quarterly" dropdown (timeframe), "Filters" icon, "Sort By" dropdown, "+ Add Feature" button, "Share" button.

* Timeline Scale: Horizontal axis showing Q1, Q2, Q3, Q4 with months indicated below. "Today" vertical line.

* Swimlanes (Vertical): Each swimlane titled "Theme A", "Theme B", "Theme

gemini Output

This document outlines the detailed design specifications, wireframe descriptions, color palettes, and user experience (UX) recommendations for the "Product Roadmap Builder" application. The goal is to create a professional, intuitive, and highly functional tool that empowers product teams to strategically plan, manage, and communicate their product roadmaps effectively.


1. Overall Design Philosophy

The design of the Product Roadmap Builder is guided by the following core principles:

  • Clarity & Simplicity: Ensure the interface is clean, easy to understand, and free from unnecessary clutter, allowing users to focus on strategic planning.
  • Usability & Intuition: Design for a natural user flow, leveraging familiar patterns and providing immediate visual feedback for interactions.
  • Flexibility & Customization: Offer various views and filtering options to cater to different planning methodologies and stakeholder needs.
  • Data Richness & Actionability: Present key information concisely, making it easy to identify priorities, risks, and progress, and to take immediate action.
  • Collaboration & Communication: Facilitate seamless team collaboration and clear communication of roadmap plans to all stakeholders.
  • Modern & Professional: Employ a contemporary aesthetic that conveys reliability and sophistication.

2. Key User Interface (UI) Components & Wireframe Descriptions

The application will consist of several core modules, each designed with specific functionalities and user flows in mind.

2.1. Global Navigation & Dashboard

  • Global Navigation (Left Sidebar):

* Structure: Collapsible sidebar containing primary navigation links to key modules: "Dashboard," "Roadmap," "Features (Backlog)," "Milestones & Releases," "Resource Allocation," "Risk Management," "Reports," "Settings."

* Elements: Application logo/name, user profile/account settings, search bar (global).

* Responsiveness: Collapses into a hamburger menu on smaller screens.

  • Dashboard/Overview:

* Purpose: Provides a high-level summary of the roadmap, key metrics, and quick access to important areas.

* Layout:

* Header: Project Title, "Add Feature" & "Share Roadmap" Quick Action buttons.

* Summary Cards: Prominent cards displaying key metrics (e.g., "Features In Progress," "Upcoming Milestones," "High Priority Risks," "Team Capacity").

* High-Level Roadmap Visualization: A condensed, interactive timeline or Gantt-like view showing major themes, epics, or releases over a longer period (e.g., quarterly/yearly).

* Activity Feed/Recent Updates: A list of recent changes, comments, or feature updates.

* Quick Links: To recently viewed features, reports, or discussions.

2.2. Feature Management / Backlog

  • Purpose: Central hub for defining, detailing, and prioritizing all potential product features.
  • Layout:

* Header: "Features" title, "Add New Feature" button, Search bar, Filters (by Status, Priority, Owner, Release, Strategic Theme), Sort options.

* Feature List (Table View):

* Columns: Customizable columns including Feature Name, Status (Idea, To Do, In Progress, Done, Released), Priority (P0, P1, P2, P3), Owner, Estimated Effort, Dependencies, Strategic Theme, Last Updated.

* Interactivity: Drag-and-drop reordering for prioritization within a list; inline editing for quick updates; selectable rows for bulk actions.

* Feature Detail Panel (Modal/Sidebar): Opens upon clicking a feature, displaying comprehensive information:

* Name, Description, Acceptance Criteria, User Stories, Attachments, Comments/Activity Log, Linked Milestones/Releases, Dependencies, Risks, Resources.

2.3. Roadmap View (Timeline & Kanban)

  • Purpose: Visual representation of the product roadmap, showing feature timelines and progress.
  • Layout:

* Toggle: Switch between "Timeline View" and "Kanban View."

* Filters: By Strategic Theme, Product Area, Team, Status, Priority.

* Share/Export Options: Buttons to generate shareable links or export the roadmap.

* Timeline View:

* Horizontal Axis: Represents time (months, quarters, years – zoomable).

* Vertical Swimlanes: Group features by Product Area, Strategic Theme, or Team.

* Feature Cards: Represent individual features, showing duration, status, owner, and key details. Drag-and-drop functionality to adjust dates and durations.

* Milestone Markers: Visually indicate key release dates or important events.

* Kanban View:

* Columns: Represent workflow stages (e.g., "Ideas," "Backlog," "In Progress," "Ready for Review," "Done," "Released").

* Feature Cards: Movable between columns via drag-and-drop. Cards display essential info like name, owner, priority.

2.4. Milestone & Release Planning

  • Purpose: Define and manage key release dates and milestones, linking them to specific features.
  • Layout:

* Header: "Milestones & Releases" title, "Add New Milestone/Release" button, Search, Filters.

* List View:

* Columns: Milestone/Release Name, Target Date, Status (Planned, In Progress, Completed), Description, Associated Features (collapsible list).

* Interactivity: Click to expand details, inline editing.

* Milestone Detail Panel (Modal/Sidebar): Provides comprehensive details, allows linking/unlinking features, and tracks progress towards the milestone.

2.5. Resource Allocation

  • Purpose: Visualize and manage the allocation of teams and individuals to features and initiatives, identifying potential bottlenecks.
  • Layout:

* Header: "Resource Allocation" title, Filters (by Team, Feature, Timeframe).

* Resource Matrix (Table/Gantt-like):

* Rows: Individual team members or teams.

* Columns: Timeframe (weeks/months).

* Cells: Visually represent allocated features, showing estimated effort/hours. Color-coding for capacity (e.g., green for under-capacity, yellow for near, red for over-capacity).

* Interactivity: Drag-and-drop features onto resources; drill down into resource availability.

2.6. Risk Management

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

"+slugTitle(pn)+"

\n

Built with PantheraHive BOS

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

"+slugTitle(pn)+"

\n

Built with PantheraHive BOS

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

"+title+"

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

$1

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

$1

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

$1

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

"); h+="

"+hc+"

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