Social Media Campaign
Run ID: 69cce6123e7fb09ff16a61002026-04-01Marketing
PantheraHive BOS
BOS Dashboard

Plan and create content for a complete social media campaign

This output executes Step 1 of 2 for the "Social Media Campaign" workflow: "generate_content_calendar". It provides a comprehensive, detailed, and actionable content calendar for a hypothetical sustainable home goods brand, "TerraBloom Living," structured for a 4-week launch campaign.


Social Media Campaign: Content Calendar Development

Client: TerraBloom Living

Project: Social Media Campaign Launch

Step: Generate Content Calendar

Deliverable: Detailed 4-Week Social Media Content Calendar


1. Campaign Overview

  • Campaign Name: TerraBloom Living: Cultivating a Sustainable Home
  • Objective: To successfully launch TerraBloom Living, establishing brand awareness, driving initial traffic to our e-commerce site, and fostering community engagement
sharper4k Output

This document outlines the detailed plan and specifications for generating all necessary visual content for the "New Product Launch: Aura Smart Hub" social media campaign. The goal is to create compelling, high-quality images that resonate with our target audience, communicate key benefits, and drive engagement and conversions across all platforms.


Social Media Campaign: Image Generation Plan

1. Campaign Context and Objective

Campaign Title: New Product Launch: Aura Smart Hub

Overall Objective: To generate significant excitement, drive brand awareness, and encourage pre-orders and early adoption of the Aura Smart Hub.

Campaign Duration: 4 weeks (Pre-launch teasers, Launch Day, Post-launch engagement)

Core Message: The Aura Smart Hub simplifies your life by seamlessly connecting and controlling your smart home devices, offering unparalleled convenience, security, and peace of mind. It's the central nervous system for your modern home.

2. Overall Image Strategy

Our image strategy is designed to create a cohesive and impactful visual narrative throughout the campaign.

  • Goals:

* Capture Attention: Use visually striking and aesthetically pleasing imagery.

* Educate & Inform: Clearly showcase the product, its features, and its benefits.

* Evoke Emotion: Connect with the audience by illustrating a simplified, more enjoyable lifestyle.

* Drive Action: Encourage clicks, shares, comments, and ultimately, conversions.

* Maintain Brand Consistency: Ensure all visuals align with the [Your Company Name] brand identity.

  • Target Audience Visual Appeal:

* Tech-Savvy Individuals: Appreciate sleek design, clear feature demonstrations, and innovative aesthetics.

* Homeowners/Families: Respond to images depicting comfort, security, convenience, and modern living environments.

* Early Adopters: Seek out cutting-edge, aspirational, and sophisticated visuals.

  • Brand Identity Integration:

* All images will adhere to [Your Company Name]'s brand guidelines for color, typography (if text is embedded), and overall aesthetic.

* Subtle branding elements (e.g., logo placement, brand colors) will be incorporated where appropriate without being overtly promotional.

3. Visual Tone and Style Guide

The visual style is crucial for conveying the Aura Smart Hub's essence.

  • Keywords for Aesthetic: Modern, Sleek, Minimalist, Sophisticated, Intuitive, Seamless, Serene, Connected, Elevated, User-friendly.
  • Color Palette:

* Primary: [Specify Brand Primary Color, e.g., #007BFF - Aura Blue]

* Secondary: [Specify Brand Secondary Color, e.g., #333333 - Deep Charcoal]

* Accent: [Specify Brand Accent Color, e.g., #FFD700 - Gold/Amber for highlights]

* Neutrals: [Specify Brand Neutral Colors, e.g., #F8F9FA - Light Grey, #FFFFFF - White]

Note: Predominantly clean, bright, and airy compositions, with strategic use of brand colors.*

  • Composition & Framing:

* Clean Lines: Emphasize the sleek design of the Aura Smart Hub and modern home environments.

* Rule of Thirds: Often used for balanced and engaging compositions.

* Negative Space: Utilized to create a sense of sophistication and highlight the product.

* Dynamic Angles: Occasional use of unique perspectives to showcase product design.

  • Lighting:

* Soft, Natural Light: Preferred for lifestyle shots, creating an inviting and comfortable atmosphere.

* Studio Lighting: For product-only shots, ensuring crisp details, accurate colors, and minimal shadows.

* Warm Tones: To convey comfort and a welcoming home environment.

  • Subject Matter:

* The Aura Smart Hub itself (hero shots, detail shots).

* People (individuals, couples, families) interacting naturally with the device in various home settings.

* Other smart home devices seamlessly integrated with the Aura Smart Hub.

* Abstract representations of connectivity, data flow, and control.

4. Key Image Categories & Themes

We will develop images across several thematic categories to address different stages of the customer journey and various communication goals.

  1. Product Showcase (Hero & Detail Shots):

* Purpose: Introduce the product, highlight its design and physical attributes.

* Content: High-resolution renders or studio photography of the Aura Smart Hub from multiple angles, close-ups of specific features (e.g., ports, indicator lights, material texture).

* Themes: Elegance, innovation, precision engineering.

  1. Lifestyle Integration (Product in Use):

* Purpose: Demonstrate how the Aura Smart Hub fits seamlessly into daily life.

* Content: People (diverse demographics) interacting with the Aura Smart Hub in realistic home settings (living room, kitchen, bedroom, home office). Show scenarios like controlling lights, adjusting thermostats, monitoring security.

* Themes: Convenience, comfort, modern living, family harmony, peace of mind.

  1. Benefit-Oriented & Problem/Solution:

* Purpose: Illustrate the problems the Aura Smart Hub solves and the benefits it provides.

* Content: Split images or infographic-style visuals contrasting a chaotic, disconnected home with a serene, connected home. Visual metaphors for "simplifying complexity."

* Themes: Simplicity, efficiency, control, security, effortless living.

  1. Feature Highlight Graphics:

* Purpose: Explain specific technical features in an easily digestible visual format.

* Content: Graphics combining product imagery with clean iconography, text overlays, and arrows pointing to features (e.g., "Voice Control," "Universal Compatibility," "Energy Monitoring").

* Themes: Clarity, functionality, innovation, intelligence.

  1. Engagement & Interactive (Teasers, Questions):

* Purpose: Spark curiosity and encourage interaction before and during launch.

* Content: Abstract, intriguing visuals for pre-launch teasers (e.g., blurred product outlines, light effects). Graphics with open-ended questions related to smart home challenges.

* Themes: Mystery, anticipation, community.

  1. Call to Action (CTA) Banners:

* Purpose: Drive specific actions like "Learn More," "Pre-Order Now," "Shop Aura Hub."

* Content: Clean design with prominent product image or brand element, clear text overlay for CTA.

* Themes: Urgency (if applicable), directness, conversion.

5. Platform-Specific Image Requirements

Images will be optimized for each platform to ensure maximum impact and adherence to best practices.

  • Instagram:

* Feed Posts: Square (1:1, 1080x1080px) or Portrait (4:5, 1080x1350px). High-quality, aspirational lifestyle shots, product showcases, and engaging graphics.

* Stories: Full-screen Vertical (9:16, 1080x1920px). Behind-the-scenes, interactive elements (polls, questions), quick feature highlights.

* Reels Covers: 1080x1920px (visible area 1080x1080px). Striking still frames from video content or dedicated graphic covers.

  • Facebook:

* Feed Posts: Square (1:1, 1200x1200px) or Landscape (1.91:1, 1200x628px). Lifestyle, benefit-oriented, and feature graphics.

* Ads (Image): Landscape (1.91:1, 1200x628px) or Square (1:1, 1080x1080px). Focus on clear CTAs and compelling visuals.

  • Twitter:

* In-feed Images: Landscape (16:9, 1200x675px) or Square (1:1, 1200x1200px). Graphics, quick product highlights, and engaging visuals for announcements.

* Card Images: Landscape (1.91:1, 800x418px). For website cards, ensuring the link preview is optimized.

  • LinkedIn:

* Company Page Posts: Landscape (1.91:1, 1200x628px) or Square (1:1, 1200x1200px). Professional product shots, feature highlights, and infographics focusing on innovation and smart home benefits.

* Article Cover Images: Landscape (1.91:1, 1200x628px).

  • TikTok (Thumbnails for Video Content):

* Video Thumbnails: 9:16 aspect ratio (1080x1920px), but ensure the primary visual element is centered for smaller display. High-energy, eye-catching stills.

6. Technical Specifications

  • Minimum Resolution: 1080px on the shortest side for all images. Higher resolutions (e.g., 2000px on the longest side) are preferred for source files to allow for cropping and resizing.
  • File Formats:

* JPEG: For most photographic content, offering good compression and quality.

* PNG: For graphics with transparent backgrounds, text overlays, or sharp edges.

* SVG: (If applicable) For scalable vector graphics, especially for logos and icons.

  • File Naming Convention: CampaignName_Category_Description_Platform_Resolution.ext (e.g., AuraLaunch_HeroShot_DeviceOnly_Insta_1080x1080.jpg)
  • Accessibility: All images will have descriptive alt text generated for screen readers and SEO purposes.

7. Detailed Image Brief Examples

Here are detailed briefs for a few key images:

Example 1: Hero Product Shot (Instagram Feed)

  • Category: Product Showcase
  • Objective: To visually introduce the Aura Smart Hub in a premium, aspirational manner, highlighting its sleek design.
  • Visual Description:

* Subject: Aura Smart Hub (only), centered or slightly off-center.

* Setting: Clean, minimalist studio backdrop. Soft, diffused lighting from the top-right, creating subtle highlights and minimal, soft shadows.

* Angle: Slightly elevated, looking down, showcasing the top surface and a hint of the front profile.

* Composition: Ample negative space around the device.

* Mood: Modern, sophisticated, pristine, innovative.

* Color: Dominant device color (e.g., Space Grey/White) against a light, neutral background (e.g., light grey or off-white). Subtle brand accent color in a very minimal way if appropriate (e.g., a tiny LED glow).

  • Text Overlay: None (caption will provide details).
  • Technical: 1:1 aspect ratio (1080x1080px), JPEG.
  • Alt Text: "Sleek Aura Smart Hub device in Space Grey, positioned on a clean, minimalist surface with soft studio lighting, showcasing its modern design."

Example 2: Lifestyle Integration (Facebook Feed)

  • Category: Lifestyle Integration
  • Objective: To demonstrate the Aura Smart Hub seamlessly integrated into a modern home, conveying convenience and comfort.
  • Visual Description:

* Subject: A young professional (25-35 years old, diverse representation) comfortably seated on a sofa in a stylish, well-lit living room. They are casually interacting with a tablet or smartphone, which displays the Aura app interface. The Aura Smart Hub is subtly visible on a side table or shelf in the background, blending into the decor.

* Setting: Modern living room with clean lines, natural light, and tasteful decor (e.g., a few plants, minimalist art).

* Angle: Eye-level, capturing a candid, relaxed moment.

* Composition: Focus on the person and the feeling of ease. The Aura Hub is present but not the sole focus, indicating its seamless integration.

* Mood: Relaxed, comfortable, effortless, connected, modern.

* Color: Warm, inviting tones (e.g., soft browns, creams, greens from plants) with touches of brand accent colors in subtle decor elements.

  • Text Overlay: None (caption will explain the scenario).
  • Technical: 1.91:1 aspect ratio (1200x628px), JPEG.
  • Alt Text: "A person relaxing on a sofa in a modern living room, effortlessly controlling smart home devices via the Aura app on their tablet, with the Aura Smart Hub discreetly placed on a nearby shelf."

Example 3: Feature Highlight Graphic (Instagram Story)

  • Category: Feature Highlight
  • Objective: To quickly and clearly explain the "Universal Compatibility" feature of the Aura Smart Hub.
  • Visual Description:

* Subject: A stylized graphic with the Aura Smart Hub prominently featured in the center.

* Setting: Abstract, clean digital background in brand neutral colors.

* Composition: From the Aura Hub, radiating lines or arcs connect to simplified icons representing various smart home device categories (e.g., light bulb for lighting, thermostat icon for climate, lock icon for security, speaker icon for audio).

* Text Overlay:

* Headline: "Connect Everything." (Top, bold, brand font)

* Sub-headline: "Universal Compatibility with [X, Y, Z] brands & protocols." (Below headline)

* Callout: "Aura Smart Hub" (Discreet

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
"); 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' import ReactDOM from 'react-dom/client' import App from './App' import './index.css' ReactDOM.createRoot(document.getElementById('root')!).render( ) "); 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' import './App.css' function App(){ return(

"+slugTitle(pn)+"

Built with PantheraHive BOS

) } export default App "); zip.file(folder+"src/index.css","*{margin:0;padding:0;box-sizing:border-box} body{font-family:system-ui,-apple-system,sans-serif;background:#f0f2f5;color:#1a1a2e} .app{min-height:100vh;display:flex;flex-direction:column} .app-header{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:40px} h1{font-size:2.5rem;font-weight:700} "); 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)+" Generated by PantheraHive BOS. ## Setup ```bash npm install npm run dev ``` ## Build ```bash npm run build ``` ## Open in IDE Open the project folder in VS Code or WebStorm. "); zip.file(folder+".gitignore","node_modules/ dist/ .env .DS_Store *.local "); } /* --- 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",'{ "name": "'+pn+'", "version": "0.0.0", "type": "module", "scripts": { "dev": "vite", "build": "vue-tsc -b && vite build", "preview": "vite preview" }, "dependencies": { "vue": "^3.5.13", "vue-router": "^4.4.5", "pinia": "^2.3.0", "axios": "^1.7.9" }, "devDependencies": { "@vitejs/plugin-vue": "^5.2.1", "typescript": "~5.7.3", "vite": "^6.0.5", "vue-tsc": "^2.2.0" } } '); zip.file(folder+"vite.config.ts","import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import { resolve } from 'path' export default defineConfig({ plugins: [vue()], resolve: { alias: { '@': resolve(__dirname,'src') } } }) "); zip.file(folder+"tsconfig.json",'{"files":[],"references":[{"path":"./tsconfig.app.json"},{"path":"./tsconfig.node.json"}]} '); zip.file(folder+"tsconfig.app.json",'{ "compilerOptions":{ "target":"ES2020","useDefineForClassFields":true,"module":"ESNext","lib":["ES2020","DOM","DOM.Iterable"], "skipLibCheck":true,"moduleResolution":"bundler","allowImportingTsExtensions":true, "isolatedModules":true,"moduleDetection":"force","noEmit":true,"jsxImportSource":"vue", "strict":true,"paths":{"@/*":["./src/*"]} }, "include":["src/**/*.ts","src/**/*.d.ts","src/**/*.tsx","src/**/*.vue"] } '); zip.file(folder+"env.d.ts","/// "); zip.file(folder+"index.html"," "+slugTitle(pn)+"
"); 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' import { createPinia } from 'pinia' import App from './App.vue' import './assets/main.css' const app = createApp(App) app.use(createPinia()) app.mount('#app') "); var hasApp=Object.keys(extracted).some(function(k){return k.indexOf("App.vue")>=0;}); if(!hasApp) zip.file(folder+"src/App.vue"," "); 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} "); 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)+" Generated by PantheraHive BOS. ## Setup ```bash npm install npm run dev ``` ## Build ```bash npm run build ``` Open in VS Code or WebStorm. "); zip.file(folder+".gitignore","node_modules/ dist/ .env .DS_Store *.local "); } /* --- 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",'{ "name": "'+pn+'", "version": "0.0.0", "scripts": { "ng": "ng", "start": "ng serve", "build": "ng build", "test": "ng test" }, "dependencies": { "@angular/animations": "^19.0.0", "@angular/common": "^19.0.0", "@angular/compiler": "^19.0.0", "@angular/core": "^19.0.0", "@angular/forms": "^19.0.0", "@angular/platform-browser": "^19.0.0", "@angular/platform-browser-dynamic": "^19.0.0", "@angular/router": "^19.0.0", "rxjs": "~7.8.0", "tslib": "^2.3.0", "zone.js": "~0.15.0" }, "devDependencies": { "@angular-devkit/build-angular": "^19.0.0", "@angular/cli": "^19.0.0", "@angular/compiler-cli": "^19.0.0", "typescript": "~5.6.0" } } '); zip.file(folder+"angular.json",'{ "$schema": "./node_modules/@angular/cli/lib/config/schema.json", "version": 1, "newProjectRoot": "projects", "projects": { "'+pn+'": { "projectType": "application", "root": "", "sourceRoot": "src", "prefix": "app", "architect": { "build": { "builder": "@angular-devkit/build-angular:application", "options": { "outputPath": "dist/'+pn+'", "index": "src/index.html", "browser": "src/main.ts", "tsConfig": "tsconfig.app.json", "styles": ["src/styles.css"], "scripts": [] } }, "serve": {"builder":"@angular-devkit/build-angular:dev-server","configurations":{"production":{"buildTarget":"'+pn+':build:production"},"development":{"buildTarget":"'+pn+':build:development"}},"defaultConfiguration":"development"} } } } } '); zip.file(folder+"tsconfig.json",'{ "compileOnSave": false, "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"]}, "references":[{"path":"./tsconfig.app.json"}] } '); zip.file(folder+"tsconfig.app.json",'{ "extends":"./tsconfig.json", "compilerOptions":{"outDir":"./dist/out-tsc","types":[]}, "files":["src/main.ts"], "include":["src/**/*.d.ts"] } '); zip.file(folder+"src/index.html"," "+slugTitle(pn)+" "); zip.file(folder+"src/main.ts","import { bootstrapApplication } from '@angular/platform-browser'; import { appConfig } from './app/app.config'; import { AppComponent } from './app/app.component'; bootstrapApplication(AppComponent, appConfig) .catch(err => console.error(err)); "); zip.file(folder+"src/styles.css","* { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: system-ui, -apple-system, sans-serif; background: #f9fafb; color: #111827; } "); 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'; import { RouterOutlet } from '@angular/router'; @Component({ selector: 'app-root', standalone: true, imports: [RouterOutlet], templateUrl: './app.component.html', styleUrl: './app.component.css' }) export class AppComponent { title = '"+pn+"'; } "); zip.file(folder+"src/app/app.component.html","

"+slugTitle(pn)+"

Built with PantheraHive BOS

"); 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} "); } zip.file(folder+"src/app/app.config.ts","import { ApplicationConfig, provideZoneChangeDetection } from '@angular/core'; import { provideRouter } from '@angular/router'; import { routes } from './app.routes'; export const appConfig: ApplicationConfig = { providers: [ provideZoneChangeDetection({ eventCoalescing: true }), provideRouter(routes) ] }; "); zip.file(folder+"src/app/app.routes.ts","import { Routes } from '@angular/router'; export const routes: Routes = []; "); 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)+" Generated by PantheraHive BOS. ## Setup ```bash npm install ng serve # or: npm start ``` ## Build ```bash ng build ``` Open in VS Code with Angular Language Service extension. "); zip.file(folder+".gitignore","node_modules/ dist/ .env .DS_Store *.local .angular/ "); } /* --- Python --- */ function buildPython(zip,folder,app,code){ var title=slugTitle(app); var pn=pkgName(app); var src=code.replace(/^```[w]* ?/m,"").replace(/ ?```$/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(" "):"# add dependencies here "; zip.file(folder+"main.py",src||"# "+title+" # Generated by PantheraHive BOS print(title+" loaded") "); zip.file(folder+"requirements.txt",reqsTxt); zip.file(folder+".env.example","# Environment variables "); zip.file(folder+"README.md","# "+title+" Generated by PantheraHive BOS. ## Setup ```bash python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt ``` ## Run ```bash python main.py ``` "); zip.file(folder+".gitignore",".venv/ __pycache__/ *.pyc .env .DS_Store "); } /* --- Node.js --- */ function buildNode(zip,folder,app,code){ var title=slugTitle(app); var pn=pkgName(app); var src=code.replace(/^```[w]* ?/m,"").replace(/ ?```$/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)+" "; zip.file(folder+"package.json",pkgJson); var fallback="const express=require("express"); const app=express(); app.use(express.json()); app.get("/",(req,res)=>{ res.json({message:""+title+" API"}); }); const PORT=process.env.PORT||3000; app.listen(PORT,()=>console.log("Server on port "+PORT)); "; zip.file(folder+"src/index.js",src||fallback); zip.file(folder+".env.example","PORT=3000 "); zip.file(folder+".gitignore","node_modules/ .env .DS_Store "); zip.file(folder+"README.md","# "+title+" Generated by PantheraHive BOS. ## Setup ```bash npm install ``` ## Run ```bash npm run dev ``` "); } /* --- 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:" "+title+" "+code+" "; zip.file(folder+"index.html",indexHtml); zip.file(folder+"style.css","/* "+title+" — styles */ *{margin:0;padding:0;box-sizing:border-box} body{font-family:system-ui,-apple-system,sans-serif;background:#fff;color:#1a1a2e} "); zip.file(folder+"script.js","/* "+title+" — scripts */ "); zip.file(folder+"assets/.gitkeep",""); zip.file(folder+"README.md","# "+title+" Generated by PantheraHive BOS. ## Open Double-click `index.html` in your browser. Or serve locally: ```bash npx serve . # or python3 -m http.server 3000 ``` "); zip.file(folder+".gitignore",".DS_Store node_modules/ .env "); } /* ===== 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(/ {2,}/g,"

"); h+="

"+hc+"

Generated by PantheraHive BOS
"; zip.file(folder+app+".html",h); zip.file(folder+"README.md","# "+title+" Generated by PantheraHive BOS. Files: - "+app+".md (Markdown) - "+app+".html (styled HTML) "); } 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);}});}