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

Plan and create content for a complete social media campaign

Social Media Campaign: Content Calendar - Step 1 of 2

Project: Social Media Campaign

Workflow Step: Generate Content Calendar

Deliverable: Comprehensive 4-Week Social Media Content Calendar


Campaign Overview

This document outlines a detailed 4-week content calendar designed to launch and sustain an engaging social media presence for EcoThrive Essentials, a brand dedicated to sustainable home goods, personal care, and fashion. The campaign focuses on building brand awareness, fostering community engagement, educating the audience on sustainable practices, and driving traffic to our online store.

Campaign Goals

  • Increase Brand Awareness: Introduce EcoThrive Essentials to a broader audience and establish its identity as a leader in sustainable living.
  • Drive Engagement: Encourage interaction through likes, comments, shares, polls, and questions to build a loyal community.
  • Educate & Inspire: Share valuable insights, tips, and product benefits related to sustainable living to empower conscious consumer choices.
  • Generate Website Traffic & Sales: Direct interested users to our online store for product exploration and purchases.
  • Position as Thought Leader: Establish EcoThrive Essentials as a credible and trustworthy source for eco-friendly solutions.

Target Audience

  • Demographics: Primarily Millennials and Gen Z (25-45), environmentally conscious individuals, health-focused consumers.
  • Psychographics: Value sustainability, ethical sourcing, minimalist living, natural products, social responsibility, and making a positive impact.
  • Interests: Eco-friendly products, zero-waste living, natural beauty, slow fashion, healthy eating, community involvement, environmental activism.

Content Pillars

To ensure a diverse and engaging content mix, our strategy will revolve around five key pillars:

  1. Brand Story & Values: Sharing our mission, ethical practices, "why," and behind-the-scenes glimpses.
  2. Product Showcase & Benefits: Highlighting specific products, their sustainable features, and how they solve customer needs.
  3. Educational & Informative: Providing tips, facts, guides, and insights on sustainable living, environmental impact, and eco-friendly alternatives.
  4. Community Engagement & UGC: Encouraging user interaction, sharing user-generated content, running polls, and fostering dialogue.
  5. Promotional & Call to Action: Announcing new arrivals, special offers, sales, and directly driving traffic to the website.

Platform Strategy

  • Instagram: Visual storytelling, Reels, Stories, Carousels for product showcases, lifestyle content, and community engagement.
  • Facebook: Community building, longer-form educational content, event promotion, customer service, and sharing blog posts.
  • Twitter: Quick tips, news, engagement with trending topics, customer service, and driving traffic with concise updates.
  • LinkedIn: Brand mission, company culture, sustainable business practices, partnerships, and thought leadership in the eco-industry.

4-Week Social Media Content Calendar

This calendar provides a detailed plan for daily posts across selected platforms.

Week 1: Introduction & Awareness - "Our Sustainable Journey Begins"

Theme: Introducing EcoThrive Essentials, its mission, and the core values of sustainable living.

| Day | Platform(s) | Content Pillar | Content Type | Headline/Hook | Body Text

sharper4k Output

This document outlines the detailed image generation deliverables for your Social Media Campaign, executed as Step 2 of 2. These specifications are designed to produce high-quality, professional visuals tailored for various social media platforms, leveraging the capabilities of a "sharper4k" image generation model.


Social Media Campaign: Image Generation Deliverables

Workflow Step: sharper4k → generate_image

Description: Plan and create content for a complete social media campaign.

Output: Comprehensive image generation prompts and specifications for a professional social media campaign.


1. Introduction & Campaign Overview

This deliverable focuses on generating a diverse set of high-impact visual assets crucial for a successful social media campaign. The goal is to create images that are visually appealing, on-brand, and optimized for engagement across platforms.

For the purpose of these detailed prompts, we will assume a hypothetical campaign for the launch of a new, innovative smart home device called "AuraSync Hub". This will provide concrete examples, which you can easily adapt to your specific product, service, or brand message.

2. General Guidelines for Image Generation

To ensure consistency and high quality, please consider the following overarching guidelines for all generated images:

  • Brand Identity: Images should align with the brand's established visual identity (e.g., modern, minimalist, vibrant, friendly, luxurious).
  • Target Audience: Visuals should resonate with the campaign's target demographic.
  • High Resolution: All images must be generated at a minimum of 2000px on the shortest side to allow for flexibility in cropping and scaling.
  • Clarity & Focus: Each image should have a clear subject and purpose, avoiding clutter.
  • Composition: Utilize principles like the rule of thirds, leading lines, and negative space for professional aesthetics.
  • Lighting: Aim for professional studio lighting or natural, appealing light conditions.
  • Color Palette: Adhere to a cohesive color scheme, preferably incorporating brand colors or complementary tones.
  • Text Overlay Consideration: Leave sufficient clear space for potential text overlays (headlines, call-to-actions) in key areas.

3. Image Categories & Detailed Generation Prompts

We have identified key image categories essential for a comprehensive social media campaign. For each category, detailed prompts are provided to guide the sharper4k model towards optimal output.

3.1. Hero / Campaign Launch Images

  • Purpose: To serve as primary visuals for announcements, main campaign posts, and ad creatives. They should be eye-catching and immediately convey the campaign's core message or product.
  • Style: Sleek, modern, high-tech, aspirational.
  • Prompt 1: Product Spotlight with Abstract Background

* Subject: A sleek, minimalist "AuraSync Hub" device, centered or slightly off-center. The device should be a smooth, matte white or dark gray cylinder with a subtle glowing indicator light (e.g., soft blue or amber).

* Art Style: Photorealistic 3D render, studio product photography aesthetic.

* Lighting: Soft, diffused studio lighting highlighting the device's contours, creating subtle shadows.

* Background: Abstract, ethereal gradient background (e.g., deep blues blending into soft purples or clean whites into light grays), with subtle geometric or wave-like patterns suggesting connectivity or innovation.

* Composition: Close-up to mid-shot, ample negative space around the product.

* Mood: Sophisticated, innovative, future-forward.

* Aspect Ratio: 1:1, 4:5, 16:9 (generate all three for versatility).

* Keywords: AuraSync Hub, smart home device, minimalist design, futuristic, sleek, matte finish, glowing light, abstract background, gradient, soft studio lighting, 3D render, photorealistic.

  • Prompt 2: Dynamic Lifestyle Integration

* Subject: "AuraSync Hub" subtly integrated into a modern, aesthetically pleasing home environment (e.g., on a minimalist side table in a living room, a sleek desk in a home office). A diverse, happy individual or couple (25-40 years old) interacting naturally with the environment, implying ease and comfort enabled by smart tech (e.g., reading a book, enjoying coffee, working on a laptop, looking relaxed). The device should not be the sole focus but part of the harmonious scene.

* Art Style: High-resolution photography, naturalistic.

* Lighting: Bright, inviting natural light streaming through a window.

* Background: Clean, modern interior design (e.g., Scandinavian, minimalist, contemporary), blurred slightly to keep focus on the product and person.

* Composition: Mid-shot, showing context without being too busy.

* Mood: Calm, comfortable, efficient, modern living.

* Aspect Ratio: 1:1, 4:5, 16:9.

* Keywords: AuraSync Hub, smart home integration, modern living, comfortable home, natural light, diverse person, minimalist interior, cozy, seamless technology, high-resolution photography.

3.2. Product / Feature Showcase Images

  • Purpose: To highlight specific features, benefits, or the physical design of the product in detail.
  • Style: Clean, informative, detailed.
  • Prompt 3: Detailed Feature Callout - Connectivity

* Subject: A close-up shot of the "AuraSync Hub" with subtle, glowing lines or abstract light trails emanating from it, visually representing its connectivity to other smart devices (e.g., smart light bulb, thermostat icon, speaker icon, security camera icon) in a futuristic, abstract way. The device should be the central anchor.

* Art Style: High-tech digital art, photorealistic product with graphic overlays.

* Lighting: Focused, slightly dramatic lighting on the device, with ambient glow from the "connectivity lines."

* Background: Dark, slightly textured background to make the glowing elements pop.

* Composition: Centered close-up, emphasizing the device and its radiating connections.

* Mood: Powerful, interconnected, intelligent.

* Aspect Ratio: 1:1, 4:5.

* Keywords: AuraSync Hub, smart home connectivity, IoT, glowing lines, abstract network, digital art, high-tech, close-up, feature highlight, seamless integration.

  • Prompt 4: User Interface (UI) / App Integration

* Subject: A modern smartphone held by a hand (diverse, neutral skin tone) displaying a clean, intuitive "AuraSync" app interface. The UI should show simple controls for connected devices, a dashboard view, and a clear, readable font. The "AuraSync Hub" itself could be subtly blurred in the background or foreground, hinting at its physical presence.

* Art Style: Photorealistic, focus on screen clarity and modern UI design.

* Lighting: Soft, even lighting, ensuring no glare on the phone screen.

* Background: Blurred, minimalist home environment (e.g., a modern wooden table, soft fabric sofa).

* Composition: Hand holding phone prominently, slightly angled to show the screen clearly.

* Mood: User-friendly, intuitive, control at your fingertips.

* Aspect Ratio: 1:1, 4:5.

* Keywords: AuraSync app, user interface, UI design, smartphone, hand holding phone, intuitive control, smart home app, clean design, digital dashboard, photorealistic.

3.3. Engagement / Call-to-Action (CTA) Images

  • Purpose: To encourage interaction, drive clicks, or prompt specific actions. These often have space for text overlays.
  • Style: Bright, clear, inviting, actionable.
  • Prompt 5: Question/Prompt Background Visual

* Subject: A minimalist, abstract scene with soft, inviting light. Could be a blurred background of a cozy, modern living space (e.g., a blurred fireplace, a soft blanket, a subtle plant) or a clean, abstract gradient with gentle light rays. No specific product visible, but the atmosphere should align with the campaign.

* Art Style: Soft focus photography or gentle abstract digital painting.

* Lighting: Warm, inviting, soft ambient light.

* Background: Generous negative space, ideal for overlaying questions like "Ready to transform your home?" or "Discover smart living."

* Composition: Wide shot or abstract focus, ensuring no distracting elements.

* Mood: Inviting, thoughtful, aspirational.

* Aspect Ratio: 1:1, 4:5, 16:9.

* Keywords: Abstract background, soft light, warm tones, inviting atmosphere, minimalist, blurred home interior, question prompt visual, CTA background.

  • Prompt 6: "Learn More" / "Shop Now" Visual with Product Hint

* Subject: A close-up shot of the "AuraSync Hub" casting a soft glow onto a clean surface. The focus should be on the device's subtle elegance. A subtle arrow or a "play" button icon could be visually implied with light or shadow, or an empty, clean space is provided for a button overlay.

* Art Style: High-key product photography, minimalist.

* Lighting: Bright, clean, and even lighting, emphasizing the product's form.

* Background: Pure white or very light gray seamless background.

* Composition: Slightly angled close-up, leaving a clear bottom or side margin for CTA button.

* Mood: Clear, direct, elegant, actionable.

* Aspect Ratio: 1:1, 4:5.

* Keywords: AuraSync Hub, clean product shot, minimalist, high-key lighting, white background, CTA visual, elegant, simple.

3.4. Testimonial / Quote Card Backgrounds

  • Purpose: To provide a visually appealing and brand-aligned background for text-based content like customer testimonials, expert quotes, or key statistics.
  • Style: Subtle, sophisticated, clean, supportive.
  • Prompt 7: Abstract Brand-Aligned Texture

* Subject: A subtle, abstract texture or pattern using the brand's primary and secondary colors (e.g., soft blues, grays, and whites for AuraSync). Could be a gentle wave pattern, a blurred bokeh effect, or a very faint geometric grid.

* Art Style: Abstract digital art, soft focus photography.

* Lighting: Even, soft light across the entire image.

* Background: The texture should be consistent and non-distracting, providing a perfect canvas for text.

* Composition: Full frame, no specific focal point.

* Mood: Professional, trustworthy, clean.

* Aspect Ratio: 1:1, 4:5.

* Keywords: Abstract background, brand colors, soft texture, bokeh effect, geometric pattern, testimonial background, quote card, clean, professional.

4. Technical Specifications

  • Resolution: Minimum 2000px on the shortest side (e.g., 2000x2000px for 1:1, 2000x2500px for 4:5, 2000x1125px for 16:9). Higher resolutions (e.g., 4K) are preferred for maximum flexibility.
  • Aspect Ratios:

* 1:1 (Square): Ideal for Instagram feed, Facebook feed, LinkedIn.

* 4:5 (Vertical Portrait): Optimal for Instagram feed (maximum vertical height without cropping), Facebook feed.

* 16:9 (Landscape): Suitable for Twitter, Facebook link previews, LinkedIn, blog headers.

(Note: 9:16 for Stories/Reels can be generated upon request, often by extending existing visuals or creating dedicated vertical compositions.)*

  • File Format: High-quality JPG or PNG.

5. Next Steps & Recommendations

  1. Review & Select: Review the generated images based on these prompts. Select the ones that best fit your campaign's specific messaging and visual needs.
  2. Customization: Provide feedback for any desired adjustments, variations, or specific elements (e.g., specific brand elements, different color variations, specific product angles).
  3. Text Overlay: Utilize the negative space in the images to strategically place campaign headlines, calls-to-action, or testimonials using your brand's fonts and messaging.
  4. A/B Testing: Consider A/B testing different image variations to determine which visuals perform best with your audience.

This detailed output provides a robust framework for generating a compelling visual library for your social media campaign. Please let us know if you require any modifications or further iterations.

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