Event Planning Toolkit
Run ID: 69cc11e804066a6c4a16915d2026-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.

Event Planning Toolkit: Comprehensive Guide

This comprehensive Event Planning Toolkit provides all the essential documents and templates required to plan, execute, and evaluate a successful event. Designed for clarity and actionability, each component is structured to guide you through every stage of the event lifecycle.


1. Event Planning Timeline (Template)

This timeline outlines key milestones and tasks, organized by phases, to ensure a structured approach to event planning. Adjust dates and tasks based on your specific event's scale and lead time (e.g., 6-12 months for large events, 2-4 months for smaller ones).

Event Name: [Insert Event Name]

Event Date: [Insert Event Date]

Phase 1: Foundation & Strategy (e.g., 6-12 Months Out)

  • [Month 12-10] Define Event Goals & Objectives:

* Determine the purpose (e.g., lead generation, brand awareness, fundraising).

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

* Define target audience.

  • [Month 10-9] Concept & Scope Development:

* Brainstorm event theme, format, and key activities.

* Determine estimated attendance.

* Initial budget estimation.

  • [Month 9-8] Team Assembly & Roles:

* Identify core event planning team members.

* Assign roles and responsibilities (e.g., Marketing, Logistics, Finance, Volunteer Coordinator).

  • [Month 8-7] Venue Selection & Booking:

* Research potential venues based on capacity, location, amenities, and budget.

* Site visits and comparison.

* Negotiate and sign venue contract.

  • [Month 7-6] Legal & Permitting:

* Identify necessary permits and licenses (e.g., food, alcohol, fire, noise).

* Review insurance requirements.

Phase 2: Detailed Planning & Vendor Engagement (e.g., 6-3 Months Out)

  • [Month 6] Budget Finalization:

* Develop detailed budget with line items for all expenses and potential revenue streams.

* Establish tracking system.

  • [Month 6-5] Key Vendor Sourcing & Booking:

* Identify and secure caterers, A/V, entertainment, photographers/videographers, security, rentals.

* Request proposals, compare, negotiate, and sign contracts.

  • [Month 5-4] Program & Content Development:

* Outline event agenda, speakers, activities, and flow.

* Confirm speakers/presenters and their requirements.

* Develop content for presentations, workshops, etc.

  • [Month 4] Marketing & Communication Strategy:

* Develop event branding and messaging.

* Create marketing plan (see Section 4).

* Launch "Save the Date" communications.

  • [Month 4] Registration System Setup:

* Select and configure online registration platform.

* Set up ticket types, pricing, and payment processing.

Phase 3: Execution & Promotion (e.g., 3 Months - Event Day)

  • [Month 3] Marketing Campaign Launch:

* Launch full marketing activities (social media, email, press releases, partnerships).

* Monitor registration numbers and adjust marketing as needed.

  • [Month 3-2] Logistics & Operations Finalization:

* Detailed run-of-show development (see Section 5).

* Layout and floor plans.

* Transportation and accommodation logistics (if applicable).

* Volunteer recruitment and training.

  • [Month 2-1] Supplier Coordination:

* Finalize all vendor details, delivery schedules, and setup times.

* Conduct pre-event meetings with key vendors.

  • [Month 1] Final Communications:

* Send attendee reminders, welcome packs, and pre-event information.

* Finalize speaker details and presentations.

* Print all necessary materials (badges, signage, programs).

  • [Week 2-1] Final Walkthroughs & Briefings:

* Conduct venue walkthroughs with key team members and vendors.

* Hold final team briefing.

* Confirm all equipment and supplies.

  • [Event Day] Event Execution:

* On-site management, coordination, and troubleshooting.

* Execute run-of-show.

Phase 4: Post-Event & Evaluation (e.g., 1-4 Weeks Post-Event)

  • [Day 1-3 Post-Event] Immediate Follow-up:

* Send thank you notes to speakers, sponsors, volunteers, and key vendors.

* Process any outstanding payments.

* Initial debrief with core team.

  • [Week 1 Post-Event] Data Collection & Analysis:

* Distribute post-event survey (see Section 6).

* Compile registration data, attendance figures, social media engagement.

  • [Week 2-3 Post-Event] Financial Reconciliation:

* Reconcile all invoices and payments against budget.

* Generate final budget report.

  • [Week 3-4 Post-Event] Comprehensive Event Report:

* Analyze survey results and performance against objectives.

* Document lessons learned and recommendations for future events.

* Share report with stakeholders.


2. Vendor Checklist

This checklist helps you track the status of various vendor categories, ensuring all necessary services are secured and managed effectively.

Event Name: [Insert Event Name]

Event Date: [Insert Event Date]

| Vendor Category | Vendor Name / Contact | Status (Researching/Contacted/Proposal/Contracted/Paid) | Notes & Key Deadlines |

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

| Venue | | | Capacity, amenities, AV capabilities, accessibility. |

| | | | |

| Catering | | | Menu, dietary restrictions, serving style, staff. |

| | | | |

| Audio Visual (A/V) | | | Projectors, screens, microphones, sound system, lighting. |

| | | | |

| Photography/Video | | | Coverage hours, deliverables, editing, usage rights. |

| | | | |

| Entertainment | | | Type (DJ, band, speaker), setup requirements, break times. |

| | | | |

| Rentals | | | Tables, chairs, linens, decor, specialty items. |

| | | | |

| Security | | | Number of guards, entry/exit points, emergency plan. |

| | | | |

| Staffing/Volunteers | | | Number needed, roles, training schedule. |

| | | | |

| Transportation | | | Shuttles, valet, parking management. |

| | | | |

| Printing/Signage | | | Banners, programs, badges, directional signs. |

| | | | |

| Event Technology | | | Registration platform, event app, lead retrieval. |

| | | | |

| Emergency Services | | | First aid, paramedics (if required). |

| | | | |

| Waste Management | | | Recycling options, waste disposal plan. |

| | | | |

| Insurance | | | Liability coverage, event-specific policies. |

| | | | |


3. Event Budget Tracker (Template)

This budget tracker helps you manage all financial aspects of your event, comparing estimated costs with actual expenditures and tracking revenue.

Event Name: [Insert Event Name]

Event Date: [Insert Event Date]

Revenue

| Revenue Source | Estimated Amount | Actual Amount | Notes |

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

| Ticket Sales | | | Early bird, general, VIP. |

| Sponsorships | | | Tiered packages, in-kind contributions. |

| Grants/Donations | | | |

| Merchandise Sales | | | |

| TOTAL REVENUE | $0.00 | $0.00 | |

Expenses

| Expense Category | Specific Item / Vendor | Estimated Cost | Actual Cost | Paid (Y/N) | Notes |

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

| Venue & Facilities | Venue Rental | | | | |

| | Setup/Teardown | | | | |

| | Cleaning | | | | |

| | Utilities (if separate) | | | | |

| Food & Beverage | Catering | | | | |

| | Bar Service | | | | |

| | Non-alcoholic drinks | | | | |

| | Snacks/Coffee | | | | |

| Audio Visual & Tech | Sound System | | | | |

| | Lighting | | | | |

| | Projectors/Screens | | | | |

| | Microphones | | | | |

| | Tech Support | | | | |

| | Internet/WiFi | | | | |

| | Event App/Platform | | | | |

| Marketing & Promotion | Graphic Design | | | | |

| | Advertising (Digital) | | | | Social media ads, search engine marketing. |

| | Advertising (Print) | | | | Posters, flyers, newspaper ads. |

| | PR/Media Outreach | | | | |

| | Website/Landing Page | | | | |

| | Email Marketing Tool | | | | |

| Staffing & Personnel | Event Staff Wages | | | | |

| | Security Personnel | | | | |

| | Volunteer Support | | | | Food, t-shirts, thank you gifts. |

| Decor & Rentals | Tables & Chairs | | | | |

| | Linens | | | | |

| | Stage/Podium | | | | |

| | Floral/Decorations | | | | |

| | Signage & Banners | | | | Directional, informational, branding. |

| Entertainment & Speakers | Entertainment/Performers | | | | |

| | Speaker Fees | | | | |

| | Speaker Travel/Lodging | | | | |

| Printing & Materials | Event Programs | | | | |

| | Name Badges | | | | |

| | Welcome Kits/Swag | | | | |

| | Tickets | | | | |

| Permits & Insurance | Permits/Licenses | | | | Food, alcohol, special event permits. |

| | Event Insurance | | | | |

| Miscellaneous/Contingency | Contingency (10-15%) | | | | For unforeseen expenses. |

| | Other | | | | |

| TOTAL EXPENSES | $0.00 | $0.00 | | | |

Financial Summary

  • Total Estimated Revenue: $0.00
  • Total Estimated Expenses: $0.00
  • Estimated Net Profit/Loss: $0.00 (Revenue - Expenses)
  • Total Actual Revenue: $0.00
  • Total Actual Expenses: $0.00
  • Actual Net Profit/Loss: $0.00 (Revenue - Expenses)

4. Event Marketing Plan (Template)

This plan outlines strategies and tactics to promote your event effectively, reach your target audience, and drive registrations/attendance.

Event Name: [Insert Event Name]

Event Date: [Insert Event Date]

Target Audience: [e.g., Professionals in tech, local families, university students]

Key Message/Value Proposition: [e.g., "Network with industry leaders," "Discover cutting-edge innovations," "Enjoy a fun-filled day for all ages"]

1. Branding & Messaging

  • Event Name: [Confirm Final Name]
  • Tagline: [Catchy phrase, e.g., "Innovate. Connect. Inspire."]
  • Logo/Visual Identity: [Consistent use across all materials]
  • Core Messaging:

* What problem does the event solve for attendees?

* What unique benefits does it offer?

* Call to Action (CTA): [e.g., "Register Now!", "Get Your Tickets!"]

2. Target Audience Analysis

  • Demographics: Age, location, profession, income.
  • Psychographics: Interests, motivations, pain points, preferred communication channels.
  • Where do they spend their time online/offline?

3. Marketing Channels & Tactics

| Channel | Tactic | Key Dates | Owner | Status |

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

| Website/Landing Page | Dedicated event page with all info, FAQs, registration link. | [Launch Date] | | |

| | SEO optimization for event-related keywords. | Ongoing | | |

| Email Marketing | "Save the Date" announcement. | [X months out] | | |

| | Regular newsletters with updates, speaker highlights, agenda. | Weekly/Bi-weekly | | |

| | Segmented lists (e.g., past attendees, sponsors). | Ongoing | | |

| | Final reminders with essential info. | [1 week, 1 day out] | | |

| Social Media | Platforms: [e.g., LinkedIn, Facebook, Instagram, Twitter] | | | |

| | Create event hashtag: #[EventHashtag] | [Launch Date] | | |

| | Regular posts: speaker announcements, behind-the-scenes, polls, countdowns. | Daily/Bi-daily | | |

| | Paid social media advertising (targeted). | [Start Date] | | |

| | Engage with followers, respond to comments. | Ongoing | | |

| Public Relations | Press releases to relevant media outlets. | [X months out, X weeks out] | | |

| | Media outreach to secure event coverage. | Ongoing | | |

| | Pitch speaker interviews. | [X weeks out] | | |

| Partnerships | Collaborate with industry associations, complementary businesses. | [X months out] | | |

| | Cross-promotion (e.g., shared social posts, email features). | Ongoing | | |

| | Sponsor promotion (logo placement, dedicated posts). | Ongoing | | |

| Advertising | Google Ads (Search & Display). | [Start Date] | | |

| | Industry publication ads (online/print). | [Start Date] | | |

| | Local community boards/flyers. | [X weeks out] | | |

| Influencer Marketing | Identify and engage relevant influencers/community leaders. | [X months out] | | |

| | Offer complimentary tickets for promotion.

gemini Output

Event Planning Toolkit: Comprehensive Deliverable

This comprehensive Event Planning Toolkit provides all the essential documents and templates needed to plan, execute, and evaluate any event successfully. Designed for maximum efficiency and clarity, each component is structured to be actionable and adaptable to your specific event needs.


1. Event Planning Timeline Template

This timeline outlines critical tasks across various phases of event planning, ensuring no detail is overlooked. Adjust specific dates and tasks based on your event's scale and lead time (e.g., 6 months, 3 months, 1 month, 1 week, Day-Of, Post-Event).

| Phase | Key Tasks

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