Product Roadmap Builder
Run ID: 69cb77ae61b1021a29a895352026-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 and Design Requirements

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 collaborative tool that empowers product teams to strategically plan, prioritize, and communicate their product vision effectively.


1. Detailed Design Specifications

The "Product Roadmap Builder" will be a web-based application designed for product managers, product owners, and cross-functional teams.

1.1 Core Modules and Functionality

  • Product & Vision Management:

* Product Creation: Ability to create multiple products, each with its own roadmap.

* Vision & Strategy Definition: Dedicated sections for product vision statement, strategic goals, key performance indicators (KPIs), and target audience.

* Goal Linking: Link features directly to strategic goals to demonstrate alignment.

  • Feature & Initiative Management:

* Feature Creation: Intuitive interface to add new features/initiatives with fields for:

* Name, Description, Status (e.g., Backlog, Planned, In Progress, Done, On Hold).

* Owner, Estimated Effort, Business Value, Dependencies.

* User Stories, Acceptance Criteria (rich text editor support).

* Tags/Categories for filtering and organization.

* Bulk Actions: Ability to add, edit, or delete multiple features simultaneously.

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

  • Prioritization Engine:

* Multiple Prioritization Frameworks: Support for common methods like:

* RICE Scoring: Reach, Impact, Confidence, Effort.

* MoSCoW: Must-have, Should-have, Could-have, Won't-have.

* Value vs. Effort Matrix: Visual drag-and-drop interface.

* Weighted Scoring: Customizable criteria and weights.

* Custom Prioritization: Allow users to define their own scoring metrics.

* Dynamic Reordering: Features should automatically reorder based on chosen prioritization scores.

  • Milestone & Timeline Planning:

* Interactive Timeline View: Drag-and-drop interface for placing features and milestones on a timeline (e.g., quarterly, monthly, weekly).

* Milestone Definition: Create and manage key milestones with dates and descriptions.

* Dependency Mapping: Visually link features and milestones to show dependencies.

* Swimlane Views: Organize features by team, strategic goal, or status.

* Kanban/Board View: Alternative view to manage features in columns (e.g., To Do, Doing, Done).

  • Resource Allocation:

* Team & Member Management: Add team members, define roles, and assign capacity.

* Feature Assignment: Assign features to individual team members or teams.

* Capacity Planning: Visual representation of resource utilization and potential bottlenecks based on estimated effort.

* Skill-Based Matching: (Future enhancement) Match features to resources based on required skills.

  • Risk Assessment & Management:

* Risk Identification: Attach risks to features or milestones.

* Risk Attributes: Fields for Risk Name, Description, Likelihood (High, Medium, Low), Impact (High, Medium, Low), Mitigation Plan, Owner, Status.

* Risk Register: Centralized view of all identified risks.

* Visual Indicators: Display risk levels directly on the roadmap.

  • Stakeholder Communication & Reporting:

* Customizable Dashboards: Overview of roadmap progress, key metrics (e.g., features completed, risks open).

* Shareable Roadmaps: Generate public or private shareable links with view-only access.

* Export Options: Export roadmap views and reports to PDF, CSV, PNG, and PowerPoint formats.

* Presentation Mode: Clean, full-screen view optimized for presentations.

* Audit Trail/Version History: Track changes made to the roadmap.

  • Collaboration Features:

* Comments & Mentions: Allow team members to comment on features and @mention colleagues.

* Notifications: In-app and email notifications for assignments, comments, and status changes.

* Activity Feed: Centralized feed of all relevant updates.

  • User Management & Permissions:

* Role-Based Access Control (RBAC): Define roles such as Admin, Editor, Contributor, Viewer with specific permissions.

* Team Management: Organize users into teams.

  • Integrations (Future Scope):

* Project Management Tools: Jira, Asana, Trello (two-way sync for features/tasks).

* Communication Tools: Slack, Microsoft Teams (notifications).

* Version Control: GitHub, GitLab (link to repositories).

1.2 Technical Requirements

  • Platform: Web-based, responsive design.
  • Backend: Robust, scalable API-driven architecture (e.g., Node.js, Python/Django, Ruby on Rails).
  • Frontend: Modern JavaScript framework (e.g., React, Vue, Angular) for interactive UI.
  • Database: Scalable relational database (e.g., PostgreSQL) or NoSQL (e.g., MongoDB) depending on data structure complexity.
  • Security: OAuth2 for authentication, data encryption at rest and in transit (SSL/TLS), regular security audits.
  • Performance: Optimized queries, lazy loading, caching mechanisms for fast load times and smooth interactions.
  • Accessibility: Adherence to WCAG 2.1 guidelines.

2. Wireframe Descriptions

Below are descriptions for key screens, focusing on functionality and layout.

2.1 Dashboard / Home Screen

  • Layout: Two-column layout with a prominent main content area and a left-hand navigation sidebar.
  • Left Sidebar:

* Company/Workspace Logo.

* Primary Navigation: "Dashboard", "My Roadmaps", "Teams", "Settings".

* Quick Access: Recently viewed roadmaps.

  • Main Content Area:

* Welcome Banner: Personalized greeting.

* "My Roadmaps" Section: Card-based display of active roadmaps with product name, progress bar, and last updated date. "Create New Roadmap" CTA.

* "Upcoming Milestones" Widget: List of next 3-5 key milestones across all assigned roadmaps, with dates and associated product.

* "Key Metrics Overview" Widget: Customizable charts/graphs showing aggregated data (e.g., Features in Progress, Open Risks, Team Capacity).

* "Activity Feed" Widget: Recent updates, comments, and changes across all relevant roadmaps.

2.2 Roadmap View Screen (Timeline/Swimlane)

  • Layout: Full-width content area with a top header bar and the main interactive roadmap canvas.
  • Top Header Bar:

* Product Name / Roadmap Title: Prominently displayed.

* View Selector: Toggle between "Timeline", "Kanban", "Prioritization Matrix", "Resource View".

* Date Range Selector: (e.g., Q1 2024, Next 6 Months, Custom Range).

* Filters: Dropdowns for Status, Owner, Tags, Strategic Goals.

* Actions: "Add Feature", "Export", "Share", "Settings" (for this specific roadmap).

  • Roadmap Canvas (Main Area):

* Timeline Axis: Horizontal axis representing time (months, quarters).

* Swimlanes (Vertical Axis): Customizable by strategic goal, team, or product area.

* Feature Cards: Rectangular cards representing features, placed within swimlanes and across the timeline according to their planned duration.

* Card Content: Feature Name, Status Indicator (color-coded), Owner avatar, small progress bar (if applicable), Risk indicator icon.

* Interactivity: Drag-and-drop to move/resize features; click to open Feature Detail Modal.

* Milestone Markers: Distinct icons/labels on the timeline to denote key milestones.

* Dependency Lines: Visual lines connecting dependent features/milestones.

2.3 Feature Detail Modal / Sidebar

  • Layout: Overlay modal or right-hand sidebar that appears when a feature card is clicked.
  • Header: Feature Name, Status dropdown, "Save" / "Cancel" buttons, "Delete" icon.
  • Main Content (Tabbed Interface):

* "Details" Tab:

* Basic Info: Name (editable), Description (rich text editor), Owner (dropdown), Status (dropdown), Strategic Goal (dropdown).

* Prioritization Scores: Display RICE, MoSCoW, or custom scores with editable input fields.

* Effort & Value: Input fields for estimated effort, business value.

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

* Dependencies: List of linked features with "Add Dependency" button.

* Tags: Multi-select input.

* Attachments: File upload/link input.

* "Requirements" Tab:

* User Stories (list with add/edit).

* Acceptance Criteria (list with add/edit).

* "Risks" Tab:

* List of associated risks with their status. "Add New Risk" button.

* "Resources" Tab:

* List of assigned team members, their roles, and estimated hours allocated.

* "Comments" Tab:

* Input field for new comments.

* Chronological list of comments with user avatars and timestamps.

* "History" Tab:

* Immutable log of all changes made to the feature (who, what, when).

2.4 Prioritization Matrix Screen

  • Layout: Dedicated screen for visual prioritization.
  • Header: Product Name, Prioritization Method Selector (e.g., "Value vs. Effort", "RICE Scores").
  • Matrix Area:

* 2x2 Grid (e.g., Value vs. Effort): X-axis for Effort, Y-axis for Value.

* Feature Bubbles: Each feature represented as a draggable bubble on the matrix. Bubble size could represent another metric (e.g., number of dependencies).

* Interactive Controls: Zoom in/out, legend for bubble colors (e.g., by status).

  • Feature List Sidebar:

* List of all features, sortable by current priority score.

* Quick filters (e.g., "Unprioritized").

* Clicking a feature in the list highlights it on the matrix.


3. Color Palettes

A clean, professional, and accessible color palette will be used to enhance usability and brand identity.

  • Primary Brand Color:

* Hex: #3F51B5 (Indigo Blue)

* Usage: Main call-to-action buttons, active navigation states, primary headers, brand elements.

  • Secondary Accent Color:

* Hex: #FFC107 (Amber Yellow)

* Usage: Highlight important information, notifications, secondary CTAs, progress indicators.

  • Neutral Palette (Text & Backgrounds):

* Dark Text: #212121 (Dark Charcoal) - For primary text, headings.

* Medium Text: #757575 (Medium Gray) - For secondary text, labels, descriptions.

* Light Text/Icons: #FFFFFF (White) - For text on dark backgrounds.

* Primary Background: #F5F5F5 (Light Gray) - Main canvas background.

* Secondary Background/Card: #FFFFFF (White) - For cards, modals, content blocks.

* Borders/Dividers: #E0E0E0 (Light Gray) - Subtle separators.

  • Semantic Colors (Status & Alerts):

* Success/Done: #4CAF50 (Green)

* Warning/On Hold: #FF9800 (Orange)

* Error/Risk: #F44336 (Red)

* Info/Planned: #2196F3 (Blue)

* In Progress: #9C27B0 (Purple)

  • Accessibility Note: All color combinations will be checked for sufficient contrast ratio to meet WCAG 2.1 AA standards.

4. UX Recommendations

The user experience will be designed around principles

gemini Output

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


Detailed Design Specifications

The Product Roadmap Builder will be a web-based application designed for optimal usability across modern browsers. Its architecture will be modular, allowing for future expansion and integration.

1. Core Modules and Views

  • Dashboard View:

* Purpose: Provide a high-level overview of product health, progress, and upcoming critical items.

* Components:

* Key Metrics Widgets: Customizable cards displaying metrics like "Features in Progress," "Upcoming Milestones," "Roadmap Progress (by theme/epic)," "Resource Utilization."

* Quick Links: Shortcuts to recently viewed roadmaps, feature backlogs, or critical sections.

* Notifications Feed: Alerts for upcoming deadlines, risk changes, or stakeholder comments.

* Roadmap Summary Chart: A simplified visual representation of key themes/epics and their progress.

  • Roadmap View (Primary):

* Purpose: Visualize the product roadmap over time, allowing for strategic planning and communication.

* Display Modes:

* Timeline (Gantt-like / Swimlane): Features/Epics displayed as bars on a timeline, grouped by themes, teams, or products.

* Granularity: Switchable views (Quarterly, Monthly, Yearly, Custom Date Range).

* Drag-and-Drop: Ability to reschedule features/epics directly on the timeline.

* Milestone Markers: Distinct visual indicators for key dates.

* Dependency Lines: Visual representation of feature dependencies.

* Kanban (Now/Next/Later): Column-based view for high-level strategic buckets.

* Configurable Columns: E.g., "Discovery," "Now (Current Quarter)," "Next (Next Quarter)," "Later (Future)."

* Card Representation: Each card represents an Epic or Theme, with key information (title, owner, status, priority).

* Drag-and-Drop: Move cards between columns to change strategic priority/timing.

* Filtering & Sorting: Robust options by Product, Theme, Epic, Team, Status, Priority, Owner, Date Range.

* Zoom & Scroll: Smooth zooming in/out and horizontal/vertical scrolling.

* Legend: Explains color coding (e.g., by status, theme, team).

* Export Options: PDF, CSV, Image.

  • Feature Backlog View:

* Purpose: Manage and prioritize all individual features and user stories.

* Display: Table/List view with configurable columns.

* Key Columns: ID, Name, Description (truncated), Status, Priority (e.g., MoSCoW, RICE, WSJF score), Effort, Value, Owner, Theme, Epic, Target Release.

* Filtering, Sorting, Searching: Advanced capabilities to quickly find and organize features.

* Bulk Actions: Ability to update status, assign owner, or change priority for multiple selected features.

* Inline Editing: Edit key fields directly within the table.

* Integration with Roadmap: Link features to epics/themes on the roadmap.

  • Feature/Epic Details Panel (Modal/Side Panel):

* Purpose: Provide comprehensive details and allow editing for a selected feature or epic.

* Sections:

* Overview: Name, Description (rich text editor), Status (dropdown), Priority (dropdown/score input), Owner (user picker), Theme (dropdown), Epic (dropdown/link).

* Planning: Estimated Effort (points/days), Estimated Value, Dependencies (link to other features), Assumptions, Acceptance Criteria.

* Resources: Assigned Team Members (multi-select user picker), Allocated Capacity (e.g., % of time).

* Attachments: File upload (documents, images, links).

* Comments/Activity Log: Threaded comments, history of changes with timestamps and user names.

* Risk Linkage: Ability to link to related risks from the Risk Register.

  • Resource Management View:

* Purpose: Track team capacity and allocate resources to epics/features.

* Components:

* Team Member List: Table with Name, Role, Availability (e.g., % full-time), Skills, Current Allocations.

* Capacity Planning Chart: Visual representation of team/individual capacity vs. allocated work over time (e.g., stacked bar chart showing allocated vs. available hours/points).

* Allocation Interface: Drag-and-drop or modal to assign team members to features/epics.

* Filter by Team, Role, Skill.

  • Risk Register View:

* Purpose: Identify, assess, and manage risks associated with the product roadmap.

* Display: Table/List view.

* Key Columns: ID, Risk Description, Likelihood (dropdown: Low, Medium, High), Impact (dropdown: Low, Medium, High), Risk Score (calculated), Mitigation Plan, Owner, Status (Open, In Progress, Mitigated, Closed), Related Feature/Milestone.

* Risk Matrix: Small interactive chart showing risks plotted by Likelihood vs. Impact.

* Filtering, Sorting, Searching.

  • Stakeholder Communication Plan View:

* Purpose: Define and manage communication strategies for different stakeholder groups.

* Components:

* Stakeholder List: Table with Name, Role, Influence (dropdown), Interest (dropdown), Communication Needs.

* Communication Matrix: Table outlining communication frequency, channels (e.g., email, presentation, dashboard), content type, and target audience.

* Reporting Templates: Pre-defined templates for status reports, executive summaries, etc., with placeholders for roadmap data.

* Notification Preferences: Configure automated reports or alerts.

2. General UI Elements & Interactivity

  • Global Navigation: Persistent sidebar or top bar with links to Dashboard, Roadmaps, Backlog, Resources, Risks, Communication, Settings.
  • Contextual Navigation: Breadcrumbs for hierarchical navigation within a module.
  • Search Bar: Global search functionality across all modules.
  • User Profile & Settings: Account management, notification settings, integrations.
  • Modals & Side Panels: For detailed views, forms, and secondary interactions to maintain context.
  • Buttons & Actions: Clear primary, secondary, and destructive actions. Iconography where appropriate.
  • Forms: Intuitive input fields, dropdowns, date pickers, rich text editors.
  • Data Grids/Tables: Resizable columns, sticky headers, pagination/infinite scroll, row selection.
  • Loading States: Clear visual indicators for data loading.
  • Empty States: Helpful messages and calls to action when a section is empty.
  • Tooltips & Hints: Provide assistance without cluttering the UI.

3. Data Visualization

  • Progress Bars: For features, epics, themes, and overall roadmap progress.
  • Charts:

* Donut/Pie Charts: For status breakdowns (e.g., features by status).

* Bar Charts: For resource allocation, effort distribution.

* Line Charts: For trend analysis (e.g., sprint velocity, risk score over time).

* Heatmaps/Matrices: For risk assessment (Likelihood vs. Impact).

  • Consistent Charting Library: Use a single, robust charting library to maintain visual consistency.

4. Accessibility

  • WCAG 2.1 AA Compliance: Ensure sufficient color contrast, keyboard navigation, clear focus states, and screen reader compatibility.
  • ARIA Attributes: Implement appropriate ARIA labels and roles for complex UI components.

Wireframe Descriptions

Below are descriptions for key wireframes, outlining their layout and essential components.

Wireframe 1: Dashboard View

  • Layout: Grid-based layout, responsive to screen size.
  • Header: Global navigation (left sidebar or top bar), company logo, user profile, global search.
  • Top Row (Widgets):

* Widget 1 (Large): "Roadmap Progress Summary" - A simplified timeline or stacked bar chart showing progress of top 3-5 themes/epics.

* Widget 2 (Medium): "Upcoming Milestones" - List of 3-5 nearest milestones with dates and associated projects.

* Widget 3 (Medium): "Features in Progress" - Count of features actively being worked on, with a quick link to the backlog.

  • Second Row (Widgets):

* Widget 4 (Medium): "Resource Utilization" - Donut chart showing overall team capacity vs. allocation.

* Widget 5 (Medium): "Open Risks" - Count of open risks with a severity breakdown (e.g., High, Medium, Low).

* Widget 6 (Medium): "Recent Activity Feed" - Chronological list of recent comments, status changes, or assignments.

  • Action Button: "Create New Roadmap" or "Add Feature."

Wireframe 2: Roadmap View (Timeline)

  • Layout: Main content area dominated by the timeline, with controls at the top.
  • Header: Global navigation.
  • Roadmap Controls (Top Bar):

* View Selector: Toggle between "Timeline" and "Kanban" views.

* Time Granularity: Dropdowns for "Quarterly," "Monthly," "Yearly," "Custom Range."

* Filters: Dropdown/sidebar panel for filtering by Product, Theme, Team, Status, Owner.

* Search Bar: Search within the current roadmap.

* Action Buttons: "Add Epic/Feature," "Export."

  • Timeline Area:

* Left Column (Swimlanes): List of themes or products, acting as swimlane headers. Expand/collapse functionality.

* Main Grid: Horizontal timeline axis (e.g., Q1 2024, Q2 2024...).

* Feature/Epic Bars: Rectangular bars representing features/epics, positioned on the timeline within their respective swimlanes.

* Color-coded by status or theme.

* Hover state reveals more details (tooltip).

* Clicking opens the Feature/Epic Details Panel.

* Drag handles for resizing (duration) and moving (rescheduling).

* Milestone Markers: Vertical lines or distinct icons on the timeline, often with a label.

* Dependency Lines: Thin arrows connecting the end of one feature bar to the start of another.

  • Legend: Small panel (bottom right or collapsible sidebar) explaining color codes.

Wireframe 3: Feature Backlog View

  • Layout: Table-centric, with a persistent left sidebar for global navigation.
  • Header: Global navigation.
  • Backlog Controls (Top Bar):

* View Selector: Toggle between "Table" and potentially "Kanban" for prioritization.

* Filters: Dropdown/sidebar panel for filtering by Product, Theme, Status, Priority, Owner.

* Search Bar: Search within the backlog.

* Action Buttons: "Add Feature," "Import," "Export," "Bulk Actions."

  • Feature Table:

* Columns: Configurable and resizable (e.g., Checkbox for bulk actions, ID, Name, Status, Priority, Effort, Value, Owner, Theme, Epic, Target Release).

* Rows: Each row represents a feature.

* Clicking a row opens the Feature/Epic Details Panel (as a side panel or modal).

* Inline editing for selected fields (e.g., Status, Priority, Owner).

* Drag handle on rows for reordering (manual prioritization).

  • Pagination/Scrolling: For large backlogs.

Wireframe 4: Feature/Epic Details Panel (Side Panel)

  • Layout: A fixed-width panel slides in from the right, overlaying part of the current view (e.g., Roadmap or Backlog).
  • Header:

* Feature/Epic Title (editable).

* Status Badge.

* Close Button (X icon).

* Action Buttons: "Delete," "Duplicate," "Share Link."

  • Content Area (Scrollable):

* Tabs/Sections: "Overview," "Planning," "Resources," "Attachments," "Comments."

* Overview:

* Description (Rich Text Editor).

* Dropdowns: Priority, Owner, Theme, Epic.

* Date Pickers: Start Date, End Date.

* Planning:

* Input fields: Estimated Effort, Estimated Value.

* List with "Add Dependency" button.

* Text area: Assumptions, Acceptance Criteria.

* Resources:

* Multi-select user picker for "Assigned Team Members."

* Input for "Allocated Capacity."

* Attachments: Drag-and-drop area for files, list of attached files.

* Comments/Activity Log:

* Text area for new comments.

* Chronological list

gemini Output

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

1. Overall Design Philosophy

The design of the Product Roadmap Builder prioritizes clarity, efficiency, and collaboration. It aims to provide a clean, modern, and visually engaging interface that reduces cognitive load and facilitates quick decision-making.

Core Principles:

  • Clarity & Simplicity: Focus on essential information, minimize clutter, and use intuitive visual cues.
  • Efficiency & Productivity: Streamlined workflows, quick access to common actions, and robust filtering/sorting.
  • Consistency: Predictable UI elements, interactions, and visual language across the entire application.
  • Data Visualization: Effective use of charts, timelines, and matrices to convey complex information at a glance.
  • Accessibility: Design for all users, adhering to WCAG guidelines.
  • Scalability: A design system that can easily accommodate future features and complex data sets.

2. Detailed Design Specifications

2.1. Global UI Elements

  • Top Navigation Bar:

* Height: 64px

* Content: Logo (left), Main Navigation (Dashboard, Roadmaps, Features, Resources, Reports, Settings), User Profile/Notifications (right).

* Interaction: Sticky, always visible. Active link styling (e.g., underline, different text color).

  • Sidebar Navigation (Contextual/Optional):

* Width: 240px (collapsible to 64px icon-only)

* Content: Sub-navigation within a specific module (e.g., within "Roadmaps": All Roadmaps, My Roadmaps, Archived).

* Interaction: Expand/collapse toggle.

  • Search Bar (Global & Contextual):

* Global: Prominently placed in the top navigation or accessible via an icon, allowing search across all roadmaps, features, and resources.

* Contextual: Within specific views (e.g., "Search Features" on the Features page).

* Design: Input field with magnifying glass icon, clear button, and auto-complete suggestions.

  • Call-to-Action (CTA) Buttons:

* Primary: Solid background, high contrast text (e.g., "Create New Roadmap").

* States: Default, Hover, Active, Disabled.

* Secondary: Outlined button, transparent background (e.g., "Cancel", "View Details").

* States: Default, Hover, Active, Disabled.

* Tertiary/Text Buttons: Minimal styling, used for less critical actions (e.g., "Edit", "Delete").

* States: Default, Hover, Active.

2.2. Core Components

  • Input Fields:

* Standard: Single line text, number, email, password.

* States: Default, Focus (blue border), Error (red border), Disabled.

* Labels: Always visible above the input field. Placeholder text provides examples.

* Text Areas: Multi-line input for descriptions. Resizable (vertical only).

* Select Dropdowns: Single and multi-select. Clear indication of selected items. Searchable options for long lists.

  • Checkboxes & Radio Buttons:

* Appearance: Custom styled for consistency (square for checkboxes, circle for radio).

* Labels: Always adjacent and clickable.

  • Toggle Switches: For ON/OFF settings (e.g., "Public Roadmap").
  • Cards:

* Usage: Displaying summarized information for features, roadmaps, resources.

* Design: Rounded corners, subtle shadow for depth, clear internal padding. Interactive elements (e.g., edit icon, status badge) within the card.

  • Tables:

* Usage: Displaying structured data (e.g., list of features, resource assignments).

* Design: Zebra striping for readability, sticky header for scrolling, sortable columns, pagination.

* Interactions: Row hover state, clickable rows for detail view.

  • Modals/Dialogs:

* Usage: For focused tasks (e.g., "Create Feature," "Confirm Deletion").

* Design: Centered overlay, clear header, content area, and action buttons (Primary CTA, Secondary Cancel) at the bottom.

* Behavior: Non-dismissible by clicking outside for critical actions; dismissible for less critical ones.

  • Notifications (Toast Messages):

* Usage: Success, error, warning, info messages.

* Design: Small, non-intrusive banners appearing at the top-right or bottom-center of the screen, auto-dismissing after a few seconds or with a close button.

  • Tooltips:

* Usage: Providing contextual help or explaining icons/abbreviations.

* Design: Small, subtle pop-up on hover, contrasting background, clear text.

2.3. Data Visualization Components

  • Timeline/Gantt Chart:

* Usage: Primary roadmap visualization.

* Design: Horizontal timeline with draggable feature bars, clear start/end dates, dependency lines (optional), milestone markers. Color-coding for status or team.

* Interactions: Zoom in/out, pan, click to view feature details, drag to adjust dates.

  • Kanban Board:

* Usage: Visualizing features by status (e.g., Backlog, In Progress, Done).

* Design: Columns representing stages, draggable feature cards within and between columns.

* Interactions: Drag-and-drop, add new card, quick edit on card.

  • Prioritization Matrix (e.g., 2x2 Impact/Effort):

* Usage: Visualizing features based on criteria.

* Design: Scatter plot with features as points, draggable points to adjust prioritization.

  • Charts (Bar, Line, Pie):

* Usage: Reporting and analytics (e.g., features by status, resource utilization).

* Design: Clean, minimalist charts with clear labels, legends, and interactive tooltips on hover.

3. Wireframe Descriptions (Key Screens)

3.1. Dashboard / Roadmap Overview

  • Layout: Grid-based layout with summary widgets.
  • Content:

* Header: "Welcome, [User Name]!" and quick links (e.g., "Create New Roadmap").

* "My Roadmaps" Card: List of active roadmaps, showing progress bar, key metrics (e.g., # features, next milestone). Clickable to navigate to specific roadmap.

* "Upcoming Milestones" Widget: Timeline view or list of nearest milestones across all roadmaps.

* "Prioritized Features" Widget: Top X features awaiting development, with their priority score.

* "Team Activity" Widget: Recent actions by team members.

* "Roadmap Health" Widget: High-level metrics (e.g., % on track, % at risk) using small charts.

  • Interactions: Quick filters (e.g., "My Roadmaps," "All Roadmaps"), drill-down into specific items.

3.2. Interactive Roadmap Timeline View

  • Layout: Main content area dominated by a horizontal timeline, with a sidebar for filters/settings.
  • Content:

* Header: Roadmap Name, Status, "Add Feature" CTA, "Export" button, view toggles (Timeline, List, Kanban).

* Left Sidebar:

* Filters: By Team, Owner, Status, Category, Priority, Custom Tags.

* Display Options: Toggle dependencies, show resource allocations, zoom level.

* Main Timeline Area:

* X-axis: Time scale (Weeks, Months, Quarters, Years).

* Y-axis: Represents different teams, product areas, or swimlanes.

* Feature Bars: Rectangular bars representing features, sized by duration, color-coded by status/team. Display feature name, key dates, and a small icon for owner/status.

* Milestone Markers: Vertical lines or flag icons indicating key dates.

* Dependencies: Thin lines connecting feature bars.

  • Interactions: Drag-and-drop features to change dates, click feature bar to open detail panel, hover for tooltip, zoom/pan controls, filter application.

3.3. Feature Detail Panel / Page

  • Layout: A modal panel that slides in from the right or a dedicated full-page view.
  • Content:

* Header: Feature Title (editable), Status Badge, "Save," "Cancel," "Delete" buttons.

* Main Section (Tabs if complex):

* Overview: Description (rich text editor), Owner, Priority (dropdown/slider), Status (dropdown), Category, Estimated Effort (e.g., Story Points, T-shirt size), Start Date, End Date.

* Dependencies: List of dependent features (pre-requisites, blockers).

* Resources: Assign team members/roles.

* Risks: Link to associated risks or add new ones.

* Comments: Activity log and collaboration section.

* Attachments: File upload and linking.

  • Interactions: In-line editing for most fields, rich text editor for descriptions, drag-and-drop for attachments, real-time updates for comments.

3.4. Prioritization Matrix / Workspace

  • Layout: Central canvas for the matrix, with a sidebar for feature selection and criteria settings.
  • Content:

* Header: Prioritization Method (e.g., RICE, WSJF, Custom), "Add Feature to Matrix" CTA, "Calculate Scores" button.

* Left Sidebar:

* Unprioritized Features List: Drag-and-drop features onto the matrix.

* Criteria Settings: Sliders/input fields for defining criteria weights (e.g., Reach, Impact, Confidence, Effort for RICE).

* Matrix Canvas:

* Axes: Dynamic based on chosen method (e.g., X-axis: Effort, Y-axis: Impact for 2x2 matrix).

* Feature Bubbles: Each feature represented by a draggable bubble. Size of bubble could indicate another metric (e.g., business value).

* Quadrants/Zones: Visually distinct areas (e.g., "High Impact, Low Effort" quadrant).

  • Interactions: Drag features onto the matrix, drag bubbles within the matrix to adjust scores, click bubble for quick feature details, auto-calculation of overall priority score.

4. Color Palette

A professional, clean, and accessible color palette.

  • Primary Brand Color: #007bff (A vibrant, trustworthy blue, commonly used for primary CTAs, active states, and key highlights).
  • Secondary/Accent Color: #28a745 (A fresh green for success states, positive indicators, and secondary CTAs where appropriate).
  • Neutral Colors:

* Background: #f8f9fa (Very light grey for main content areas).

* Card Background: #ffffff (Pure white for cards, modals, and distinct content blocks).

* Borders/Dividers: #e9ecef (Light grey for subtle separation).

* Dark Grey (Primary Text): #343a40 (Highly readable for main content).

* Medium Grey (Secondary Text): #6c757d (For descriptions, metadata, inactive states).

* Light Grey (Placeholder Text): #adb5bd

  • Semantic Colors:

* Success: #28a745 (Green, same as Secondary Accent)

* Warning: #ffc107 (Amber/Yellow)

* Error: #dc3545 (Red)

* Info: #17a2b8 (Cyan)

  • Data Visualization Colors: A set of distinct, accessible colors for charts and roadmap item differentiation. (e.g., #007bff, #6f42c1, #fd7e14, #20c997, #e83e8c, #6610f2)

5. Typography

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

* Modern, highly legible, excellent for UI elements and body text.

  • Secondary Font Family: Montserrat (or similar geometric sans-serif)

* Can be used for headings or specific emphasis if desired, but Inter alone is sufficient for consistency.

Font Sizes & Weights:

  • H1 (Page Titles): 32px, Semibold (font-weight: 600), #343a40
  • H2 (Section Titles): 24px, Medium (font-weight: 500), #343a40
  • H3 (Sub-sections): 20px, Medium (font-weight: 500), #343a40
  • H4 (Card Titles): 18px, Semibold (font-weight: 600), #343a40
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);}});}