Commission Pricing Calculator
Run ID: 69c94f26a17964d77e86d8a32026-03-29Business
PantheraHive BOS
BOS Dashboard

Build a dynamic commission and pricing structure with tier breakdowns and revenue projections.

As part of the "Commission Pricing Calculator" workflow, we have completed the initial generation phase, defining the core components, logic, and structure for your dynamic commission and pricing system. This document outlines the comprehensive design, ensuring the calculator will meet your needs for tiered commission breakdowns and robust revenue projections.


Commission Pricing Calculator: Design & Specification

This deliverable details the generated framework for your dynamic Commission Pricing Calculator. It specifies the calculator's core functionality, required inputs, output capabilities, and the underlying logic for managing tiered commissions and revenue projections.

1. Calculator Core Functionality

The primary objective of this calculator is to provide a flexible and transparent tool for:

  • Defining and managing tiered commission structures based on various performance metrics (e.g., revenue, gross profit).
  • Calculating commissions earned for individual sales, periods, or personnel.
  • Analyzing the impact of pricing strategies on profitability and commission payouts.
  • Generating dynamic revenue and profit projections under different sales scenarios.
  • Facilitating "what-if" analysis to optimize sales targets and commission plans.

2. Key Input Parameters

The calculator will require the following user-defined inputs to perform its calculations:

  • Product/Service Details:

* Product/Service Name: Identifier for the item being sold.

* Base Selling Price (per unit): The standard list price before any discounts.

* Cost of Goods Sold (COGS) / Service Cost (per unit): The direct cost associated with delivering the product/service.

* Discount Rate (%) or Discount Amount (per unit): Any reduction applied to the base selling price.

* Units Sold: The quantity of the product/service sold.

  • Commission Structure Definitions:

* Commission Basis: The metric upon which commission is calculated (e.g., Gross Revenue, Net Revenue, Gross Profit, Net Profit).

* Tier Thresholds: The specific performance levels that define each commission tier.

* Commission Rates (%): The percentage applied to the applicable portion of sales within each tier.

* Commission Payout Frequency: (Informational) How often commissions are typically paid out (e.g., monthly, quarterly).

  • Scenario Planning Inputs (for Projections):

* Projected Units Sold (per period): Estimated sales volume for future periods.

* Projected Price Adjustments (%): Anticipated changes to selling prices.

* Projected Cost Adjustments (%): Anticipated changes to COGS.

* Time Horizon: The duration for which projections are to be made (e.g., 3 months, 1 year).

3. Commission Structure Definition

The calculator will support a highly flexible, progressive tiered commission system. This means that as sales performance crosses a new threshold, only the portion of sales above that threshold is subject to the higher commission rate.

Example Tier Structure (based on Net Revenue):

| Tier | Net Revenue Range | Commission Rate (%) |

| :--- | :------------------------------- | :------------------ |

| 1 | \$0 - \$10,000 | 5% |

| 2 | \$10,001 - \$25,000 | 8% |

| 3 | \$25,001 - \$50,000 | 12% |

| 4 | \$50,001 - \$100,000 | 15% |

| 5 | Above \$100,000 | 20% |

Calculation Logic (Progressive Tiers):

For a total Net Revenue of \$60,000:

  • Tier 1: \$10,000 \* 5% = \$500
  • Tier 2: (\$25,000 - \$10,000) \ 8% = \$15,000 \ 8% = \$1,200
  • Tier 3: (\$50,000 - \$25,000) \ 12% = \$25,000 \ 12% = \$3,000
  • Tier 4: (\$60,000 - \$50,000) \ 15% = \$10,000 \ 15% = \$1,500
  • Total Commission: \$500 + \$1,200 + \$3,000 + \$1,500 = \$6,200

The calculator will allow users to define an arbitrary number of tiers and adjust thresholds and rates as needed.

4. Pricing Structure Definition & Impact

The pricing structure directly influences the base for commission calculation and overall profitability.

  • Gross Revenue: Units Sold * Base Selling Price
  • Net Selling Price (per unit): Base Selling Price - (Base Selling Price * Discount Rate) or Base Selling Price - Discount Amount
  • Net Revenue: Units Sold * Net Selling Price (per unit)
  • Gross Profit (per unit): Net Selling Price (per unit) - COGS / Service Cost (per unit)
  • Total Gross Profit: Units Sold * Gross Profit (per unit)

The chosen Commission Basis (e.g., Net Revenue, Gross Profit) will determine which of these calculated values is used to apply the tiered commission rates.

5. Output & Reporting Capabilities

The calculator will generate clear, actionable outputs, including:

  • Detailed Sales Breakdown (per transaction/product):

* Units Sold, Base Price, Discount, Net Selling Price.

* COGS, Gross Profit per unit.

* Total Gross Revenue, Total Net Revenue, Total Gross Profit.

  • Commission Calculation Summary:

* Total Commission Earned.

* Breakdown of commission earned per tier.

* Effective Commission Rate (Total Commission / Total Commission Basis).

  • Profitability Analysis:

* Net Profit (Total Gross Profit - Total Commission).

* Profit Margin (Net Profit / Total Net Revenue).

  • Revenue & Commission Projections:

* Projected Total Net Revenue over specified time horizon.

* Projected Total Commission Payouts.

* Projected Net Profit.

* Visualizations (e.g., line charts for trends, bar charts for comparisons).

  • Scenario Comparison:

* Ability to compare outputs from multiple "what-if" scenarios side-by-side.

6. Dynamic Scenarios & Projections

A key feature will be the ability to model different scenarios:

  • Sales Volume Fluctuations: How does changing Units Sold impact commissions and profit?
  • Pricing Adjustments: What if Base Selling Price or Discount Rates change?
  • Cost Changes: How do variations in COGS affect gross profit and commission eligibility (if based on profit)?
  • Commission Plan Modifications: Test new tier thresholds or rates before implementation.

These dynamic capabilities will allow for strategic planning and optimization of both sales incentives and overall business profitability.

7. Underlying Logic & Assumptions

  • Currency: All monetary values will be assumed to be in a single, consistent currency (e.g., USD) unless specified otherwise.
  • Time Period: Calculations will be based on a user-defined period (e.g., single transaction, monthly, quarterly, annually).
  • Rounding: Standard financial rounding (two decimal places) will be applied to all monetary calculations.
  • Priority of Calculations: Discounts are applied before commission calculation. Progressive commission logic is strictly adhered to.

8. Next Steps: Step 2 of 2

The next phase, "Step 2: Build & Implement", will involve the actual development and implementation of this calculator based on the detailed design outlined above. This will include:

  1. User Interface (UI) Development: Creating an intuitive and user-friendly interface for inputting parameters and viewing results.
  2. Backend Logic Implementation: Coding the commission calculation engine, data processing, and projection algorithms.
  3. Data Persistence (Optional): If required, integrating with a database to store commission plans, sales data, and historical projections.
  4. Reporting & Visualization Integration: Developing the interactive reports and charts described in Section 5.
  5. Testing & Validation: Thoroughly testing the calculator with various scenarios to ensure accuracy and reliability.
  6. Deployment: Making the calculator accessible for use.

We are confident that this robust design provides a solid foundation for a powerful and flexible Commission Pricing Calculator that will significantly enhance your sales planning and compensation management.

gemini Output

Commission Pricing Calculator: Dynamic Structure & Revenue Projections

This document outlines a comprehensive and dynamic framework for your commission and pricing structure, designed to incentivize sales performance, ensure profitability, and provide clear revenue projections. This structure incorporates tier breakdowns, allowing for scalable and performance-driven compensation.


1. Executive Summary

This deliverable provides a detailed blueprint for establishing a flexible and motivating commission system integrated with your pricing strategy. It defines core commission parameters, proposes tiered performance incentives, outlines how pricing decisions impact earnings, and details methodologies for robust revenue forecasting. The goal is to equip your organization with a transparent, actionable model that drives sales growth and optimizes financial outcomes.


2. Core Commission Structure Definition

The foundation of your commission system starts with clear definitions of what is commissionable and under what terms.

  • Commissionable Revenue:

* Definition: Commission will be calculated on Net Revenue (Gross Sales minus any discounts, returns, or refunds).

* Exclusions: Taxes, shipping fees, setup fees (if non-recurring and not directly tied to core product/service value).

* Inclusions: Recurring subscription fees, one-time product/service sales, upsells, and cross-sells.

  • Base Commission Rate (Starting Point):

* A default percentage applied to Net Revenue for sales that do not yet qualify for higher tiers or specific product incentives.

* Proposed Initial Rate: 10% of Net Revenue. (This is a placeholder and should be adjusted based on your specific margins and industry benchmarks.)

  • Payment Frequency & Triggers:

* Frequency: Commissions will be calculated monthly and paid out 30 days after the close of the sales month.

* Trigger: Commission is earned and payable upon receipt of payment from the customer. For subscription services, it's earned upon successful processing of the recurring charge.


3. Tiered Commission Breakdowns (Performance-Based Incentives)

To maximize sales performance and reward top performers, a tiered commission structure is highly recommended. This model applies escalating commission rates as sales representatives (or teams) achieve higher revenue thresholds within a defined period (e.g., monthly or quarterly).

Proposed Tier Structure (Monthly Basis Example):

| Tier Name | Monthly Net Revenue Threshold | Commission Rate (on revenue within tier) | Cumulative Earning Example (for $50k target) | Notes |

| :-------------- | :---------------------------- | :----------------------------------------- | :------------------------------------------- | :---------------------------------------------------------------------- |

| Tier 1: Base | \$0 - \$20,000 | 10% | \$2,000 (10% of \$20,000) | Standard rate for initial sales. |

| Tier 2: Growth | \$20,001 - \$40,000 | 12% | \$2,000 (T1) + \$2,400 (12% of \$20k) = \$4,400 | Incentivizes reaching mid-level targets. |

| Tier 3: Accelerate | \$40,001 - \$60,000 | 15% | \$4,400 (T1+T2) + \$3,000 (15% of \$20k) = \$7,400 | Strong incentive for high performance. |

| Tier 4: Elite | \$60,001+ | 18% | \$7,400 (T1-T3) + 18% of revenue above \$60k | Rewards top performers significantly for exceeding expectations. |

Explanation of Tiered Model:

  • Marginal/Incremental Commission: The higher commission rate applies only to the revenue earned within that specific tier's threshold. This avoids sudden jumps in commission cost and provides consistent motivation.
  • Example Calculation: If a sales rep generates \$55,000 in Net Revenue in a month:

* \$20,000 (Tier 1) @ 10% = \$2,000

* \$20,000 (Tier 2) @ 12% = \$2,400

* \$15,000 (Tier 3) @ 15% = \$2,250

* Total Commission = \$6,650

Additional Tiering Considerations:

  • Product-Specific Incentives: Offer higher commission rates for strategic products/services (e.g., new product launches, high-margin items).
  • New Customer Acquisition Bonus: A one-time bonus or higher commission percentage for bringing in new clients.
  • Retention/Renewal Commission: A smaller percentage for successful renewals of subscription services, incentivizing long-term customer value.

4. Pricing Structure & Its Impact on Commission

Your product and service pricing strategy directly influences both revenue generation and commission costs.

  • Standard Pricing Catalog:

* Maintain a clear, accessible catalog of all products and services with their standard pricing. This ensures consistency and transparency for both sales and customers.

* Example Categories:

* Product A (Software License): \$1,000 one-time fee

* Product B (Subscription Service - Basic): \$100/month

* Product C (Subscription Service - Premium): \$300/month

* Service D (Implementation/Consulting): \$500/day

  • Discounting Policy & Commission:

* Principle: Commission will always be calculated on the Net Revenue after any discounts have been applied.

* Discount Tiers: Establish clear guidelines for sales representatives on permissible discount levels.

* Standard Discount (up to 10%): No impact on commission rate.

* Approved Discount (11-20%): Requires managerial approval. Commission rate might be adjusted downwards by a small percentage (e.g., 1-2 points) if the discount significantly impacts margin.

* Exceptional Discount (over 20%): Requires executive approval. Commission may be calculated on a reduced basis or at a lower rate to protect profitability.

* Rationale: This encourages reps to sell at full price and only offer discounts when necessary, while still allowing flexibility for closing deals.

  • Subscription vs. One-Time Sales Commission:

* One-Time Sales: Commission paid on the full Net Revenue of the sale upon customer payment.

* Subscription Sales: Commission paid on the initial contract value or a percentage of the Annual Recurring Revenue (ARR) / Monthly Recurring Revenue (MRR) for the first X months.

* Proposed for Subscriptions: Commission on 100% of the first 3 months' MRR upon initial payment, then standard recurring commission on renewals (if applicable). This incentivizes new sign-ups.


5. Revenue Projections Methodology

Accurate revenue projections are crucial for business planning. This section outlines how to project revenue based on your sales activities and commission structure.

Key Variables for Projection:

  • Number of Sales Representatives: N
  • Average Sales Cycle Length: S days/weeks
  • Average Deal Size (ADS): $
  • Conversion Rate (CR): From lead to closed-won (%)
  • Number of Qualified Leads (QL): Per rep per month
  • Targeted Sales Per Rep: T deals/month
  • Average Monthly Churn Rate (for subscriptions): C %

Projection Methodology - Bottom-Up Approach (Recommended):

  1. Individual Rep Target Setting:

* Each rep is assigned a monthly revenue target, e.g., \$40,000 Net Revenue.

* Based on ADS, determine the number of deals needed: Target Revenue / ADS.

* Based on CR, determine the number of QLs needed: (Deals Needed / CR).

  1. Aggregate Sales Projections:

Total Monthly Target Revenue: Number of Reps Individual Rep Target Revenue.

Total Expected Deals: Number of Reps Deals Needed per Rep.

Total Expected QLs: Number of Reps QLs Needed per Rep.

  1. Tier Impact on Projections:

* For the total projected revenue, apply the tiered commission rates to estimate total commission cost.

Projected Total Commission = (Revenue in Tier 1 Rate 1) + (Revenue in Tier 2 * Rate 2) + ...

* This allows you to project the "cost of sales" accurately.

  1. Scenario Planning:

* Best Case: Assume higher conversion rates, larger average deal sizes, or reps consistently hitting higher tiers.

* Worst Case: Assume lower conversion rates, smaller average deal sizes, or challenges in reaching targets.

* Most Likely Case: Use historical averages and current pipeline data.

Example Revenue Projection (Monthly):

  • Assumptions:

* 5 Sales Representatives

* Average Deal Size (ADS): \$5,000

* Conversion Rate (CR): 20%

* Average Qualified Leads per Rep: 50/month

* Commission Structure: As defined in Section 3.

  • Calculations:

1. Expected Deals per Rep: 50 QLs * 20% CR = 10 Deals/Rep

2. Expected Revenue per Rep: 10 Deals * $5,000 ADS = $50,000/Rep

3. Total Projected Revenue: 5 Reps * $50,000/Rep = $250,000

  • Projected Total Commission Cost for $250,000 Revenue:

* Each rep earns \$6,650 (as per the example for \$55k, assuming they hit similar performance).

For 5 reps, total commission will be approximately 5 $6,650 = $33,250.

(Note: This is a simplified example. A full projection would apply the tiered rates to the cumulative revenue for all reps combined or individual rep performance aggregated.)*


6. Dynamic Calculator Elements (Inputs & Outputs)

To make this structure truly dynamic and actionable, a calculator (e.g., spreadsheet-based or integrated into a CRM) is essential.

Required Inputs for the Calculator:

  • Sales Representative Data: Name, ID.
  • Sales Transaction Data:

* Date of Sale

* Customer Name

* Product/Service Sold (ID, quantity)

* Gross Price

* Discount Applied (%)

Net Revenue (Gross Price (1 - Discount%))

* Payment Status (Paid/Pending)

* Sale Type (One-time, Subscription - new, renewal)

  • Commission Structure Parameters:

* Tier Thresholds (e.g., \$20k, \$40k, \$60k)

* Commission Rates per Tier (e.g., 10%, 12%, 15%, 18%)

* Product-specific rates (if applicable)

* New customer bonus parameters (if applicable)

  • Time Period: Month, Quarter, Year.

Calculated Outputs from the Calculator:

  • Per-Sale Commission: Commission earned on an individual transaction.
  • Total Monthly/Quarterly Commission per Rep: Sum of all commissions for the period.
  • Total Revenue Generated per Rep: Sum of Net Revenue.
  • Commission as % of Net Revenue: For analysis (Total Commission / Total Net Revenue).
  • Projected Earnings: Based on current performance and potential to hit higher tiers.
  • Overall Company Revenue & Commission Costs: Aggregated data across all reps.
  • Gross Profit Contribution: If product costs are also input, the calculator can show profit per sale and overall.
  • Scenario Analysis: Ability to adjust inputs (e.g., "What if I close 2 more deals?") to see the impact on commission and revenue.

7. Implementation Considerations

To successfully deploy this commission and pricing structure, consider the following:

  • Tooling:

* Initial Phase: A robust Google Sheet or Excel workbook can serve as a powerful dynamic calculator.

* Scaling Phase: Consider integrating with your CRM (e.g., Salesforce, HubSpot) or dedicated Sales Performance Management (SPM) software for automation, accuracy, and reporting.

  • Communication & Training:

* Conduct thorough training sessions

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