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

This deliverable outlines the visual content for your social media campaign, focusing on generating a high-impact, professional image. This image is designed to be versatile, engaging, and reflective of a forward-thinking brand identity, suitable for a wide range of campaign objectives from awareness to engagement.


Social Media Campaign: Image Generation (Step 2 of 2)

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

Step: sharper4k β†’ generate_image

1. Campaign Context & Objective

This image generation step is crucial for establishing the visual identity and core message of your social media campaign. The objective is to create a compelling, professional, and on-brand visual that captures attention, communicates innovation, and encourages engagement across various platforms. The image is designed to be adaptable for different campaign phases and messaging, serving as a strong foundational asset.

2. Core Image Concept: "Connected Innovation"

The central concept for this image is "Connected Innovation." It visually represents the synergy between technology, data, and human collaboration, fostering a sense of progress, intelligence, and a bright future. The design aims for a modern, sophisticated, and slightly abstract aesthetic that resonates with professional audiences.

3. Detailed Image Description

Title: "Digital Nexus of Progress"

Visual Elements:

Color Palette:

Lighting & Mood:

Composition & Style:

Resolution & Quality:

4. Recommended AI Image Generation Prompt

Below is a detailed prompt optimized for professional AI image generation tools (e.g., Midjourney, DALL-E 3, Stable Diffusion).

text • 1,552 chars
"Abstract concept art: A luminous, glowing spherical core at the center, radiating vibrant electric blue and deep purple light. Dynamic, flowing lines and light trails, in cyan and soft gold, elegantly connect to and extend from the core, disappearing into a dark, gradient background of deep navy and cosmic black. Subtle, translucent geometric shapes (hexagons, triangles) are layered in the foreground and background, creating depth. Tiny, luminous particles or digital dust motes float around the core and along the lines. The overall aesthetic is high-tech, futuristic, clean, and sophisticated. Emphasize soft, ethereal glow, smooth gradients, and sharp, intricate details. No text overlay. --ar 16:9 --v 5.2 --style raw --quality 2"

**(Alternative for a more square/social media friendly aspect ratio):**
"Abstract concept art: A luminous, glowing spherical core at the center, radiating vibrant electric blue and deep purple light. Dynamic, flowing lines and light trails, in cyan and soft gold, elegantly connect to and extend from the core, disappearing into a dark, gradient background of deep navy and cosmic black. Subtle, translucent geometric shapes (hexagons, triangles) are layered in the foreground and background, creating depth. Tiny, luminous particles or digital dust motes float around the core and along the lines. The overall aesthetic is high-tech, futuristic, clean, and sophisticated. Emphasize soft, ethereal glow, smooth gradients, and sharp, intricate details. No text overlay. --ar 1:1 --v 5.2 --style raw --quality 2"
Sandboxed live preview

Social Media Campaign: Content Calendar & Publishing Plan

Project: Social Media Campaign

Step: 1 of 2 - Generate Content Calendar

Date: [Current Date]

Client: [Client Name, if known, otherwise placeholder]


1. Campaign Overview

This document outlines a comprehensive content calendar for a 2-week social media campaign aimed at increasing brand awareness, driving engagement, and educating our target audience about sustainable living through the lens of EcoVibe Living.

  • Brand: EcoVibe Living (Fictional Sustainable Lifestyle Brand)
  • Campaign Goal: To establish EcoVibe Living as a leading voice in sustainable living, showcase our eco-friendly products, and foster an engaged community dedicated to making conscious choices.
  • Campaign Duration: 2 Weeks
  • Target Audience: Environmentally conscious individuals, millennials, and Gen Z interested in sustainable living, ethical consumption, and eco-friendly alternatives.
  • Primary Platforms: Instagram, Facebook, Twitter (X)
  • Key Themes: Education, Inspiration, Product Showcase, Community Engagement, Behind-the-Scenes.

2. Content Pillars & Strategy

Our content strategy will revolve around five core pillars, ensuring a diverse and engaging experience for our audience:

  • Education: Informative posts, tips, and myth-busting to empower our audience with knowledge about sustainable practices.
  • Inspiration: Showcasing the beauty and benefits of an eco-conscious lifestyle through aesthetically pleasing visuals and motivational content.
  • Product Showcase: Highlighting EcoVibe Living products, their sustainable features, and how they integrate into an eco-friendly life.
  • Community Engagement: Interactive content designed to spark conversations, gather feedback, and build a strong, supportive community.
  • Behind-the-Scenes: Offering transparent glimpses into our brand's values, sourcing, and commitment to sustainability.

Content will be adapted for each platform's best practices, leveraging visual storytelling on Instagram, community building on Facebook, and concise, timely updates on Twitter.


3. Detailed 2-Week Content Calendar

This calendar provides ready-to-publish content, including headlines, body text, calls to action, visual ideas, and relevant hashtags.

Week 1: Discover Your Eco-Journey

| Date | Day | Platform | Content Type | Headline/Caption | Body Text | Call to Action | Visual/Creative Idea | Hashtags |

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

| Day 1 | Mon | Instagram | Image Post | Welcome to EcoVibe Living! | The journey to a more sustainable life starts with small, conscious choices. At EcoVibe Living, we believe in making that journey beautiful, accessible, and inspiring. Join us as we explore eco-friendly solutions for your home, style, and well-being. | Tap the link in bio to explore our collection! | High-quality image of diverse EcoVibe Living products (home goods, fashion) arranged aesthetically in a bright, natural setting. | #EcoVibeLiving #SustainableLiving #NewBeginnings #GoGreen #ConsciousLiving |

| | | Facebook | Image Post | Embark on Your Sustainable Journey with EcoVibe Living! | We're thrilled to officially launch EcoVibe Living, your new destination for thoughtful, eco-friendly products that make a difference. From sustainable home essentials to conscious fashion, we're here to help you live beautifully and responsibly. | Share your biggest sustainability goal in the comments below! | Same as Instagram, perhaps with a slightly wider shot showing more context. | #EcoVibeLiving #SustainableChoices #LiveGreen #EcoFriendly #CommunityFirst |

| | | Twitter | Text/Image | Hello, World! πŸ‘‹ EcoVibe Living is officially LIVE! Discover sustainable living made easy & beautiful. Explore our eco-friendly collection now! #EcoVibeLiving | We're passionate about helping you make conscious choices for a better planet. Join our community! | Shop now: [Link to Website] | A vibrant, inviting brand logo with a subtle nature background. | #EcoVibeLiving #SustainableLaunch #GoGreen #NewBrand #EcoFriendly |

| Day 2 | Tue | Instagram | Carousel Post | Why Choose Sustainable Living? 🌍 | Beyond just being "good for the planet," sustainable living offers a wealth of personal benefits too! Swipe to discover how conscious choices can enhance your well-being, save you money, and connect you with a global movement. | What's your top reason for living sustainably? Share below! | Carousel: Slide 1: "Why Sustainable Living?" (Hero image). Slide 2: "Healthier You" (organic food/products). Slide 3: "Smarter Spending" (reusable items). Slide 4: "Cleaner Planet" (nature scene). Slide 5: "Inspire Others" (community shot). | #SustainableTips #EcoBenefits #GreenLiving #MindfulChoices #EcoVibeEducation |

| | | Facebook | Video Post | The Power of Your Eco-Choices: More Than Just Green! | Dive into the ripple effect of sustainable living! This short video highlights how your daily choices contribute to a healthier planet, a stronger community, and a more fulfilling life for you. It's about living better, not less. | Watch to learn more & tell us what inspires your eco-journey! | Short, engaging animated video (30-60 sec) showcasing benefits of sustainable living with upbeat music and text overlays. | #SustainableImpact #EcoFriendlyLiving #MakeADifference #EcoVibeCommunity #GreenFuture |

| Day 3 | Wed | Instagram | Reel/Short Video | Meet Your New Favorite Reusable Coffee Cup! | Sip sustainably in style! Our EcoVibe Reusable Coffee Cups are not just beautiful, they're crafted from recycled materials, durable, and designed for your on-the-go lifestyle. Say goodbye to single-use waste, one delicious coffee at a time. | Ready to upgrade your daily brew? Shop our collection! | Reel: Showcases the cup being filled, carried, cleaned, and stylishly used in different settings (cafe, park, office). Focus on texture, design, and ease of use. | #ReusableCup #CoffeeLover #SustainableSwaps #EcoFriendlyProduct #EcoVibeStyle |

| | | Facebook | Image Post | Morning Rituals, Elevated Sustainably β˜• | Start your day right with an EcoVibe Reusable Coffee Cup! Designed for durability and daily elegance, these cups are your perfect companion for a guilt-free caffeine fix. Join the movement to reduce single-use plastic, one sip at a time. | Grab yours today & make a statement for the planet! | High-quality flat lay photo of the coffee cup with a coffee plant, a book, and other sustainable morning routine items. | #EcoCoffee #SustainableMorning #ZeroWasteJourney #EcoVibeHome #ConsciousConsumer |

| Day 4 | Thu | Instagram | Story/Poll | Eco-Tip Thursday: Quick Swap! | Time for a quick sustainable swap challenge! Which single-use item are you ready to ditch this week? | Poll: 1. Plastic Straws 2. Plastic Bags 3. Disposable Coffee Cups 4. Plastic Water Bottles | Engaging graphic with a question and interactive poll stickers. | #EcoTipThursday #SustainableSwap #ZeroWasteChallenge #EcoVibeTips |

| | | Facebook | Text/Image | Eco-Tip Thursday: Simplify Your Laundry! | Did you know many laundry detergents contain microplastics and harsh chemicals? Eco-Tip: Switch to eco-friendly laundry strips or powder! They're concentrated, plastic-free, and gentle on your clothes and the planet. | What's your favorite eco-friendly laundry product? Share your tips! | Image of eco-friendly laundry strips or a natural laundry detergent bottle. | #EcoLaundry #SustainableHome #CleanLiving #EcoTips #EcoVibeHome |

| | | Twitter | Text | #EcoTipThursday: Ditch single-use plastic bags! Keep a reusable tote in your car/bag. Small swap, BIG impact. What's your go-to eco-friendly habit? #SustainableLiving #GoGreen | N/A | N/A | #EcoTipThursday #SustainableLiving #GoGreen #EcoFriendly #SmallChanges |

| Day 5 | Fri | Instagram | Image Post | Weekend Vibes & Sustainable Spaces ✨ | Imagine a home that nurtures your soul and the planet. This weekend, find inspiration in creating cozy, eco-conscious corners. From natural textures to upcycled decor, let your space reflect your values. | How do you make your home more sustainable? We'd love to know! | Beautifully styled living room or bedroom scene featuring EcoVibe Living home decor items (e.g., organic cotton throw, recycled glass vase with plants). | #SustainableHome #EcoDecor #WeekendVibes #MindfulLiving #EcoVibeInspiration |

| | | Facebook | Image Post | Inspiring Your Sustainable Sanctuary This Weekend! | Ready to transform your living space into an eco-friendly haven? This weekend, get inspired to infuse sustainability into every corner of your home. Discover how natural materials, conscious choices, and our beautiful products can create a serene, green environment. | Browse our sustainable home collection for inspiration! | A curated collection of EcoVibe Living home goods, artfully arranged to inspire. | #GreenHome #SustainableDesign #EcoVibeHome #WeekendInspiration #ConsciousDecor |

| Day 6 | Sat | Instagram | Story/Question | Community Question: Your Sustainable Superpower? | We believe everyone has a unique way of contributing to a greener planet. What's one sustainable habit you're truly proud of? | Sticker: "Ask me a question" or "Share your superpower!" | Engaging graphic with a thought-provoking question, encouraging text responses. | #EcoVibeCommunity #SustainableHabits #GreenHeroes #CommunityLove |

| | | Facebook | Text/Image | Saturday Shout-Out: What's Your Eco-Win This Week? | Every small step towards sustainability is a win! Whether it's choosing a reusable bag, composting, or discovering a new eco-friendly product, we want to celebrate YOUR efforts. | Share your eco-win in the comments! Let's inspire each other! | Image of a cheerful person making a sustainable choice (e.g., at a farmer's market with a reusable bag). | #EcoWins #SustainableJourney #CommunitySupport #EcoVibeLiving #PositiveImpact |

| Day 7 | Sun | Instagram | Reel/Story | Behind the Scenes: Our Commitment to Ethical Sourcing | Ever wondered where our beautiful organic cotton comes from? Join us for a quick peek into our ethical sourcing journey! We partner with suppliers who prioritize fair labor, sustainable farming, and quality. | Learn more about our values on our website (link in bio)! | Short video showing snippets of the sourcing process (e.g., cotton fields, weaving process, happy workers - stylized/representative if actual footage isn't available). | #EthicalSourcing #BehindTheScenes #SustainableFashion #OrganicCotton #EcoVibeValues |

| | | Facebook | Image Post | Transparency Matters: The Story Behind Our Products | At EcoVibe Living, we believe you deserve to know the journey of your products. We're committed to ethical sourcing, fair trade practices, and sustainable materials, ensuring every item you choose supports a better world. | Discover our full sustainability promise on our website! | Infographic or collage illustrating the journey of a product from raw material to finished good, highlighting ethical checkpoints. | #Transparency #EthicalBrand #SustainableSupplyChain #EcoVibePromise #ConsciousBusiness |


Week 2: Vibe Green, Live Clean

| Date | Day | Platform | Content Type | Headline/Caption | Body Text | Call to Action | Visual/Creative Idea | Hashtags |

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

| Day 8 | Mon | Instagram | Carousel Post | Myth Busting Monday: Sustainable Fashion Edition! | Think sustainable fashion is boring, expensive, or hard to find? Think again! Swipe to debunk common myths and discover how stylish, affordable, and accessible eco-friendly apparel truly is. | What's a fashion myth you've heard? Tell us! | Carousel: Slide 1: "Myth Busting Monday" (Hero). Slide 2: "Myth 1: It's expensive!" (Fact: long-lasting, timeless). Slide 3: "Myth 2: It's not stylish!" (Fact: chic designs). Slide 4: "Myth 3: Hard to find!" (Fact: growing options like EcoVibe!). | #SustainableFashion #EcoFashion #FashionMyths #EthicalStyle #EcoVibeApparel |

| | | Facebook | Text/Video | Debunking Sustainable Fashion Myths! (Video) | Is sustainable fashion really just for hippies? Too costly? Not trendy enough? We’re tackling these common misconceptions head-on! Watch our quick video to discover the truth and how easy it is to embrace an eco-conscious wardrobe. | What's your biggest takeaway from this video? Let us know! | Short, dynamic video (1-2 min) with a host discussing and debunking myths, showing examples of stylish sustainable outfits. | #FashionRevolution #SustainableStyle #EcoFashionFacts #ConsciousWardrobe #EcoVibeTips |

| | | Twitter | Text | #MythBustingMonday: Sustainable fashion IS stylish & accessible! Say goodbye to fast fashion myths. It's about quality, ethics & timeless design. #SustainableFashion #EcoStyle | N/A | N/A | #MythBustingMonday #SustainableFashion #EcoStyle #EthicalWardrobe #FashionFacts |

| Day 9 | Tue | Instagram | Image Post | Elevate Your Everyday with Organic Cotton Apparel | Experience the difference of true comfort and conscious craftsmanship. Our organic cotton apparel is soft, breathable, and made to last, ensuring you look good and feel good, knowing your choices support a healthier planet. |

Prompt Breakdown for AI:

  • "Abstract concept art": Sets the artistic style.
  • "A luminous, glowing spherical core at the center, radiating vibrant electric blue and deep purple light": Defines the primary focal point and its dominant colors.
  • "Dynamic, flowing lines and light trails, in cyan and soft gold, elegantly connect to and extend from the core, disappearing into a dark, gradient background of deep navy and cosmic black": Describes secondary elements, their motion, colors, and the background.
  • "Subtle, translucent geometric shapes (hexagons, triangles) are layered in the foreground and background, creating depth": Adds textural and structural detail.
  • "Tiny, luminous particles or digital dust motes float around the core and along the lines": Enhances atmosphere and digital feel.
  • "The overall aesthetic is high-tech, futuristic, clean, and sophisticated": Reinforces desired mood and style.
  • "Emphasize soft, ethereal glow, smooth gradients, and sharp, intricate details": Provides specific rendering instructions.
  • "No text overlay": Ensures a clean base image for later text integration.
  • --ar 16:9 / --ar 1:1: Aspect ratio for landscape or square crops.
  • --v 5.2 / --style raw / --quality 2: Midjourney specific parameters for higher quality and raw aesthetic. (Adjust for other tools).

5. Usage Guidelines & Recommendations

  • Versatility: This image is designed to be adaptable. Use it as a hero image for campaign announcements, background for quote cards, or as a visual anchor for blog posts and articles.
  • Text Overlay: Ensure any text overlays (slogans, calls to action) are legible and contrast well with the image. The design includes sufficient negative space for this.
  • Platform Specifics: Crop and resize the image appropriately for each social media platform (e.g., 1:1 for Instagram, 16:9 for Twitter/LinkedIn, 9:16 for Stories/Reels).
  • Consistency: Maintain a consistent visual theme across all campaign materials by using this image or elements derived from its style guide.
  • A/B Testing: Consider generating a few variations based on this concept to A/B test their performance with your audience.

This detailed output provides a ready-to-use blueprint for generating the core visual asset for your social media campaign. Please proceed with feeding the provided prompts into your preferred AI image generation tool.

social_media_campaign.txt
Download source file
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);}});}