Event Planning Toolkit
Run ID: 69cb22b461b1021a29a864232026-03-31Business
PantheraHive BOS
BOS Dashboard

Complete event planning package with timeline, vendor checklist, budget tracker, marketing plan, run-of-show document, and post-event survey.

Marketing Strategy: Event Planning Toolkit

This document outlines a comprehensive marketing strategy for the "Event Planning Toolkit," designed to maximize its reach, engagement, and adoption among its target audiences.


1. Target Audience Analysis

Understanding who benefits most from the Event Planning Toolkit is crucial for effective marketing. We identify both primary and secondary audiences with specific pain points and needs.

1.1. Primary Audiences:

  • Small to Medium-sized Businesses (SMBs):

* Pain Points: Lack dedicated event planning staff, struggle with internal event organization (e.g., corporate meetings, product launches, holiday parties), budget constraints, need for professional execution without the overhead.

* Needs: Efficient, standardized, easy-to-use tools that save time and ensure professional outcomes.

* Psychographics: Value efficiency, professionalism, cost-effectiveness, stress reduction.

  • Non-profit Organizations:

* Pain Points: Heavily reliant on volunteers, limited budgets, frequent need for fundraising events, galas, and awareness campaigns, often lack robust internal processes.

* Needs: Budget-friendly, comprehensive tools that simplify complex event logistics, empower volunteers, and ensure compliance.

* Psychographics: Value impact, community engagement, resource optimization, reliability.

  • Freelance/Independent Event Planners:

* Pain Points: Managing multiple clients and diverse event types, maintaining consistency across projects, needing professional templates to present to clients, scaling their business efficiently.

* Needs: Standardized, customizable, professional-grade tools that enhance their service offering, streamline operations, and save time.

* Psychographics: Value professionalism, client satisfaction, efficiency, scalability, brand reputation.

1.2. Secondary Audiences:

  • Marketing Departments: For product launches, promotional events, brand activations.
  • HR Departments: For internal company events, team-building activities, employee recognition.
  • Educational Institutions: For conferences, student events, alumni gatherings.
  • Individuals Planning Large Personal Events: (e.g., weddings, milestone birthdays) – though the toolkit's professional nature might lean more towards business use, this segment could be a niche target with specific messaging.

2. Channel Recommendations

A multi-channel approach will ensure broad reach and targeted engagement with the identified audiences.

2.1. Digital Marketing:

  • Content Marketing:

* Blog Posts: "5 Steps to a Flawless Corporate Event," "Budgeting for Your Non-Profit Gala: A Comprehensive Guide," "Top 10 Event Planning Mistakes (and How to Avoid Them)."

* Lead Magnets: Offer free, valuable components of the toolkit (e.g., "Event Checklist Template," "Basic Event Budget Spreadsheet") in exchange for email addresses.

* Case Studies: Highlight how specific organizations successfully used the toolkit to achieve their event goals.

  • Search Engine Optimization (SEO):

* Keyword Targeting: Optimize website and content for terms like "event planning toolkit," "corporate event checklist," "non-profit event budget tracker," "event run-of-show template," "event vendor management."

* Local SEO: For freelance planners and local businesses, target "event planning tools [city]."

  • Social Media Marketing:

* LinkedIn: Ideal for targeting SMBs, non-profits, marketing/HR professionals, and independent event planners. Share professional tips, toolkit benefits, testimonials, and industry insights.

* Facebook/Instagram: Target small business owners, non-profit administrators, and potentially individuals planning large events. Use visual content (infographics, short demo videos), polls, and Q&As.

* Pinterest: Visual platform for event inspiration, linking toolkit components to specific event types (e.g., "Wedding Planning Timeline," "Conference Checklist").

  • Paid Advertising (PPC & Social Ads):

* Google Ads: Target high-intent keywords (e.g., "buy event planning kit," "event management templates").

* LinkedIn Ads: Precisely target job titles (e.g., "Event Manager," "Marketing Director," "Operations Manager"), company size, and industry.

* Facebook/Instagram Ads: Create lookalike audiences from existing leads, target interest groups (e.g., "small business owner," "non-profit management," "event planning courses").

  • Email Marketing:

* Nurture Sequences: For leads generated through lead magnets, provide additional value, demonstrate toolkit features, and offer a clear path to purchase.

* Newsletters: Share event planning tips, toolkit updates, success stories, and special promotions.

2.2. Partnerships & Affiliates:

  • Event Industry Associations: Collaborate on webinars, co-create content, or offer exclusive discounts to their members (e.g., MPI, ILEA, PCMA).
  • Complementary Service Providers: Partner with venue booking platforms, catering companies, AV rental services, event registration software providers, or graphic designers for cross-promotion.
  • Industry Influencers/Thought Leaders: Engage event planning experts, business coaches, or non-profit consultants for reviews, endorsements, or guest content.

2.3. Public Relations (PR):

  • Industry Publications: Pitch articles or case studies to event planning magazines, business journals, and non-profit sector publications.
  • Local Business News: Highlight how the toolkit empowers local SMBs and non-profits.

2.4. Webinars & Workshops:

  • Host free educational webinars demonstrating how to use the toolkit to solve common event planning challenges (e.g., "Mastering Your Event Budget with Our Toolkit").
  • Offer premium workshops for a deeper dive into specific toolkit components.

3. Messaging Framework

The messaging will be tailored to resonate with the pain points and aspirations of each target audience, emphasizing the toolkit's core value proposition.

3.1. Core Value Proposition:

"Your complete solution for stress-free, professionally executed events, every time."

3.2. Key Messaging Themes (Benefits & Pain Points Addressed):

  • Efficiency & Time-Saving: "Streamline your planning process with ready-to-use, comprehensive templates. Cut planning time by X%."

Target:* All audiences, especially SMBs and freelance planners.

  • Organization & Control: "Stay on top of every detail with integrated timelines, vendor checklists, and run-of-show documents. Never miss a deadline or a detail again."

Target:* All audiences, addressing overwhelm and disorganization.

  • Budget Management & Cost Control: "Avoid overspending and ensure financial transparency with our detailed budget tracker. Maximize your resources without compromising quality."

Target:* SMBs, Non-profits, addressing budget concerns.

  • Professionalism & Impact: "Impress stakeholders and attendees with meticulously planned and flawlessly executed events. Elevate your brand's reputation."

Target:* SMBs, Freelance Planners, Non-profits seeking credibility.

  • Reduced Stress & Confidence: "Transform overwhelming event tasks into manageable, structured steps. Plan with confidence, knowing every aspect is covered."

Target:* All audiences, addressing the emotional burden of event planning.

  • Consistency & Quality: "Ensure a high standard for all your events, regardless of size or complexity, with standardized, proven processes."

Target:* Freelance Planners, SMBs with recurring events.

3.3. Tone of Voice:

Professional, empowering, helpful, organized, confident, solution-oriented.

3.4. Calls to Action (CTAs):

  • "Download Your Toolkit Now"
  • "Get Started with Seamless Event Planning"
  • "Eliminate Event Planning Stress – Try Our Toolkit"
  • "Learn More About the Complete Event Solution"
  • "Request a Demo" (if a more interactive version exists)
  • "Get Your Free Event Checklist" (for lead magnets)

4. Key Performance Indicators (KPIs)

Measuring the effectiveness of the marketing strategy is essential for continuous improvement.

4.1. Awareness KPIs:

  • Website Traffic: Unique visitors, page views on toolkit product pages.
  • Social Media Reach & Impressions: Number of unique users and total views of content.
  • Brand Mentions: Mentions across social media, forums, and news.
  • SEO Rankings: Position in search results for target keywords.

4.2. Engagement KPIs:

  • Content Downloads: Number of lead magnet downloads (e.g., free checklists, templates).
  • Social Media Engagement Rate: Likes, comments, shares, and saves per post.
  • Email Open Rates & Click-Through Rates (CTR): For marketing emails.
  • Time on Page: Average time spent on toolkit feature pages or blog posts.
  • Webinar Registrations & Attendance Rates: For educational content.

4.3. Conversion KPIs:

  • Toolkit Sales/Downloads: Number of purchases or completed downloads (if gated).
  • Lead Generation: Number of form submissions for inquiries, demos, or contact requests.
  • Conversion Rate: Percentage of website visitors who become customers/leads.
  • Customer Acquisition Cost (CAC): Total marketing spend divided by new customers.

4.4. Customer Satisfaction & Retention KPIs (Post-Launch):

  • User Reviews & Testimonials: Volume and sentiment of feedback.
  • Referral Rate: Number of new customers acquired through referrals.
  • Repeat Purchases/Usage: If applicable for subscription models or future toolkit versions.

gemini Output

Here is the comprehensive, detailed, and professional Event Planning Toolkit, designed to provide a structured approach to managing any event from conception to post-event analysis.


Event Planning Toolkit

Prepared For: [Client/Organization Name]

Date: October 26, 2023

Version: 1.0

Table of Contents

  1. Introduction
  2. Event Planning Timeline
  3. Vendor Management Checklist
  4. Event Budget Tracker
  5. Event Marketing Plan Template
  6. Run-of-Show Document Template
  7. Post-Event Survey Template

1. Introduction

This Event Planning Toolkit provides a complete set of templates and guidelines to ensure the successful execution of your event. From initial conceptualization to post-event evaluation, these resources are designed to streamline your planning process, enhance collaboration, and help you achieve your event objectives.

Each section is designed to be highly customizable to fit the specific needs and scale of your event. Utilize these tools to maintain organization, track progress, manage finances, and effectively communicate with all stakeholders.


2. Event Planning Timeline

This timeline outlines key tasks and milestones across different phases of event planning. Adjust dates and tasks based on your specific event's complexity and lead time.

Phase 1: Conceptualization & Strategy (6-12+ Months Out)

  • Define Event Objectives & Goals:

* What do you want to achieve? (e.g., lead generation, brand awareness, education, fundraising, celebration)

* Set SMART goals (Specific, Measurable, Achievable, Relevant, Time-bound).

  • Determine Target Audience:

* Who are you trying to reach? Demographics, interests, needs.

  • Establish Event Concept & Theme:

* Brainstorm unique ideas, branding elements.

  • Set Initial Budget Parameters:

* Estimate revenue and expense categories.

  • Form Event Planning Committee/Team:

* Assign roles and responsibilities.

  • Preliminary Date & Venue Search:

* Research potential dates, check for conflicts, identify venue requirements.

  • Secure Key Stakeholder Approval:

* Present initial concept, budget, and timeline.

Phase 2: Detailed Planning & Vendor Engagement (3-6 Months Out)

  • Finalize Event Date & Venue:

* Sign contracts, confirm deposits.

  • Develop Detailed Budget:

* Allocate funds to specific categories (see Section 4).

  • Identify & Secure Key Vendors:

* Catering, A/V, Entertainment, Photography/Videography, Rentals (see Section 3).

* Request proposals, negotiate contracts, confirm deposits.

  • Draft Event Program/Agenda:

* Outline sessions, speakers, breaks, entertainment.

  • Speaker/Performer Outreach & Confirmation:

* Identify, invite, and confirm participation.

  • Develop Marketing & Communication Plan:

* Strategy, channels, key messages, launch dates (see Section 5).

  • Create Event Website/Registration Page:

* Set up ticketing, payment processing, information hub.

  • Secure Event Insurance:

* Ensure adequate coverage.

  • Begin Sponsorship/Partnership Outreach (if applicable):

* Develop packages, identify targets.

Phase 3: Pre-Event Execution & Promotion (1-3 Months Out)

  • Launch Event Marketing Campaign:

* Email marketing, social media, press releases, paid ads.

  • Open Event Registration/Ticket Sales:

* Monitor progress, adjust marketing as needed.

  • Finalize Speaker/Performer Logistics:

* Travel, accommodation, technical requirements, content submission.

  • Confirm all Vendor Deliverables & Logistics:

* Review contracts, confirm setup/teardown times, final payments.

  • Design & Order Event Materials:

* Signage, badges, programs, promotional items.

  • Recruit & Train Event Staff/Volunteers:

* Assign roles, provide training materials.

  • Develop Detailed Run-of-Show:

* Minute-by-minute schedule (see Section 6).

  • Arrange Transportation & Accommodation (if applicable):

* For VIPs, speakers, out-of-town guests.

  • Conduct Site Visits & Technical Rehearsals:

* Walk-through with key staff and vendors.

Phase 4: Event Week & Day (1 Week - Event Day)

  • Final Vendor Confirmations:

* Confirm arrival times, final details.

  • Distribute Run-of-Show to All Staff/Vendors:

* Ensure everyone has the latest version.

  • Prepare Registration Area:

* Badges, check-in system, information desk.

  • Pre-Event Briefing for Staff/Volunteers:

* Review roles, responsibilities, emergency procedures.

  • Oversee Venue Setup & Decor:

* Ensure everything is in place according to plan.

  • Manage Event Day Logistics:

* Registration, speaker transitions, A/V, catering, guest flow, troubleshooting.

  • On-Site Decision Making & Problem Solving:

* Be prepared for unexpected issues.

  • Conduct Regular Check-ins with Team Leads.

Phase 5: Post-Event Follow-up (1 Day - 2 Weeks After)

  • Oversee Venue Teardown & Cleanup:

* Ensure all items are removed, venue left as agreed.

  • Process Final Vendor Payments:

* Reconcile invoices.

  • Send Thank You Notes:

* To speakers, sponsors, volunteers, key staff, attendees.

  • Distribute Post-Event Survey:

* Gather feedback from attendees (see Section 7).

  • Collect & Organize Event Data:

* Attendance numbers, social media engagement, survey results.

  • Conduct Post-Event Debrief Meeting:

* Review successes, challenges, lessons learned with the team.

  • Final Budget Reconciliation:

* Compare actuals to budgeted amounts.

  • Prepare Post-Event Report:

* Summarize outcomes, ROI, recommendations for future events.


3. Vendor Management Checklist

This checklist helps you track engagement with all necessary vendors.

| Vendor Category | Vendor Name | Contact Person | Contact Info (Email/Phone) | Service/Deliverables | Contract Status (Sent/Signed) | Deposit Due Date | Deposit Paid Date | Final Payment Due Date | Final Payment Paid Date | Notes/Special Requirements

gemini Output

Event Planning Toolkit: Comprehensive Guide & Templates

This comprehensive Event Planning Toolkit provides a structured framework and actionable templates to ensure the successful planning, execution, and review of any event. Designed for clarity and ease of use, this package will guide you through every critical stage, from initial concept to post-event analysis.


1. Event Planning Timeline Template

Purpose: To provide a high-level overview of all tasks and deadlines, ensuring nothing is overlooked and the event progresses smoothly through various planning phases.

Key Elements:

| Phase | Weeks/Months Out | Key Tasks Definition: A detailed list of all vendors required for the event, along with their contact details, contractual status, and payment information. This ensures all necessary services are secured and managed effectively.

Key Elements:

| Vendor Category | Specific Vendor Name | Contact Person | Contact Email | Contact Phone | Quote Received (Y/N) | Contract Sent (Y/N) | Contract Signed (Y/N) | Deposit Paid (Y/N) | Final Payment Due Date | Notes |

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

| Venue | Grand Hall Estates | Sarah Chen | sarah@gh.com | 555-123-4567 | Y | Y | Y | Y | 2024-08-15 | Includes tables, chairs, basic linens. |

| Catering | Culinary Delights | David Lee | david@cd.com | 555-987-6543 | Y | Y | Y | Y | 2024-08-10 | Confirmed menu for 150 guests. |

| AV & Lighting | Bright Sound Solutions | Emily White | emily@bss.com | 555-111-2222 | Y | Y | N | N | 2024-08-20 | Waiting on final contract adjustments. |

| Photography | Capture Moments | Alex Green | alex@cm.com | 555-333-4444 | Y | N | N | N | TBD | Pending budget approval. |

| Entertainment | DJ Groove Masters | Mark Johnson | mark@djgm.com | 555-555-6666 | Y | Y | Y | Y | 2024-08-12 | 4-hour set confirmed. |

| (Add More Rows as Needed)

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