Hiring Pipeline Builder
Run ID: 69cae908c8ebe3066ba6f59d2026-03-30HR
PantheraHive BOS
BOS Dashboard

Build a complete hiring pipeline with job descriptions, interview question banks, scoring rubrics, offer letter templates, and onboarding checklists.

Step 1 of 3: Research & Design Requirements for Hiring Pipeline Builder

This document outlines the comprehensive design specifications, wireframe descriptions, color palettes, and user experience (UX) recommendations for the "Hiring Pipeline Builder" platform. The goal is to create an intuitive, efficient, and powerful tool that streamlines the entire recruitment process from job creation to candidate onboarding.


1. Design Specifications

1.1 Functional Requirements

The Hiring Pipeline Builder will provide the following core functionalities:

  • Job Requisition & Management:

* Create, edit, and archive job requisitions with fields for title, department, location, employment type, salary range, and reporting structure.

* Generate and manage detailed job descriptions using a rich text editor, including support for custom templates.

* Publish jobs to internal career pages or external job boards (future integration potential).

* Track job status (e.g., Draft, Open, On Hold, Closed, Filled).

* Associate specific interview teams, question banks, and scoring rubrics with each job.

  • Candidate Management:

* Receive and process candidate applications (via integrations or manual input).

* Maintain comprehensive candidate profiles including contact information, resume/CV, cover letter, application questions, and custom fields.

* Visualize and move candidates through customizable pipeline stages (e.g., Applied, Screened, Interview 1, Interview 2, Offer, Hired, Rejected).

* Add internal notes, tags, and attach relevant documents to candidate profiles.

* Search, filter, and sort candidates based on various criteria (stage, skills, source, etc.).

* Initiate candidate rejection with templated, customizable email responses.

  • Interview Management:

* Schedule interviews directly within the platform, with calendar integration (Google Calendar, Outlook Calendar).

* Assign interviewers and define interview types (phone screen, technical, behavioral, panel).

* Provide interviewers with access to relevant candidate profiles, resumes, interview guides, and question banks.

* Collect structured feedback from interviewers against defined scoring rubrics.

  • Interview Question Bank:

* Create, edit, and categorize a centralized library of interview questions (e.g., technical, behavioral, situational, role-specific).

* Associate questions with specific skills, job roles, or pipeline stages.

* Search and filter question banks for easy retrieval.

  • Scoring Rubric Management:

* Design and manage customizable scoring rubrics with defined criteria, scoring scales (e.g., 1-5, poor-excellent), and descriptive definitions for each level.

* Associate rubrics with specific jobs, interview stages, or question sets.

* Enable interviewers to submit feedback and scores directly against the rubric.

  • Offer Management:

* Generate professional offer letters using customizable templates with dynamic merge fields (e.g., candidate name, salary, start date, benefits).

* Track the status of offers (e.g., Draft, Sent, Accepted, Declined).

* Store signed offer letters.

  • Onboarding Checklist Management:

* Create and manage customizable onboarding checklists for new hires.

* Assign tasks to specific individuals (e.g., IT, HR, Hiring Manager) with due dates.

* Track the progress of onboarding tasks for each new hire.

  • Reporting & Analytics:

* Dashboard view with key recruitment metrics (e.g., candidates in pipeline, time-to-hire, source of hire, offer acceptance rate, conversion rates per stage).

* Generate custom reports on recruitment performance.

  • User & Role Management:

* Define and manage user roles (e.g., Administrator, Recruiter, Hiring Manager, Interviewer) with granular permission settings.

* Assign users to specific jobs or departments.

  • Notifications:

* Automated email notifications for new applications, interview requests, feedback reminders, and offer status changes.

* In-app notifications for pending actions and updates.

1.2 Non-Functional Requirements

  • Performance: Fast loading times (under 2 seconds for critical pages), responsive UI, and efficient data retrieval.
  • Security: Role-based access control, end-to-end data encryption, secure authentication (MFA recommended), regular security audits, and compliance with data privacy regulations (e.g., GDPR, CCPA).
  • Scalability: Ability to handle a growing number of job requisitions, candidates, and users without degradation in performance.
  • Usability: Intuitive interface, minimal click paths, clear visual hierarchy, and consistent design language.
  • Reliability: High availability (99.9% uptime target), robust error handling, and regular data backups.
  • Compatibility: Cross-browser compatibility (Chrome, Firefox, Edge, Safari) and responsive design for various devices (desktop, tablet, mobile).
  • Integrations: API-first design to facilitate future integrations with ATS, HRIS, email clients, and calendar services.

2. Wireframe Descriptions

The following descriptions outline the key screens and their primary components, serving as a blueprint for the user interface.

2.1 Dashboard / Home Screen

  • Layout: A central hub with a top navigation bar, a persistent left sidebar for main modules, and
gemini Output

As a deliverable for Step 2 of 3, "Create Design Specs" for the "Hiring Pipeline Builder," this document outlines the detailed design specifications, wireframe descriptions for key screens, a proposed color palette, and comprehensive UX recommendations. This output will serve as the foundational blueprint for the development phase, ensuring a robust, intuitive, and professional tool.


Design Specifications: Hiring Pipeline Builder

The Hiring Pipeline Builder is designed as a comprehensive, modular platform to streamline the entire recruitment and onboarding process. It centralizes job definition, candidate assessment, offer management, and new hire integration.

1. Functional Requirements

1.1 Core Modules & Features

A. Job Description (JD) Creator

  • Template Library: Pre-built, customizable templates for various roles (e.g., engineering, marketing, sales).
  • Rich Text Editor: WYSIWYG editor for job title, department, responsibilities, qualifications, benefits, company culture sections.
  • Custom Fields: Ability to add unique fields specific to an organization or role.
  • Skill Tagging: Link job descriptions to a standardized skill taxonomy.
  • Collaboration: Real-time co-editing and commenting features for stakeholders (Hiring Manager, HR).
  • Version Control: Track changes and revert to previous versions of JDs.
  • Approval Workflow: Define and manage a multi-step approval process for JDs before publication.
  • Publishing Options: Publish directly to career pages, job boards (via integration).

B. Interview Question Bank (IQB)

  • Categorization: Organize questions by type (e.g., behavioral, technical, situational, problem-solving), skill, experience level.
  • Question Library: Centralized repository of interview questions.
  • Question Editor: Create, edit, and tag questions with expected answers or key points for evaluation.
  • Difficulty Levels: Assign difficulty (e.g., junior, mid, senior).
  • Interview Kit Builder: Assemble custom interview kits by selecting questions from the bank, linked to specific job roles and interview stages.
  • Sharing & Permissions: Control who can view, edit, or use specific questions/kits.

C. Scoring Rubric Builder (SRB)

  • Criteria Definition: Define specific evaluation criteria (e.g., problem-solving, communication, technical proficiency) for each job.
  • Weighting: Assign different weights to criteria based on their importance for the role.
  • Rating Scales: Customizable rating scales (e.g., 1-5, Poor-Excellent, Meets/Exceeds Expectations).
  • Behavioral Anchors: Provide descriptive examples for each rating level to ensure consistent evaluation.
  • Linkage: Directly link rubrics to specific JDs, interview stages, and individual questions.
  • Interviewer-Specific Views: Present a clear, concise rubric during interviews for easy scoring.

D. Offer Letter Generator (OLG)

  • Template Management: Create and manage multiple offer letter templates.
  • Dynamic Fields: Auto-populate candidate-specific data (name, salary, start date, title, manager) from the candidate profile.
  • Clause Library: Standard legal clauses (e.g., confidentiality, at-will employment) that can be easily inserted.
  • Conditional Logic: Include/exclude sections based on job type, location, or candidate seniority.
  • E-Signature Integration: Seamless integration with e-signature platforms (e.g., DocuSign, Adobe Sign).
  • Version History: Track all revisions and sent offers.
  • Offer Tracking: Monitor offer status (sent, viewed, accepted, declined).

E. Onboarding Checklist Manager (OCM)

  • Task Assignment: Assign tasks to new hires, hiring managers, IT, HR, or other departments.
  • Task Types: Support various task types (e.g., document upload, form completion, meeting scheduling, equipment setup).
  • Due Dates & Reminders: Set due dates for tasks and configure automated reminders.
  • Progress Tracking: Visual dashboard to track the completion status of all onboarding tasks for each new hire.
  • Document Management: Secure upload and download of onboarding documents (e.g., tax forms, policy documents).
  • Welcome Kit Builder: Curate a digital welcome kit with company resources, FAQs, and important links.
  • Automated Triggers: Initiate workflows (e.g., HRIS sync, IT account creation) upon offer acceptance or task completion.

F. Pipeline Management Dashboard (PMD)

  • Visual Pipeline: Kanban-style board representing recruitment stages (e.g., Applied, Screening, Interview, Offer, Hired).
  • Candidate Profiles: Centralized view for each candidate with application details, resume, interview feedback, communication history, offer status, and onboarding progress.
  • Drag-and-Drop Functionality: Easily move candidates between pipeline stages.
  • Status Updates: Quick update mechanisms for candidate status, notes, and next steps.
  • Communication Log: Track all emails, messages, and calls with candidates.
  • Reporting & Analytics: Generate reports on pipeline health, time-to-hire, source effectiveness, diversity metrics, and offer acceptance rates.
  • Search & Filter: Advanced search capabilities for candidates, jobs, and applications.

1.2 User Roles & Permissions

  • Admin: Full access to all features, settings, user management, and global templates.
  • Hiring Manager: Create/edit JDs, view candidate profiles for their jobs, participate in interviews, review feedback, approve offers.
  • Recruiter: Manage candidates across all stages, create JDs, schedule interviews, send offers, manage onboarding.
  • Interviewer: View assigned interview kits, provide feedback, score candidates based on rubrics.
  • HR: Oversee compliance, manage onboarding tasks, access global templates, generate reports.
  • New Hire (Limited Access): Access onboarding checklist, complete assigned tasks, upload documents.

1.3 Data Model (High-Level)

  • Job: Job ID, Title, Department, Description, Status, Hiring Manager, Associated Skills, JD Template.
  • Candidate: Candidate ID, Name, Contact Info, Resume, Application Date, Source, Current Status.
  • Application: Application ID, Candidate ID, Job ID, Current Stage, Stage History.
  • Interview: Interview ID, Application ID, Interviewer, Date/Time, Interview Kit ID, Feedback, Score.
  • Question: Question ID, Text, Type, Category, Difficulty, Expected Answer.
  • Rubric: Rubric ID, Job ID, Criteria, Weighting, Rating Scales, Behavioral Anchors.
  • Offer: Offer ID, Application ID, Offer Letter Template, Salary, Start Date, Status, Sent Date, Accepted Date.
  • Onboarding Task: Task ID, New Hire ID, Job ID, Assignee, Description, Due Date, Status, Document Links.
  • User: User ID, Role, Permissions.

2. Wireframe Descriptions (Key Screens)

2.1 Dashboard (Home Screen)

  • Layout: Two-column layout, left sidebar for navigation, main content area for widgets.
  • Widgets:

* "My Open Jobs" Card: List of jobs managed by the user, quick links to job details.

* "Pipeline Overview" Card: Kanban-style summary of candidates in each stage across all open jobs, with counts.

* "Upcoming Interviews" Card: List of scheduled interviews with candidate names, job titles, dates, and times.

* "Pending Approvals" Card: Notifications for JDs, offers, or feedback requiring user action.

* "Onboarding Progress" Card: Summary of new hires, their start dates, and overall onboarding task completion percentage.

  • Header: Global search bar, notifications icon, user profile menu.

2.2 Job Creation Workflow (Multi-Step Form)

  • Layout: Step-by-step progress indicator at the top (e.g., "1. Job Details > 2. Job Description > 3. Interview Kit > 4. Rubric > 5. Review").
  • Step 1: Job Details: Fields for Job Title, Department, Location, Employment Type, Hiring Manager.
  • Step 2: Job Description: Rich text editor, template selector, skill tags input, preview button.
  • Step 3: Interview Kit: Browse/search IQB, drag-and-drop questions into stages (e.g., Phone Screen, Technical, Behavioral), add custom questions.
  • Step 4: Scoring Rubric: Define criteria, assign weights, select rating scales, add behavioral anchors. Link to JD and interview questions.
  • Step 5: Review & Publish: Summary of all inputs, option to save as draft or publish.

2.3 Candidate Profile View

  • Layout: Left sidebar for quick navigation within the profile (e.g., Resume, Application History, Interviews, Offers, Onboarding), main content area displays selected section.
  • Header: Candidate's Name, Applied Job, Current Stage, Quick Actions (e.g., Move Stage, Send Email, Schedule Interview, Make Offer).
  • Sections:

* Overview: Contact info, source, application date, resume preview.

* Application History: Timeline of all applications, status changes.

* Interviews: List of past/upcoming interviews, links to feedback forms and scores.

* Feedback: Consolidated view of all interviewer feedback and rubric scores.

* Communication: Chronological log of all interactions (emails, notes, calls).

* Offer: Offer letter details, status, sent/accepted dates, e-signature link.

* Onboarding: List of assigned onboarding tasks, their status, due dates.

2.4 Interview Scheduling & Feedback Screen

  • Layout: Split screen or modal.
  • Left Panel (Scheduling): Calendar integration, available interviewer slots, candidate availability.
  • Right Panel (Feedback/Rubric):

* Interview Kit questions listed.

* Interactive rubric for each question/criterion, allowing selection of rating and free-form comments.

* Overall recommendation (e.g., "Hire," "No Hire," "Strong Hire").

* Space for general notes.

* Submit Feedback button.

2.5 Offer Management Screen

  • Layout: Dashboard-style for all offers, with a dedicated view for individual offer creation/editing.
  • Offer List View: Table showing candidate name, job, offer amount, status, sent date.
  • Offer Creation/Edit View:

* Template selector.

* Dynamic fields for candidate data, compensation details, start date.

* Clause library for legal text.

* Preview of the offer letter.

* Options to save draft, send for e-signature, or download PDF.

2.6 Onboarding Checklist (New Hire/Manager View)

  • Layout: Clear, actionable list format.
  • Header: New Hire's Name, Start Date, Overall Progress Bar.
  • Task List:

* Each task with a title, assignee, due date, and status (To Do, In Progress, Completed).

* Icons for task type (e.g., document upload, form, meeting).

* Clickable tasks to reveal details, upload forms, or mark as complete.

* Sections for "Pending My Action" and "Pending Others' Action."

3. Color Palette

The chosen color palette emphasizes professionalism, trust, and clarity, with sufficient contrast for accessibility.

  • Primary Brand Color (PantheraHive Blue): #0056B3 (A strong, trustworthy blue for primary buttons, active states, main headers)
  • Secondary Accent Color (Teal/Aqua): #00A896 (For secondary actions, progress indicators, highlights, and data visualization)
  • Neutral Palette:

* Background/Surface: #F8F9FA (Light gray for main backgrounds, cards)

* Text (Dark): #212529 (For primary text, headings)

* Text (Medium): #6C757D (For secondary text, descriptions, labels)

* Borders/Dividers: #DEE2E6 (Light gray for separators, borders)

  • Semantic Colors:

* Success: #28A745 (Green for successful actions, "Hired" status)

* Warning: #FFC107 (Yellow/Orange for pending actions, warnings)

* Error: #DC3545 (Red for errors, "Declined" status)

* Info: #17A2B8 (Light Blue for informational messages)

  • Call to Action (CTA) Buttons:

* Primary: #0056B3 (White text)

* Secondary: #6C757D (White text)

* Destructive: #DC3545 (White text)

4. UX Recommendations

4.1 General Principles

  • Consistency: Maintain a consistent UI across all modules, using a unified design system for components (buttons, forms, cards, typography).
  • Clarity & Simplicity: Use clear, concise language. Avoid jargon. Ensure intuitive navigation and logical information hierarchy.
  • Efficiency: Streamline workflows to minimize clicks and data entry. Provide default values where possible. Enable bulk actions.
  • Feedback & Responsiveness: Provide immediate visual feedback for user actions (e.g., loading indicators, success messages, error states). Ensure the interface is responsive across devices.
  • Accessibility: Adhere to WCAG 2.1 guidelines (AA level). Ensure sufficient color contrast, keyboard navigation support, clear focus states, and proper ARIA labels.

4.2 Specific UX Enhancements

  • Intuitive Navigation:

* Persistent global navigation (left sidebar or top bar) for quick access to main modules (Dashboard, Jobs, Candidates, Onboarding, Reports).

* Contextual navigation within specific modules (e.g., sub-tabs on a Candidate Profile).

* Breadcrumbs to show current location within complex workflows

gemini Output

Finalized Design Assets: Hiring Pipeline Builder

This document outlines the detailed design specifications, wireframe descriptions, color palettes, and user experience (UX) recommendations for the "Hiring Pipeline Builder." The goal is to create an intuitive, efficient, and visually appealing interface that empowers users to easily build, customize, and manage their hiring processes and associated assets.


1. Overview and Design Principles

The Hiring Pipeline Builder is designed to be a comprehensive tool for HR professionals and hiring managers. It centralizes the creation and management of job descriptions, interview question banks, scoring rubrics, offer letter templates, and onboarding checklists.

Core Design Principles:

  • Clarity & Simplicity: Ensure all functionalities are easy to understand and navigate, minimizing cognitive load.
  • Efficiency: Streamline workflows with intuitive tools, templates, and quick access to essential features.
  • Consistency: Maintain a unified visual language and interaction patterns across the entire application.
  • Flexibility: Allow for extensive customization while providing robust default options.
  • Feedback & Guidance: Provide clear feedback on user actions and offer contextual help.

2. Wireframe Descriptions

The following wireframes describe the key screens and modules within the Hiring Pipeline Builder, focusing on layout, content organization, and core interactions.

2.1. Pipeline Dashboard

Description: The central hub for viewing and managing all created hiring pipeline templates.

Layout:

  • Header: Global navigation (Dashboard, Settings, Help), User Profile, "Create New Pipeline" primary button.
  • Main Content Area:

* Search Bar & Filters: For pipeline name, status (Draft, Published), last modified date.

* Pipeline Cards/List: Each card represents a pipeline template and displays:

* Pipeline Name (e.g., "Software Engineer - Senior")

* Associated Job Title (if specified)

* Status (Draft, Published)

* Last Modified Date

* Quick Actions: "Edit," "Duplicate," "View Details," "Delete" (via a more options menu).

* Pagination/Infinite Scroll: For managing a large number of pipelines.

Key Interactions:

  • Clicking "Create New Pipeline" initiates a guided setup flow.
  • Clicking on a pipeline card or "Edit" button navigates to the Pipeline Configuration View.
  • Filtering and searching to quickly locate specific pipelines.

2.2. Pipeline Configuration View

Description: A multi-step or tabbed interface for defining the structure and assets of a specific hiring pipeline template.

Layout:

  • Header: Pipeline Name, "Save Draft," "Publish Pipeline," "Back to Dashboard" buttons.
  • Left Sidebar (or Top Tabs): Navigation for configuration steps/sections:

1. General Information: Pipeline Name, Description, Associated Job Title, Department.

2. Stages: Define and order the hiring stages (e.g., Application, Phone Screen, Technical Interview, Behavioral Interview, Offer, Onboarding).

3. Job Description: Link or create the job description for this pipeline.

4. Interview Kits: Manage question banks and scoring rubrics per stage.

5. Offer Letter: Select or create the offer letter template.

6. Onboarding Checklist: Manage the onboarding tasks.

  • Main Content Area: Displays the specific configuration section selected from the sidebar/tabs.

2.3. Job Description Editor

Description: Interface for creating and editing job descriptions associated with a pipeline.

Layout:

  • Header: "Job Description for [Pipeline Name]," "Preview," "Save Changes" buttons.
  • Content Editor:

* Rich Text Editor: Standard formatting tools (bold, italic, underline, lists, headings, links).

* Pre-defined Fields: Dedicated input fields for:

* Job Title

* Department

* Location (Remote, Hybrid, On-site)

* Employment Type (Full-time, Part-time, Contract)

* Salary Range (optional)

* Main Body Section: Large text area for Responsibilities, Requirements, Company Culture, Benefits.

* Merge Tag Picker: A dropdown or sidebar to insert dynamic tags (e.g., {{COMPANY_NAME}}, {{LOCATION}}) that will populate when a job is posted or an offer is generated.

Key Interactions:

  • Typing and formatting text.
  • Inserting merge tags for dynamic content.
  • Previewing the job description as it would appear to candidates.

2.4. Interview Kit Builder (Questions & Rubrics)

Description: Module for creating and associating interview questions and scoring rubrics with specific hiring stages.

Layout:

  • Header: "Interview Kits for [Pipeline Name]," "Add New Interview Round," "Save Changes."
  • Interview Round Sections: Collapsible sections for each defined interview stage (e.g., "Phone Screen," "Technical Interview - Round 1").

* Within each round:

* Questions List: Displays individual questions with type (Behavioral, Technical, Situational), difficulty, and estimated time.

* "Add Question" Button: Opens a modal/side panel for new question entry.

* Associated Rubric: Link to the scoring rubric for this round, with an "Edit Rubric" button.

  • Question Editor (Modal/Side Panel):

* Input field for the question text.

* Dropdown for Question Type.

* Text area for Suggested Answers/Key Points.

* Option to associate with a specific skill or competency.

* "Save Question" button.

  • Scoring Rubric Editor (Modal/Side Panel):

* Criteria List: Editable list of evaluation criteria (e.g., "Problem Solving," "Communication," "Technical Skills").

* Rating Levels: Customizable rating scales (e.g., "Needs Improvement," "Meets Expectations," "Exceeds Expectations").

* Description Fields: For each rating level per criterion.

* Weighting: Option to assign numerical weights to criteria.

* "Save Rubric" button.

Key Interactions:

  • Adding, editing, and reordering interview questions.
  • Creating and customizing scoring rubrics.
  • Associating specific rubrics with interview rounds.

2.5. Offer Letter Template Editor

Description: Interface for creating and managing offer letter templates.

Layout:

  • Header: "Offer Letter Templates for [Pipeline Name]," "Create New Template," "Save Changes."
  • Template Selector: Dropdown to choose an existing template or create a new one.
  • Rich Text Editor: Similar to Job Description Editor, but with merge fields specific to offer letters:

* {{CANDIDATE_NAME}}

* {{JOB_TITLE}}

* {{SALARY}}

* {{START_DATE}}

* {{BONUS}}

* {{EQUITY}}

* {{REPORTING_MANAGER}}

  • Preview Button: To see how the offer letter will look with sample data.

Key Interactions:

  • Writing and formatting offer letter content.
  • Inserting dynamic merge fields.
  • Previewing the final offer letter.

2.6. Onboarding Checklist Manager

Description: Module for defining and managing tasks for candidate onboarding.

Layout:

  • Header: "Onboarding Checklist for [Pipeline Name]," "Add New Task," "Save Changes."
  • Task List:

* Table/List View: Each row represents an onboarding task.

* Columns: Task Name, Assignee (e.g., HR, IT, Manager), Due Date (relative to start date, e.g., "Day 1," "Week 1"), Status (checkbox for completion).

* Drag-and-Drop: For reordering tasks.

  • Task Editor (Modal/Side Panel):

* Input field for Task Name.

* Dropdown for Assignee.

* Date picker for Due Date (relative or absolute).

* Text area for Notes/Instructions.

* Option to mark as Critical.

* "Save Task" button.

  • "Load from Template" Button: Allows importing pre-defined task sets.

Key Interactions:

  • Adding, editing, deleting, and reordering onboarding tasks.
  • Assigning tasks to specific roles or individuals.
  • Setting relative or absolute due dates.

3. Detailed Design Specifications

3.1. Typography

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

* Headings (H1-H4): Bold or Semi-bold, progressively larger sizes.

* H1 (Page Title): 28px - 36px, Inter Bold

* H2 (Section Title): 22px - 26px, Inter Semi-bold

* H3 (Subsection Title): 18px - 20px, Inter Semi-bold

* H4 (Card Title/Label): 16px - 18px, Inter Medium

* Body Text: 14px - 16px, Inter Regular

* Labels & Small Text: 12px - 14px, Inter Regular or Medium

  • Secondary Font (Optional, for emphasis/data): Source Code Pro (or similar monospace) for code snippets or specific data fields.
  • Line Height: 1.5 - 1.6 for body text for readability.
  • Text Colors:

* #212529 (Dark Gray) for primary text

* #495057 (Medium Gray) for secondary text/labels

* #868E96 (Light Gray) for tertiary text/placeholders

3.2. Iconography

  • Style: Line-based, consistent stroke weight, rounded corners.
  • Library: Utilize a well-known icon library (e.g., Feather Icons, Font Awesome Pro, Material Icons) for consistency and scalability.
  • Common Icons:

* Add/Plus: +

* Edit/Pencil: ✎

* Delete/Trash: `🗑

hiring_pipeline_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);}});}