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

Plan and create content for a complete social media campaign

Social Media Campaign: Content Calendar - Step 1 of 2

Campaign Name: "Green Living, Beautiful Home: Discover Our Sustainable Collection"

We are thrilled to present the comprehensive content calendar for your upcoming social media campaign, "Green Living, Beautiful Home: Discover Our Sustainable Collection." This calendar is designed to build brand awareness, drive engagement, and introduce your eco-friendly home goods to a passionate audience.


1. Campaign Overview

  • Goal: To launch and promote a new line of sustainable home goods, increasing brand awareness, driving website traffic, and fostering community engagement around eco-conscious living.
  • Target Audience: Environmentally conscious individuals (25-45), home decor enthusiasts, millennials and Gen Z interested in sustainable lifestyle choices, and those seeking high-quality, ethically sourced products.
  • Key Message: Sustainable living doesn't mean compromising on style or quality. Our collection offers beautiful, durable, and eco-friendly solutions for every home.
  • Duration: 2 Weeks (Starting Monday, October 23rd, 2023 - example dates)
  • Key Platforms: Instagram, Facebook, LinkedIn, Twitter (X)

2. Content Pillars

Our content strategy will revolve around four core pillars to ensure a diverse, engaging, and informative campaign:

  1. Educate & Inspire: Share insights on sustainable living, the environmental impact of choices, and tips for a greener home.
  2. Product Showcase: Highlight the unique features, benefits, and aesthetic appeal of your sustainable home goods.
  3. Lifestyle & Community: Demonstrate how products integrate into daily life, share home decor inspiration, and encourage audience interaction.
  4. Brand Story & Values: Share the "why" behind your brand, your commitment to sustainability, and behind-the-scenes glimpses.

3. Platform Strategy

Each platform will be utilized strategically to maximize reach and engagement, tailoring content to platform-specific best practices:

  • Instagram: Visual-first content (high-quality photos, Reels, Stories, Carousels) for product showcases, lifestyle inspiration, and quick tips. Focus on aesthetics and engagement.
  • Facebook: Community building, sharing longer-form content, articles, and engaging with comments. Ideal for product launches, brand story, and direct links.
  • LinkedIn: Position your brand as a thought leader in sustainability. Share company values, mission, ethical sourcing, and industry insights. Less direct selling, more brand building.
  • Twitter (X): Short, punchy updates, quick tips, news, link sharing, and real-time engagement. Ideal for driving quick traffic and conversation.

4. Hashtag Strategy

A mix of broad, niche, and branded hashtags will be used to increase discoverability:

  • Branded: #GreenLivingBeautifulHome #[YourBrandName]Eco #[YourBrandName]Home
  • General Sustainability: #SustainableLiving #EcoFriendly #GoGreen #ZeroWaste #EthicalHome #ConsciousLiving #SustainableHome
  • Product Specific: #EcoKitchen #SustainableDecor #HomeGoods #GreenHomeDecor #KitchenEssentials #HandmadeHome
  • Community/Engagement: #MySustainableHome #HomeInspiration #EcoTips #SupportSustainable

5. Weekly Content Calendar

Week 1: Introduction & Foundation (October 23 - October 29)

Theme: Introducing the "Green Living, Beautiful Home" concept, brand values, and initial product spotlights (e.g., kitchenware).

| Date | Day | Platform | Content Type | Theme/Pillar | Headline/Hook | Body Text/Caption

sharper4k Output

Campaign Step: generate_image - Social Media Campaign Visuals

This document outlines the detailed image concepts and specifications for your upcoming Social Media Campaign. The goal is to create compelling, on-brand visuals that resonate with your target audience, drive engagement, and support your campaign objectives.


1. Executive Summary

This deliverable provides a comprehensive visual strategy and specific image concepts designed to elevate your social media campaign. We've focused on creating a diverse set of visuals that cater to different platforms and campaign goals, ensuring a cohesive yet dynamic presence. Each concept includes detailed descriptions, key elements, mood, color palette suggestions, and technical guidelines to facilitate precise execution by designers or AI image generation tools.


2. Campaign Context & Visual Strategy

To ensure the images are perfectly aligned with your campaign, we assume the following context, which has informed our visual recommendations:

2.1. Campaign Goal (Assumed)

To launch and build awareness for a new Eco-Friendly Smart Home Device (e.g., a smart thermostat, energy monitor, or air purifier) that emphasizes sustainability, modern living, and seamless integration into daily life. Key objectives include driving website traffic, increasing product pre-orders/sales, and fostering community engagement.

2.2. Target Audience (Assumed)

Environmentally conscious homeowners, tech-savvy individuals, young professionals, and families seeking convenience, energy efficiency, and a modern aesthetic in their living spaces. They value innovation, sustainability, and quality design.

2.3. Brand Identity & Visual Tone

  • Brand Personality: Innovative, Sustainable, Modern, User-Friendly, Aspirational.
  • Visual Tone: Clean, minimalist, sophisticated, warm, inviting, and forward-thinking. Avoid overly stark or industrial aesthetics.
  • Core Message: "Smart living, sustainably designed."

2.4. Overall Visual Theme

A blend of natural elements (plants, soft lighting, earthy textures) with sleek, modern technology. Emphasis on a bright, airy, and uncluttered aesthetic that evokes a sense of calm and efficiency. The device itself should be presented as an elegant, integrated part of the home, not just a gadget.


3. Detailed Image Concepts & Specifications

Below are detailed concepts for various image types, tailored for different platforms and campaign stages.

3.1. Concept 1: Aspirational Lifestyle - "Seamless Integration"

  • Description: A wide-angle shot of a beautifully designed, modern living room or kitchen, bathed in natural light. The Eco-Friendly Smart Home Device is subtly but clearly visible, seamlessly integrated into the environment (e.g., mounted on a wall, placed on a minimalist shelf). A person (diverse, 25-45 age range) is casually interacting with the space, perhaps reading a book on a sofa, or making coffee, demonstrating a relaxed, comfortable atmosphere enabled by smart technology.
  • Key Elements:

* Clean, minimalist home decor (light wood, neutral textiles, potted plants).

* Abundant natural light (soft, diffused).

* The smart device prominently but elegantly displayed.

* A sense of peace and modern comfort.

* Subtle brand color accents in decor.

  • Mood/Tone: Calm, sophisticated, aspirational, inviting, efficient.
  • Color Palette: Soft neutrals (off-white, light grey, beige), warm wood tones, muted greens (from plants), subtle accents of brand's primary color (e.g., a calming blue or deep forest green).
  • Platform Suitability: Instagram (feed, stories), Facebook, Pinterest, Website Hero.
  • Potential Text Overlay/CTA: "Experience Smarter Living." "Future-Proof Your Home."
  • Aspect Ratio/Dimensions:

* Instagram Feed: 1:1 (1080x1080px), 4:5 (1080x1350px)

* Facebook: 1200x630px

* Pinterest: 2:3 (1000x1500px)

3.2. Concept 2: Product Feature Highlight - "Innovation in Detail"

  • Description: A close-up, high-resolution shot showcasing a key feature or design element of the Eco-Friendly Smart Home Device. This could be a tactile button, a sleek screen interface displaying eco-stats, a unique material texture, or an innovative sensor. The background should be clean, minimalist, and slightly blurred to keep the focus entirely on the product detail.
  • Key Elements:

* Extreme clarity and sharpness on the product detail.

* Subtle lighting to highlight textures and curves.

* Minimalist, often monochromatic background (e.g., a smooth concrete texture, frosted glass, or plain white).

* If applicable, a subtle glow or UI element on the screen.

  • Mood/Tone: Precision, innovation, quality, sophistication, technological advancement.
  • Color Palette: Dominated by the product's own colors (e.g., matte white, brushed metal, charcoal grey) with very subtle background tones.
  • Platform Suitability: Instagram (carousel, feed), LinkedIn, Website Product Page, X (Twitter).
  • Potential Text Overlay/CTA: "Intelligent Design." "See the Difference."
  • Aspect Ratio/Dimensions:

* Instagram Feed/Carousel: 1:1 (1080x1080px), 4:5 (1080x1350px)

* LinkedIn: 1200x627px

* X (Twitter): 1600x900px

3.3. Concept 3: Benefit-Driven Infographic - "Eco-Impact at a Glance"

  • Description: A visually appealing infographic or data visualization image that clearly communicates a key environmental or cost-saving benefit of the device. This could be "Reduce Energy Consumption by X%", "Save Y Dollars Annually," or "Equivalent to Planting Z Trees." Use clean icons, clear typography, and a balanced layout. The device itself can be subtly integrated as a graphic element or a small corner image.
  • Key Elements:

* Clear, concise data points.

* Custom icons representing energy, money, environment, etc.

* Brand-consistent fonts and color scheme.

* Visually balanced layout, easy to read quickly.

* Subtle brand logo placement.

  • Mood/Tone: Informative, trustworthy, empowering, impactful.
  • Color Palette: Primarily brand primary and secondary colors, with complementary accent colors for data visualization (e.g., greens for savings, blues for efficiency).
  • Platform Suitability: Facebook, LinkedIn, Pinterest, Blog Posts, X (Twitter).
  • Potential Text Overlay/CTA: "Make a Smarter Choice." "See Your Savings."
  • Aspect Ratio/Dimensions:

* Facebook: 1200x630px

* LinkedIn: 1200x627px (or 1200x1200px for square charts)

* Pinterest: 2:3 (1000x1500px)

3.4. Concept 4: User-Generated Content (UGC) Style - "Real Homes, Real Impact"

  • Description: An authentic, slightly unpolished (but still high-quality) photo that mimics user-generated content. This could be a shot of the device in a real, lived-in home setting (e.g., on a kitchen counter next to a coffee maker, or in a hallway with shoes nearby). The emphasis is on authenticity and relatability, showing the device as a natural part of everyday life. A hand (diverse, natural skin tone) could be subtly interacting with the device or pointing towards it.
  • Key Elements:

* Natural lighting, potentially with some imperfections (e.g., a slight shadow).

* Everyday objects in the background (books, plants, pet accessories).

* Focus on relatability and genuine use.

* The device should be clearly visible and identifiable.

  • Mood/Tone: Authentic, relatable, trustworthy, community-focused.
  • Color Palette: Natural, warm, and varied, reflecting a real home environment, while still maintaining overall brand warmth.
  • Platform Suitability: Instagram (stories, feed), Facebook, TikTok (as a static image within a video).
  • Potential Text Overlay/CTA: "Join the Movement." "Loved by Homeowners."
  • Aspect Ratio/Dimensions:

* Instagram Feed: 1:1 (1080x1080px), 4:5 (1080x1350px)

* Instagram Stories: 9:16 (1080x1920px)

* Facebook: 1200x630px

3.5. Concept 5: Promotional/Offer Graphic - "Limited Time, Unlimited Benefits"

  • Description: A bold, eye-catching graphic designed to announce a special offer, pre-order window, or launch date. This image should combine a clean product shot (or a stylized icon of the device) with prominent, easy-to-read text highlighting the offer. Use strong visual hierarchy to draw attention to the discount or call to action.
  • Key Elements:

* Clear, high-quality product image or stylized icon.

* Large, legible text for the offer (e.g., "20% OFF," "Pre-Order Now!").

* A clear call-to-action button graphic (e.g., "Shop Now," "Learn More").

* Brand colors used strategically to highlight key information.

* A sense of urgency or exclusivity.

  • Mood/Tone: Exciting, urgent, clear, direct, value-driven.
  • Color Palette: Primarily brand colors, with a contrasting accent color for the offer text to make it pop (e.g., a vibrant orange or a deep magenta against a neutral background).
  • Platform Suitability: All platforms, especially for paid ads (Facebook, Instagram, Google Display Network).
  • Potential Text Overlay/CTA: "Don't Miss Out!" "Claim Your Discount!"
  • Aspect Ratio/Dimensions:

* Instagram/Facebook Feed: 1:1 (1080x1080px), 4:5 (1080x1350px)

* Facebook Link Post: 1200x628px

* X (Twitter): 1600x900px

* Google Display Ads: various sizes (e.g., 300x250, 728x90, 300x600)


4. General Visual Guidelines & Best Practices

To ensure consistency and maximum impact across all visuals:

4.1. Branding Consistency

  • Logo Placement: Ensure the brand logo is present but not intrusive, typically in a corner and at a size that doesn't compete with the main visual.
  • Color Palette: Adhere strictly to the defined brand color palette for backgrounds, text, and graphic elements.
  • Typography: Use brand-approved fonts for all text overlays to maintain a consistent visual identity.

4.2. Image Quality & Resolution

  • All images must be high-resolution, crisp, and free of pixelation.
  • Aim for a minimum of 72 DPI for web, but higher resolutions are preferred for flexibility and future use.
  • Ensure proper lighting, focus, and composition in all photography or generated images.

4.3. Text-to-Image Ratio

  • For images containing text, especially for paid advertisements, ensure text does not cover more than 20% of the image area to avoid penalties from platforms like Facebook.
  • Keep text concise and impactful.

4.4. Accessibility

  • Use sufficient contrast between text and background colors.
  • Consider providing descriptive alt-text for all images when posting to social media platforms.

4.5. File Formats

  • JPEG: Ideal for photographs and complex images with gradients, offering good compression.
  • PNG: Preferred for images with transparency (e.g., logos, overlays) or sharp lines/text (e.g., infographics).
  • GIF: Suitable for simple animations or very short, looping videos.

5. Actionable Next Steps

  1. Review & Feedback: Please review these image concepts and specifications. Provide any feedback or requests for adjustments.
  2. Asset Collection/Creation: Based on this detailed output, your design team or AI image generation tools can now proceed with creating the visual assets.
  3. Content Integration: Once visuals are ready, integrate them with the planned copy and hashtags for each social media post.
  4. A/B Testing: Consider A/B testing different visual approaches for key campaign messages to optimize performance.

We are confident that these detailed visual guidelines will empower you to create a visually stunning and highly effective social media campaign.

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