Social Media Campaign
Run ID: 69cb9b9761b1021a29a8a97c2026-03-31Marketing
PantheraHive BOS
BOS Dashboard

Plan and create content for a complete social media campaign

Social Media Campaign: Content Calendar - Deliverable

This document outlines a comprehensive content calendar for your upcoming social media campaign. This calendar is designed to generate awareness, foster engagement, and drive conversions by providing valuable, engaging, and actionable content across key platforms.


Campaign Overview

  • Campaign Title: Elevate Your Efficiency: Introducing [Your Product/Service Name]
  • Campaign Goal: To launch/re-launch [Your Product/Service Name], drive brand awareness, educate the target audience on its benefits, and encourage sign-ups/purchases.
  • Target Audience: Professionals, small business owners, teams, and individuals seeking to enhance productivity, streamline workflows, and achieve better results.
  • Campaign Duration: 2 Weeks (extendable based on performance and additional content needs)
  • Key Platforms: Instagram, Facebook, LinkedIn, X (formerly Twitter)

Content Pillars

Our content strategy will revolve around the following key themes to ensure a consistent and impactful message:

  1. Problem/Solution: Highlighting common pain points in productivity and how [Your Product/Service Name] provides an effective solution.
  2. Benefits & Features: Showcasing the core advantages and specific functionalities of [Your Product/Service Name].
  3. Tips & Tricks: Providing general productivity advice and demonstrating how our product integrates for better outcomes.
  4. Social Proof & Success Stories: Sharing testimonials, case studies, or user-generated content (once available).
  5. Behind the Scenes/Brand Story: Connecting with the audience on a more personal level (e.g., team values, development process).

Platform-Specific Strategy

To maximize reach and engagement, content will be tailored to suit the unique characteristics and audience expectations of each platform.

  • Instagram: Visually driven (high-quality images, short videos, Reels, Stories, Carousels). Focus on lifestyle, quick tips, and behind-the-scenes.
  • Facebook: Community building, longer-form content, discussions, event promotion, link sharing.
  • LinkedIn: Professional insights, thought leadership, industry news, company updates, career-focused tips, case studies.
  • X (Twitter): Real-time engagement, quick tips, news, polls, link sharing, direct interaction.

Week 1: Awareness & Engagement

Goal: Introduce [Your Product/Service Name], highlight its core value proposition, and generate initial interest and engagement.

| Day | Platform | Content Type | Headline/Caption Hook | Body Text ### Week 1: Awareness & Engagement

Goal: Introduce [Your Product/Service Name], highlight its core value proposition, and generate initial interest and engagement.


Monday: The Pain Point Solver

  • Theme: Problem/Solution
  • Visual Idea: Image of someone looking stressed with multiple tasks, or a graphic representing disorganization.
  • Instagram/Facebook (Image/Carousel):

* Headline: Tired of Juggling Too Many Tasks?

* Body: We get it. Modern life demands peak productivity, but scattered tools and endless distractions make it tough. What if there was a way to bring clarity and control back to your day? Introducing [Your Product/Service Name] – your all-in-one solution for effortless organization and boosted efficiency.

* Call to Action: Discover a calmer, more productive you. Tap the link in bio to learn more!

* Hashtags: #ProductivityHacks #WorkLifeBalance #TimeManagement #Efficiency #NewProduct #[YourProductName]

  • LinkedIn (Text Post with Image):

* Headline: The Silent Productivity Killer: Fragmented Workflows

* Body: In today's fast-paced professional landscape, the biggest hurdle to achieving goals often isn't a lack of effort, but a lack of cohesive systems. We've all felt the drain of switching between multiple apps and losing track of vital information. This is why we created [Your Product/Service Name] – designed to centralize your work, streamline communication, and empower your team.

* Call to Action: Explore how [Your Product/Service Name] can transform your team's efficiency. Visit our website: [Your Website Link]

* Hashtags: #BusinessProductivity #WorkflowOptimization #TeamEfficiency #Innovation #SmallBusiness #[YourProductName]

  • X (Tweet with Image):

* Headline: Drowning in tasks? 🤯

* Body: Fragmented tools kill productivity. Get everything in one place with [Your Product/Service Name]. Focus on what matters. #Productivity #WorkSmart #Efficiency #[YourProductName]

* Call to Action: Learn more: [Your Website Link]


Tuesday: Benefit Spotlight - "Focus & Clarity"

  • Theme: Benefits & Features
  • Visual Idea: Short animated video or graphic showing a cluttered desk transforming into an organized one, or a person looking focused and calm.
  • Instagram (Reel/Short Video):

* Headline: Unlock Your Focus! 💡

* Body: Distractions are productivity's worst enemy. [Your Product/Service Name] is engineered to cut through the noise, giving you a dedicated space to concentrate on your most important work. Imagine achieving more in less time, without the constant mental clutter.

* Call to Action: Ready to reclaim your focus? Watch our demo! [Link in Bio/Swipe Up]

*Hasht

sharper4k Output

Social Media Campaign: Visual Content Generation Strategy (Step 2 of 2)

This document outlines the detailed strategy and specific prompts for generating high-quality visual content for your upcoming social media campaign. As the "generate_image" step, our focus is on creating compelling, on-brand imagery that resonates with your target audience and effectively communicates your campaign's message.


1. Campaign Overview & Objective for Visuals

Campaign Context: This social media campaign aims to launch and promote a new, innovative eco-friendly smart home wellness device, "AuraBloom," designed to enhance indoor air quality and mood through natural diffusion and smart environmental monitoring.

Primary Objective for Visuals:

To create a cohesive set of visually stunning and emotionally engaging images that:

  • Introduce "AuraBloom" and its core benefits (clean air, tranquility, smart living).
  • Showcase the product's elegant design and seamless integration into modern home environments.
  • Evoke feelings of peace, health, and contemporary comfort.
  • Drive awareness, engagement, and ultimately, traffic to the product page.

2. Core Visual Identity & Thematic Elements

To ensure consistency and brand recognition across all platforms, the following visual identity guidelines will inform all image generation:

  • Aesthetic: Modern, minimalist, clean, serene, inviting, sophisticated.
  • Color Palette: Soft neutrals (creams, whites, light greys), muted greens (representing nature/eco-friendliness), subtle blues (calmness), and warm accents (natural wood tones, soft golds).
  • Mood/Tone: Peaceful, aspirational, healthy, technologically advanced yet natural.
  • Lighting: Soft, natural daylight, or warm, inviting indoor lighting. Avoid harsh shadows or overly dramatic contrasts.
  • Composition: Clean lines, ample negative space, balanced layouts. Focus on product clarity and emotional connection.
  • Brand Elements: Subtle integration of "AuraBloom" branding (e.g., device logo visible, consistent typography if text is included).

3. Key Image Categories & Detailed Generation Prompts

Below are the proposed image categories with detailed prompts designed for high-resolution, professional output (sharper4k quality). Each prompt provides specific instructions for an AI image generator or a professional photographer/designer.

3.1. Hero Product Shot / Announcement Image

  • Purpose: To introduce AuraBloom with a striking, high-quality image suitable for hero banners and primary announcements.
  • Concept/Description: A pristine, beautifully lit shot of the AuraBloom device, highlighting its elegant design and premium materials.
  • Detailed Prompt for AI/Designer:

> "AuraBloom smart home wellness device. Ultra-high resolution, studio product photography. The device is centered or slightly off-center on a seamless, minimalist background of soft cream or light grey. Emphasize its sleek, cylindrical design with a natural wood base and a matte white top diffuser. Soft, diffused natural light from the left, creating subtle, elegant highlights and very soft shadows. Focus on the smooth textures and clean lines. Include a faint, ethereal mist or glow emanating from the top, subtly suggesting air purification/diffusion. Aspect Ratio: 16:9 or 4:3. Style: Modern, minimalist, luxury tech. Quality: Sharper4k, photorealistic."

  • Example Platforms: Instagram feed, Facebook banner, LinkedIn announcement, blog headers.

3.2. Lifestyle / In-Situ Usage Image

  • Purpose: To demonstrate AuraBloom's seamless integration into a modern home environment and evoke the feeling of well-being it provides.
  • Concept/Description: AuraBloom placed in a beautifully designed, contemporary living room or bedroom, subtly enhancing the space. A person (diverse, serene) interacting indirectly or enjoying the atmosphere.
  • Detailed Prompt for AI/Designer:

> "AuraBloom device subtly placed on a light oak coffee table in a sunlit, minimalist living room. The room features natural textures (linen sofa, potted green plants), soft muted colors (sage green, warm grey), and ample natural light streaming through large windows. A diverse individual is partially visible in the background, reading a book or meditating, conveying a sense of peace and relaxation. The AuraBloom device is in the mid-ground, slightly out of crisp focus but clearly identifiable, with a subtle glow. The overall mood is serene, calm, and aspirational. Aspect Ratio: 4:5 or 1:1. Style: Modern, lifestyle, warm minimalism. Quality: Sharper4k, cinematic."

  • Example Platforms: Instagram feed, Pinterest, Facebook, blog posts.

3.3. Benefit-Focused Graphic / Infographic Snippet

  • Purpose: To visually communicate a key benefit or feature of AuraBloom quickly and clearly.
  • Concept/Description: A clean, visually appealing graphic that highlights a benefit (e.g., "Enhanced Air Quality") with a subtle visual metaphor or icon, integrated with the product.
  • Detailed Prompt for AI/Designer:

> "A graphic composition featuring the AuraBloom device on the left, emitting a gentle, stylized wave of clean air (represented by light, flowing abstract lines or soft blue/green particles). On the right, a clean, modern text box (using brand typography) with the headline 'Breathe Cleaner, Live Better.' Below the headline, a simple icon representing lungs or fresh air. Background is a soft gradient from white to very light sage green. Clean, professional, easy to read. Aspect Ratio: 1:1 or 9:16 (for Stories). Style: Clean graphic design, subtle 3D elements. Quality: Sharper4k, vector-like clarity."

  • Example Platforms: Instagram Stories, Facebook posts, Twitter, Pinterest (as part of a carousel).

3.4. Close-Up Detail Shot / Texture Focus

  • Purpose: To showcase the quality of materials and intricate design details of AuraBloom, emphasizing craftsmanship.
  • Concept/Description: A macro or close-up shot focusing on the contrasting textures of AuraBloom (e.g., wood grain of the base, matte finish of the diffuser).
  • Detailed Prompt for AI/Designer:

> "Extreme close-up macro photography of the AuraBloom device. Focus on the seamless transition between the natural light oak wood base and the smooth, matte white ceramic-like top. Highlight the fine grain of the wood and the subtle texture of the matte finish. Soft, directional light emphasizing the material quality and craftsmanship. Shallow depth of field, with the focus razor-sharp on the intersection of the two materials. Aspect Ratio: 1:1. Style: High-end product photography, tactile. Quality: Sharper4k, hyper-realistic."

  • Example Platforms: Instagram carousel, product detail pages, paid ad creatives.

3.5. Emotional / Aspirational Scene

  • Purpose: To evoke a strong emotional connection with the target audience, showcasing the feeling AuraBloom brings.
  • Concept/Description: A serene scene, possibly a cozy corner of a home with a cup of herbal tea, a soft blanket, and a hint of AuraBloom in the background, emphasizing relaxation and well-being.
  • Detailed Prompt for AI/Designer:

> "A warm, inviting scene in a cozy reading nook. A soft knitted blanket draped over an armchair, a steaming mug of herbal tea on a small side table. In the background, slightly out of focus but visible, is the AuraBloom device emitting a soft, calming glow. The lighting is warm and ambient, suggestive of late afternoon or early evening. Soft focus on the background elements to draw attention to the overall serene atmosphere. No people visible. Aspect Ratio: 4:5. Style: Hygge, cozy, warm, aspirational lifestyle. Quality: Sharper4k, painterly realism."

  • Example Platforms: Instagram, Facebook, Pinterest.

4. Technical Specifications & Best Practices

To ensure maximum impact and compatibility across various social media platforms, please adhere to the following technical guidelines:

  • Resolution: All images should be generated at a minimum of 4K (3840x2160 pixels) or higher to allow for cropping and future-proofing without loss of quality.
  • Aspect Ratios:

* Square (1:1): Ideal for Instagram feeds, Facebook posts. (e.g., 1080x1080px)

* Vertical (4:5): Preferred for Instagram feeds to maximize screen real estate. (e.g., 1080x1350px)

* Horizontal (16:9 or 4:3): Suitable for Facebook link shares, Twitter, LinkedIn. (e.g., 1920x1080px or 1200x900px)

* Stories (9:16): Full-screen for Instagram/Facebook Stories, Reels. (e.g., 1080x1920px)

  • File Format:

* PNG: For images with text, logos, or sharp graphics to maintain clarity.

* JPG: For photographic images, optimized for web to balance quality and file size.

  • Branding: Ensure consistent, subtle placement of the "AuraBloom" logo or wordmark where appropriate, typically in a bottom corner, ensuring it doesn't distract from the main subject.
  • Accessibility: Consider adding descriptive alt-text for all images when uploading to social platforms to improve accessibility for visually impaired users.
  • Optimized for Mobile: Design and compose images with mobile viewing as the primary experience. Text should be legible, and key elements should be centrally located.

5. Next Steps

  1. Review & Feedback: Please review these detailed image concepts and prompts. Provide any feedback or specific adjustments you'd like to see.
  2. Initial Image Generation: Upon your approval, we will proceed with generating an initial batch of images based on these specifications.
  3. Selection & Refinement: We will present the generated images for your selection and further refinement, ensuring they perfectly align with your campaign vision.

We are confident that this strategic approach to visual content generation will result in a stunning and effective social media campaign for AuraBloom.

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