Product Roadmap Builder
Run ID: 69cd16863e7fb09ff16a7daa2026-04-01Business
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 comprehensive design requirements for the "Product Roadmap Builder" tool, focusing on detailed specifications, user experience, visual design, and core functionalities. The goal is to create an intuitive, powerful, and collaborative platform that empowers product teams to strategically plan, prioritize, and communicate their product vision effectively.


1. Project Overview & Goals

Project Name: Product Roadmap Builder

Objective: To provide product teams with a centralized, dynamic, and collaborative tool for building, managing, and communicating strategic product roadmaps.

Key Goals:

  • Enable data-driven feature prioritization.
  • Visualize product strategy over time.
  • Facilitate resource allocation and dependency management.
  • Streamline stakeholder communication and alignment.
  • Identify and mitigate potential risks early.

2. Detailed Design Specifications

This section defines the core modules, data structures, and functional requirements for the Product Roadmap Builder.

2.1. Core Modules & Functionalities

  1. Feature/Initiative Management:

* Create/Edit/Delete: Add new features, epics, or initiatives with detailed descriptions.

* Categorization: Group features by themes, products, teams, or strategic goals.

* Attributes: Assign attributes like owner, status, priority score, estimated effort, business value, target release, dependencies.

* Attachments: Support for attaching documents, mockups, and links.

* Comments: Enable collaborative discussion on each feature.

  1. Prioritization Engine:

* Multiple Frameworks: Support for common prioritization methods (e.g., RICE, MoSCoW, Value vs. Effort Matrix, KANO).

* Customizable Criteria: Allow users to define custom scoring criteria and weights.

* Visual Prioritization: Interactive drag-and-drop interfaces for prioritizing features.

* Score Calculation: Automatic calculation of priority scores based on selected framework and inputs.

  1. Roadmap Visualization:

* Timeline View (Gantt-like): Visual representation of features/initiatives over time, showing start/end dates, dependencies, and progress.

* Swimlane View: Organize timeline by teams, products, or strategic themes.

* Kanban/Board View: Card-based view for managing features through different stages (e.g., Backlog, In Progress, Done).

* List View: Tabular display of all features with sortable and filterable columns.

* Customizable Views: Users can save and share custom filtered views.

  1. Milestone & Release Planning:

* Define Milestones: Create key checkpoints or release dates on the roadmap.

* Associate Features: Link features to specific milestones or releases.

* Progress Tracking: Visualize progress towards milestones based on linked feature statuses.

  1. Resource Allocation & Management:

* Team/Individual Resources: Define available teams or individual contributors.

* Effort Estimation: Assign estimated effort (e.g., story points, hours) to features.

* Capacity Planning: Visualize resource utilization against capacity.

* Overload Alerts: Highlight potential resource overloads.

  1. Risk Assessment & Management:

* Risk Identification: Add potential risks associated with features or the overall roadmap.

* Risk Attributes: Assign likelihood, impact, mitigation strategies, and owner to each risk.

* Risk Matrix: Visualize risks based on likelihood and impact.

* Status Tracking: Monitor risk status (e.g., Open, Mitigated, Closed).

  1. Stakeholder Communication & Reporting:

* Shareable Views: Generate shareable, read-only links for specific roadmap views.

* Presentation Mode: Clean, distraction-free view for presentations.

* Customizable Reports: Generate reports on feature progress, resource allocation, risks, etc.

* Export Options: Export roadmap data to PDF, CSV, or image formats.

* Change Log: Track all changes made to the roadmap for auditing and communication.

  1. User & Workspace Management:

* Role-Based Access Control (RBAC): Define roles (e.g., Admin, Product Manager, Contributor, Viewer) with specific permissions.

* Workspaces/Products: Organize roadmaps by different products or teams.

* Audit Log: Track user actions for compliance and accountability.

2.2. Data Model (Key Entities & Attributes)

  • Product/Workspace:

* ID, Name, Description, Owner, Creation Date

  • Initiative/Epic/Feature:

* ID, Name, Description, Status (e.g., Idea, Backlog, In Progress, Done, Shipped), Priority Score, Business Value, Estimated Effort, Start Date, End Date, Actual Start/End Date, Owner, Parent Initiative (for sub-features), Dependencies (list of Feature IDs), Tags, Comments, Attachments.

  • Milestone/Release:

* ID, Name, Description, Target Date, Status, Associated Features (list of Feature IDs).

  • Resource:

* ID, Name, Type (e.g., Team, Individual), Capacity (e.g., hours/week, story points/sprint), Skills.

  • Risk:

* ID, Description, Likelihood (e.g., Low, Medium, High), Impact (e.g., Low, Medium, High), Mitigation Plan, Owner, Status (e.g., Open, Mitigated, Closed), Associated Feature (optional).

  • User:

* ID, Name, Email, Role, Workspace Permissions.

2.3. Integrations

  • Project Management Tools: Jira, Asana, Trello (two-way sync for feature status, descriptions).
  • Communication Platforms: Slack, Microsoft Teams (notifications for roadmap updates).
  • Analytics Tools: Google Analytics, Mixpanel (for linking feature impact to product metrics).
  • Authentication: SSO (SAML/OAuth2) for enterprise clients.

3. Wireframe Descriptions

The following descriptions outline the key screens and their primary interactive elements.

3.1. Dashboard / Overview Screen

  • Layout: Divided into sections:

* Top Bar: Global navigation (Dashboard, Roadmaps, Features, Resources, Risks, Settings), Search, User Profile.

* Left Sidebar (Optional/Collapsible): Workspace/Product Selector.

* Main Content Area:

* "My Roadmaps" Widget: List of recently accessed or favorite roadmaps with quick links.

* "Upcoming Milestones" Widget: Timeline snippet showing next 3-5 milestones.

* "Key Metrics" Widget: Customizable cards displaying high-level metrics (e.g., "Features in Progress," "Upcoming Risks," "Total Value Delivered").

* "Activity Feed" Widget: Recent updates and comments across all owned roadmaps.

  • Interaction: Widgets can be reordered or customized. Clickable elements lead to detailed views.

3.2. Roadmap Timeline View

  • Layout:

* Top Bar: Roadmap selector, View options (Timeline, Kanban, List), Filter/Sort controls, Add New Feature/Milestone, Share/Export.

* Left Pane (Collapsible): Feature list, organized by themes/epics, with quick info (status, owner). Drag-and-drop features onto the timeline.

* Main Content Area: Horizontal timeline (e.g., months, quarters). Features represented as horizontal bars, color-coded by status or theme. Milestones as vertical markers. Dependencies shown as connecting lines.

  • Interaction:

* Drag-and-Drop: Move feature bars to change dates, resize to change duration.

* Click Feature Bar: Opens a detailed feature modal for editing.

* Zoom: Adjust timeline granularity (weeks, months, quarters, years).

* Hover: Tooltips display full feature name and key details.

3.3. Feature Prioritization Matrix View (e.g., Value vs. Effort)

  • Layout:

* Top Bar: Roadmap selector, Prioritization framework selector (RICE, MoSCoW, Value/Effort), Filter/Sort, Add New Feature.

* Main Content Area: 2x2 or 3x3 matrix grid. X-axis: Effort (Low to High), Y-axis: Value (Low to High). Features represented as draggable cards/bubbles within the grid.

* Unprioritized Features Sidebar: List of features not yet placed on the matrix, available for drag-and-drop.

  • Interaction:

* Drag-and-Drop: Move feature cards across the matrix to assign relative priority.

* Click Feature Card: Opens a detailed feature modal.

* Hover: Tooltips display full feature name and priority score.

* Dynamic Grid: As features are moved, their calculated priority scores update.

3.4. Feature Detail View (Modal/Sidebar)

  • Layout: Modal window or right-hand sidebar overlay.

* Header: Feature Name, Status dropdown, Owner dropdown.

* Tabs: Overview, Details, Comments, Attachments, Risks, Dependencies.

* Overview Tab: Short description, key attributes (priority, value, effort, dates).

* Details Tab: Long description (rich text editor), custom fields.

* Comments Tab: Chronological list of comments, input field for new comments.

* Attachments Tab: List of attached files, upload button.

* Risks Tab: List of associated risks, add new risk button.

* Dependencies Tab: List of dependent features and features this one depends on, add dependency button.

  • Interaction:

* Inline Editing: Most fields editable directly.

* Rich Text Editor: For descriptions and comments.

* Save/Cancel: Buttons at the bottom.

3.5. Resource Allocation View

  • Layout:

* Top Bar: Roadmap selector, Date Range Selector, Filter by Team/Resource.

* Left Pane: List of Teams/Resources, with a summary of their capacity and allocated effort.

* Main Content Area: Timeline view (similar to roadmap timeline), but rows represent individual resources or teams. Feature bars assigned to resources appear here, indicating allocated effort. Over-allocated resources highlighted.

  • Interaction:

* Drag-and-Drop: Assign features to resources directly from a feature backlog sidebar.

* Color-Coding: Indicate resource utilization (e.g., green for under capacity, yellow for near capacity, red for over capacity).

* Drill-down: Click on a resource to see detailed allocation for that resource.


4. Color Palettes

A clean, modern, and accessible color palette will be used to ensure readability and a professional appearance.

4.1. Primary & Secondary Colors

  • Primary Brand Color: #007bff (A vibrant, professional blue) - Used for primary CTAs, active states, key headers.
  • Secondary Accent Color: #28a745 (A confident green) - Used for success indicators, "Add" buttons, positive actions.
  • Tertiary Accent Color: #ffc107 (An engaging yellow/amber) - Used for warnings, pending states, highlighting.

4.2. Neutral Colors

  • Backgrounds:

* #ffffff (Pure White) - Main content areas, cards.

* #f8f9fa (Light Gray) - Page backgrounds, subtle section dividers.

* #e9ecef (Lighter Gray) - Borders, hover states on neutral elements.

  • Text:

* #212529 (Dark Gray) - Primary text, headings.

* #6c757d (Medium Gray) - Secondary text, labels, placeholder text.

* #adb5bd (Light Gray) - Disabled text, subtle hints.

4.3. Semantic Colors

  • Success: #28a745 (Green) - Confirmation messages, completed statuses.
  • Warning: #ffc107 (Yellow/Amber) - Alerts, pending items, moderate risks.
  • Danger/Error: #dc3545 (Red) - Error messages, critical risks, delete actions.
  • Info: #17a2b8 (Cyan) - Informational messages, general notices.

4.4. Data Visualization & Status Colors (Examples)

  • Feature Status:

* Idea: #adb5bd (Light Gray)

* Backlog: #6c757d (Medium Gray)

* In Progress: #007bff (Primary Blue)

* Review: #ffc107 (Amber)

* Done: #28a745 (Green)

* Shipped: #6f42c1 (Purple)

  • Risk Level:

* Low: #28a745 (Green)

*

gemini Output

Product Roadmap Builder: Detailed Design Specifications

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


1. Overall Design Principles & Philosophy

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

  • Clarity & Simplicity: A clean, uncluttered interface that prioritizes essential information and actions, reducing cognitive load.
  • Intuitive Navigation: Easy-to-understand and consistent navigation patterns that allow users to quickly find what they need.
  • Visual Efficiency: Effective use of data visualization (charts, timelines, matrices) to convey complex information at a glance.
  • Action-Oriented: Design elements that encourage direct interaction and facilitate quick updates and decision-making.
  • Scalability: The design must accommodate varying sizes of roadmaps, teams, and product portfolios without compromising performance or usability.
  • Professional & Modern: A contemporary aesthetic that instills confidence and provides a pleasant user experience.
  • Responsiveness: Adaptable design that functions seamlessly across various screen sizes (desktop, tablet).

2. Detailed Design Specifications

2.1. Core Components & Interactions

  • Global Navigation (Left Sidebar):

* Persistent, expandable/collapsible sidebar.

* Primary navigation items: Dashboard, Roadmaps, Features, Milestones, Resources, Risks, Reports, Settings.

* Active state indicator for current page.

* Profile/Account access at the bottom.

  • Top Header Bar:

* Breadcrumbs for easy navigation context.

* Search functionality (global search across roadmaps, features, etc.).

* Notifications icon (e.g., updates, mentions, alerts).

* Help/Support icon.

* "Create New" button (context-sensitive: New Roadmap, New Feature, New Milestone).

  • Content Area:

* Main workspace for each module.

* Consistent layout with clear sections and visual hierarchy.

* Filtering, sorting, and grouping options where applicable.

  • Data Entry & Editing:

* Forms: Clean, well-aligned input fields with clear labels, validation, and helpful tooltips.

* Modals/Side Panels: Used for adding new items (features, milestones) or editing details, ensuring the main view remains visible.

* Rich Text Editor: For descriptions, notes, and communication plans.

  • Interactive Elements:

* Drag-and-Drop: For reordering features, adjusting timelines, and prioritization.

* Context Menus: Right-click or "..." menus for item-specific actions (Edit, Duplicate, Delete, Change Status).

* Hover States: Clear visual feedback on interactive elements.

  • Data Visualization:

* Timelines/Gantt Charts: For roadmap and milestone planning.

* Bar/Pie Charts: For resource allocation, feature status breakdown.

* Scatter Plots: For prioritization matrices (e.g., Value vs. Effort).

* Risk Matrix: For visualizing risk likelihood and impact.

2.2. Key Modules & Functionality Specifications

  1. Dashboard:

* Layout: Grid-based widgets.

* Widgets:

* "My Roadmaps" (list of recently accessed/starred roadmaps).

* "Upcoming Milestones" (timeline view or list).

* "Features in Progress" (count and quick list).

* "Critical Risks" (list of high-impact risks).

* "Team Capacity Overview" (high-level utilization).

* "Roadmap Progress at a Glance" (overall progress bar).

* Interactivity: Clickable widgets to navigate to detailed views.

  1. Roadmap Editor (Main View):

* View Options:

* Timeline View (Default): Horizontal timeline (quarters, months). Features represented as cards/bars within swimlanes (e.g., by Product Area, Team, Theme). Drag-and-drop to adjust timing.

* Kanban Board View: Features as cards, columns representing stages (e.g., Backlog, Discovery, In Progress, Done). Drag-and-drop for status changes.

* List View: Tabular data for quick scanning and bulk editing.

* Swimlanes: Customizable (e.g., by Product Area, Team, Strategic Theme, Quarter).

* Feature Cards:

* Display: Feature Name, Status (color-coded tag), Owner (avatar), Priority (icon/tag), Due Date/Period.

* Interactivity: Click to open detail panel, drag to move.

* Milestone Markers: Distinct visual markers on the timeline.

* Filtering & Sorting: By Owner, Status, Priority, Product Area, Strategic Theme, Date Range.

* "Add Feature" / "Add Milestone" Buttons: Prominently placed.

* Detail Panel (Right Sidebar): Opens when a feature/milestone is selected, allowing for in-line editing without leaving the main view.

  1. Feature Prioritization Module:

* Layout:

* Table View: List of all features with customizable columns for prioritization criteria (e.g., Business Value, User Impact, Effort, Risk, RICE Score, MoSCoW category).

* Matrix View: Interactive 2x2 or 3x3 grid (e.g., Value vs. Effort scatter plot) where features can be dragged between quadrants.

* Prioritization Scores: Direct input fields for numerical scores or dropdowns for qualitative ratings.

* Calculated Scores: Automated calculation of composite scores (e.g., RICE, WSJF).

* Bulk Actions: Apply prioritization criteria to multiple features.

  1. Milestone Planning:

* Gantt Chart: Visual representation of milestones, their dependencies, and associated key features.

* Progress Bars: For each milestone/feature, showing completion percentage.

* Dependency Lines: Clear visual connectors between dependent items.

* Critical Path Highlight: Option to highlight the critical path.

* Zoom Levels: Day, Week, Month, Quarter, Year.

  1. Resource Allocation:

* Team View: List of team members/roles.

* Capacity Visualization: Bar charts or heatmaps showing individual/team capacity versus assigned workload over time.

* Feature Assignment: Drag-and-drop features to team members.

* Overload Warnings: Visual indicators (e.g., red highlights) for over-allocated resources.

* Skills/Role Matching: (Advanced) Suggesting resources based on required skills for features.

  1. Risk Assessment & Management:

* Risk Register: Tabular list of identified risks.

* Columns: Risk ID, Description, Likelihood (dropdown), Impact (dropdown), Risk Score (calculated), Mitigation Plan, Owner, Status (Open, Mitigated, Closed).

* Risk Matrix: Interactive 5x5 grid (Likelihood vs. Impact) with color-coded cells showing the number of risks in each quadrant.

* Filtering: By Risk Score, Status, Owner, Associated Roadmap/Feature.

  1. Stakeholder Communication & Reporting:

* Report Templates: Pre-defined templates for common reports (e.g., Executive Summary, Feature Progress Report, Quarterly Roadmap Update).

* Customizable Dashboards: Allow users to create and save custom views for specific stakeholders, selecting which widgets/data to display.

* Export Options: PDF, CSV, PNG/JPG (for roadmap visuals).

* Shareable Links: Generate read-only links for external stakeholders, with configurable access permissions.

* Presentation Mode: Full-screen, clean view optimized for presentations.


3. Wireframe Descriptions (Key Screens)

3.1. Dashboard Overview

  • Layout: Left Sidebar (Global Nav) | Top Header Bar | Main Content Area (Grid Layout)
  • Main Content:

* Widget 1 (Top Left): "My Roadmaps" - Card-based list of 3-5 recently accessed roadmaps with title, owner, and last updated date. "View All Roadmaps" link.

* Widget 2 (Top Right): "Upcoming Milestones" - Mini timeline/list of 3-4 nearest milestones with date and associated roadmap. "View All Milestones" link.

* Widget 3 (Middle Left): "Features in Progress" - Doughnut chart showing feature status breakdown (e.g., 40% In Progress, 30% To Do, 20% Done, 10% Blocked) with total count.

* Widget 4 (Middle Right): "Critical Risks" - List of 3-5 highest-impact risks with risk name, likelihood/impact, and owner. "View All Risks" link.

* Widget 5 (Bottom Full Width): "Team Capacity Overview" - Simple bar chart showing overall team utilization for the current quarter.

3.2. Roadmap Editor (Timeline View)

  • Layout: Left Sidebar (Global Nav) | Top Header Bar | Main Content Area
  • Main Content:

* Sub-Header: Roadmap Title, "Add Feature" button, "Add Milestone" button, View Selector (Timeline, Kanban, List), Filters dropdown, Sort dropdown.

* Timeline Scale: Horizontal bar at the top showing Quarters/Months/Years.

* Swimlanes (Vertical): Each swimlane represents a Product Area/Theme/Team.

* Swimlane Header: Name of the Product Area, expand/collapse icon.

* Feature Cards: Rectangular cards within the swimlane, positioned horizontally according to their planned start/end dates on the timeline.

* Text: Feature Name, Status Tag (color-coded), Owner Avatar.

* Interaction: Drag horizontally to change dates, drag vertically to change swimlanes. Click to open Detail Panel.

* Milestone Markers: Diamond or flag icons on the timeline, linked to specific dates, with Milestone Name.

* Right Detail Panel (on click of Feature/Milestone):

* Fields: Title, Description (rich text), Status, Priority, Owner, Start Date, End Date, Associated Roadmap, Dependencies, Comments section, Attachments.

* Buttons: "Save," "Cancel," "Delete."

3.3. Feature Prioritization Module (Matrix View)

  • Layout: Left Sidebar (Global Nav) | Top Header Bar | Main Content Area
  • Main Content:

* Sub-Header: Prioritization Method Selector (e.g., Value vs. Effort, RICE, MoSCoW), Filters, "Add Feature" button.

* Prioritization Matrix (2x2 Grid):

* X-axis: Effort (Low to High)

* Y-axis: Value (Low to High)

* Quadrants:

* Top-Left: High Value, Low Effort (Quick Wins)

* Top-Right: High Value, High Effort (Big Bets)

* Bottom-Left: Low Value, Low Effort (Fill-ins)

* Bottom-Right: Low Value, High Effort (Avoid/Reconsider)

* Feature Bubbles: Each feature represented as a circular bubble within the matrix, sized by a third metric (e.g., Risk) or uniform size.

* Text: Feature Name (truncated if necessary).

* Interaction: Drag-and-drop bubbles between quadrants. Hover to see full details. Click to open Detail Panel.

* Feature List (Below Matrix): A scrollable list of features not yet prioritized or for quick access, with their current scores.


4. Color Palettes

The color palette is designed to be professional, modern, and accessible, using a combination of cool tones for stability and accent colors for emphasis.

  • Primary Brand Color: #007bff (A vibrant, professional blue)

Usage:* Primary call-to-action buttons, active navigation states, primary headings, progress bars.

  • Secondary Accent Color: #28a745 (A fresh, optimistic green)

Usage:* Success messages, positive indicators, secondary action buttons.

  • Neutral Palette (Grayscale):

* #F8F9FA (Lightest Gray): Backgrounds, subtle borders.

* #E9ECEF (Lighter Gray): Card backgrounds, hover states.

* #CED4DA (Medium Gray): Borders, inactive elements.

* #6C757D (Dark Gray): Secondary text, icons.

* #343A40 (Darkest Gray): Primary text, headings.

  • Status & Alert Colors:

* #DC3545 (Red): Critical risks, error messages, blocked status.

* #FFC107 (Yellow): Warnings, on-hold status, high-impact risks.

* #17A2B8 (Cyan

gemini Output

Finalized Design Assets: Product Roadmap Builder

This document outlines the comprehensive 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 empowers product teams to strategically plan, prioritize, and communicate their roadmap effectively.


1. Design Philosophy & Principles

Our design philosophy centers on Clarity, Actionability, and Collaboration.

  • Clarity: Information must be easy to understand at a glance, with clear visual hierarchy and minimal cognitive load. Complex data visualizations should be intuitive.
  • Actionability: Users should be able to perform core tasks efficiently, with direct manipulation and clear calls to action. The tool should facilitate decision-making, not just data entry.
  • Collaboration: The design must support seamless teamwork, enabling shared understanding, feedback, and communication across stakeholders.
  • Flexibility: The interface should accommodate various roadmap styles (timeline, Kanban, list) and allow for customization to fit different organizational needs.
  • Scalability: The design should gracefully handle growth in features, teams, and complexity without becoming cluttered or overwhelming.

2. Detailed Design Specifications

2.1. Color Palette

The chosen color palette balances professionalism with approachability, ensuring data is easily distinguishable and the interface is pleasant to use for extended periods.

  • Primary Brand Color: #007BFF (Vibrant Blue)

Usage:* Key interactive elements (primary buttons, active navigation states, progress indicators, main headings), brand accents.

  • Secondary Accent Color: #28A745 (Success Green)

Usage:* Positive confirmations, 'Add New' actions, completed milestones, success messages, specific data points.

  • Tertiary Accent Color: #FFC107 (Warning Yellow)

Usage:* Warnings, items needing attention, features 'In Review' or 'On Hold', specific data points.

  • Alert/Error Color: #DC3545 (Danger Red)

Usage:* Error messages, destructive actions (delete), high-risk indicators.

  • Neutral Palette (Grayscale):

* #212529 (Dark Gray): Body text, primary headings.

* #6C757D (Medium Gray): Secondary text, labels, disabled states, subtle borders.

* #ADB5BD (Light Gray): Placeholders, subtle backgrounds, inactive states.

* #E9ECEF (Extra Light Gray): Backgrounds for cards, sections, input fields.

* #F8F9FA (Off-White): Main application background.

  • Data Visualization Palette: A curated set of distinct, accessible colors for charts and graphs, ensuring differentiation without clashing. (e.g., a mix of blues, greens, purples, oranges, ensuring good contrast for accessibility).

2.2. Typography

A clean, modern, and highly readable font family is selected to ensure clarity across various screen sizes and information densities.

  • Primary Font Family: Inter (or similar sans-serif like Roboto, Open Sans)

Rationale:* Excellent readability, professional appearance, available in a wide range of weights.

  • Headings (H1-H6): Inter Bold, Semi-Bold

* H1 (Page Title): 32px - 36px

* H2 (Section Title): 24px - 28px

* H3 (Card Title/Subsection): 18px - 20px

* H4 (Sub-label/Small Heading): 16px

* H5, H6 (Contextual): 14px

  • Body Text: Inter Regular

* Default Body: 16px (for main content readability)

* Small Text: 14px (for descriptions, labels, helper text)

* Caption/Metadata: 12px (for timestamps, minor details)

  • Line Height: 1.5 - 1.6 for body text to improve readability.
  • Letter Spacing: Standard for body text, slightly tighter for headings.

2.3. Iconography

A consistent, clear, and scalable icon set is crucial for quick recognition and improved user experience.

  • Style: Line-based (outline) icons, with a consistent stroke weight and rounded corners for a modern, friendly feel. Fill icons can be used for active states or specific indicators.
  • Library: Utilize a well-maintained library (e.g., Font Awesome, Material Icons, or a custom set) to ensure consistency and availability.
  • Key Icons:

* Navigation: Home, Roadmap, Features, Teams, Settings, Analytics.

* Actions: Add, Edit, Delete, View, Filter, Sort, Search, Export, Share.

* Status/Indicators: Complete, In Progress, On Hold, Blocked, High Priority, Low Priority.

* Data Viz: Bar Chart, Line Chart, Pie Chart, Table.

2.4. Component Library

A robust component library ensures consistency, accelerates development, and provides a predictable user experience.

  • Buttons:

* Primary: Solid fill, Primary Brand Color, white text.

* Secondary: Outline with Primary Brand Color, white background, Primary Brand Color text.

* Tertiary/Ghost: Text-only, for less prominent actions.

* Danger: Solid fill, Alert/Error Color, white text.

* Sizes: Small, Medium, Large.

* States: Hover, Active, Focus, Disabled.

  • Input Fields:

* Standard text input, dropdowns, multi-select, date pickers, rich text editor.

* Clear labels, placeholder text, validation states (success, error, warning).

* Focus state with a subtle border highlight (Primary Brand Color).

  • Cards:

* Used for grouping related information (e.g., feature details, milestone summaries, dashboard widgets).

* Subtle shadows for depth, rounded corners (4-8px radius). Background: Extra Light Gray or Off-White.

  • Tables:

* Clean, readable tables for displaying lists of features, tasks, or resources.

* Alternating row colors (subtle light gray) for readability, sticky headers for long lists.

* Sortable columns, pagination.

  • Modals/Drawers:

* Used for focused tasks (e.g., "Add New Feature," "Edit User Profile").

* Clear headings, close buttons, consistent action button placement.

* Overlay background with transparency to emphasize focus.

  • Charts & Graphs:

* Utilize a modern charting library (e.g., Chart.js, Recharts, D3.js).

* Consistent data visualization palette, clear labels, tooltips on hover for detail.

* Types: Bar charts (for resource allocation), Gantt charts (for timeline views), pie charts (for status breakdowns), line charts (for progress tracking).

  • Notifications & Toasts:

* Temporary, non-intrusive messages for feedback (success, error, info).

* Positioned consistently (e.g., top-right or bottom-center).


3. Wireframe Descriptions & Key Views

3.1. Dashboard / Overview

  • Layout: Grid-based layout with customizable widgets.
  • Widgets:

* "Roadmap Progress" (Progress Bar/Chart): Visualizing overall roadmap completion against key milestones.

* "Upcoming Milestones" (List/Card View): Displays the next 3-5 critical milestones with dates and status.

* "Features by Status" (Donut Chart): Breakdown of features by status (Planned, In Progress, In Review, Done, On Hold).

* "Team Workload" (Bar Chart/Table): High-level view of resource allocation across teams or individuals.

* "Recent Activity Feed": Chronological list of recent updates, comments, and changes across the roadmap.

* "Quick Actions": Buttons for "Add New Feature," "View Roadmap," "Prioritize Features."

  • Header: Global search, notifications, user profile/settings.
  • Navigation: Left-hand sidebar or top navigation for main sections (Dashboard, Roadmap, Features, Teams, Settings).

3.2. Roadmap View (Timeline / Gantt Chart)

  • Primary Display: Interactive Gantt chart displaying features/epics as bars along a timeline.

* X-axis: Time (Weeks, Months, Quarters, Years – selectable granularity).

* Y-axis: Features/Epics, grouped by Initiative, Team, or Product Area (collapsible rows).

* Bars: Represent feature duration, color-coded by status or team.

* Hovering over a bar shows detailed tooltip (title, dates, owner, status).

* Drag-and-drop functionality for rescheduling features.

* Resize handles on bars to adjust duration.

* Milestones: Vertical lines or flag icons indicating key dates with labels.

* Dependencies: Visual connectors (arrows) between dependent features.

  • Sidebar/Filters:

* Filter by: Status, Owner, Team, Product Area, Priority, Custom Tags.

* Toggle views: Timeline, Kanban, List.

* Zoom level (days, weeks, months, quarters).

* "Show/Hide Dependencies."

  • Header Actions: "Add New Feature," "Export Roadmap," "Share View," "Print."
  • Feature Details Panel: Clicking a feature bar opens a side panel or modal for editing details without leaving the roadmap view.

3.3. Feature / Initiative Details View

  • Layout: Two-column layout or tabbed interface for comprehensive details.
  • Left Column (Overview/Metadata):

* Title: Large, editable text field.

* Description: Rich text editor for detailed information.

* Key Fields: Status (dropdown), Priority (dropdown/slider), Owner (user select), Team (multi-select), Start Date, End Date, Estimated Effort (e.g., Story Points, T-shirt size), Product Area (dropdown).

* Tags/Labels: Input for custom categorization.

* Attachments: File upload/link.

  • Right Column (Related Information):

* Dependencies: List of upstream/downstream features, with links.

* Sub-features/Tasks: Nested list of smaller tasks required for the feature, with individual statuses.

* Comments/Activity Log: Chronological feed for discussions and changes, with @mentions support.

* Risks: Linked risks associated with this feature (see Risk Management).

* Goals/OKRs: Link to strategic goals this feature supports.

  • Header Actions: "Save," "Delete," "Share Link."

3.4. Prioritization Matrix View

  • Display: Interactive 2x2 matrix (e.g., Value vs. Effort, RICE Score matrix).

* X-axis: Effort (Low to High).

* Y-axis: Value (Low to High).

* Features: Represented as draggable cards or circles, with title and key info.

* Quadrants: Clearly defined quadrants (e.g., "Quick Wins," "Big Bets," "Fill-ins," "Time Sinks").

  • List View (Alternative/Companion): Features listed with their calculated prioritization scores (e.g., RICE, WSJF).

* Sortable by any metric.

* Ability to edit scores directly in the table.

  • Controls:

* Select prioritization framework (RICE, WSJF, Value/Effort).

* Input fields for scoring criteria (Reach, Impact, Confidence, Effort).

* Visual filters to highlight features by owner, status, or team.

  • Actions: "Bulk Update Status," "Move to Roadmap."

4. User Experience (UX) Recommendations

4.1. Navigation & Information Architecture

  • Clear Global Navigation: Consistent left-hand sidebar for primary sections (Dashboard, Roadmap, Features, Teams/Resources, Risk, Settings). Highlight active section.
  • Breadcrumbs: For deep navigation paths (e.g., Dashboard > Product X > Feature Y), to aid user orientation.
  • Contextual Actions: Buttons and actions should be logically placed near the elements they affect.
  • Search Functionality: Prominent global search bar to quickly find features, teams, or documents.
  • Filtering & Sorting: Robust and easily accessible filter/sort options on all list and table views. Persist user preferences where appropriate.

4.2. Interactivity & Responsiveness

  • Drag-and-Drop: Essential for roadmap scheduling (Gantt), prioritization matrix, and reordering lists. Provide clear visual cues during drag operations.
  • In-line Editing: Allow users to quickly edit key fields (e.g., feature title, status) directly on the roadmap or in tables without opening a full modal.
  • Responsive Design: The application must be fully responsive, adapting gracefully to various screen sizes (desktop, tablet, potentially mobile for viewing). Prioritize core viewing capabilities on smaller screens.
  • Keyboard Navigation: Support for keyboard shortcuts and full tab navigation for accessibility and power users.
  • Tooltips: Provide helpful tooltips on icons, truncated text, and complex data points.

4.3. Data Visualization & Feedback

  • Color Consistency: Use the defined color palette consistently for statuses, teams, and other categories across all charts and roadmap views.
  • Clear Legends: All charts and visualizations must have clear legends.
  • Interactive Charts: Allow users to hover over chart elements for detailed data, click to drill down, or filter data.
  • Progress Indicators: Use spinners, progress bars, and skeleton loaders for actions that take time, providing visual feedback to the user.
  • Toast Notifications: For success, warning, and error messages, providing non-intrusive feedback.
  • Empty States: Design friendly and informative empty states for when no data is present (e.g., "No features added yet. Click here to get started!").

4.4. Collaboration & Communication

  • Comment Sections: Implement rich text comment sections with @mentions for team collaboration on features, risks, and initiatives.
  • Activity Logs: Maintain a clear, chronological activity log for each feature and the overall roadmap, showing who did what and when.
  • Share Functionality: Allow sharing of specific roadmap views, features, or entire roadmaps via links, email, or export (PDF, CSV).
  • Version Control/History: Ability to view past versions of the roadmap or revert changes (optional, but highly valuable
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
"); 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);}});}