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

Plan and create content for a complete social media campaign

This document outlines a comprehensive and detailed content calendar for your upcoming social media campaign. This calendar is designed to provide a structured, actionable plan for engaging your audience, promoting your brand's message, and driving conversions.


Social Media Content Calendar: Sustainable Living & Eco-Friendly Products Campaign

Campaign Overview

  • Campaign Title: "Green Living Journey: Embrace a Sustainable Future"
  • Overall Goal: To raise awareness about sustainable living, highlight our range of eco-friendly products, drive engagement, educate our audience, and encourage product purchases to foster a greener lifestyle.
  • Target Audience: Environmentally conscious individuals, ethically minded consumers, those seeking to reduce their environmental footprint, and anyone interested in sustainable practices and products.
  • Campaign Duration: 2 Weeks (Monday, October 23rd - Sunday, November 5th, dates are illustrative and can be adjusted)
  • Key Platforms: Instagram, Facebook, Twitter, LinkedIn

Platform Strategy

Content will be tailored to leverage the strengths of each platform:

  • Instagram: Visually driven with high-quality images and short videos. Focus on aesthetics, lifestyle, stories, reels, and product showcases. Use engaging captions and relevant hashtags.
  • Facebook: Community-focused. Longer-form text possible, engaging discussions, event promotion (if applicable), link sharing, and shared content. Encourages comments and shares.
  • Twitter: Concise, timely updates, quick tips, news, and engagement with relevant conversations using trending hashtags. Focus on bite-sized information and driving to external links.
  • LinkedIn: Professional, educational content. Focus on brand values, sustainability initiatives, industry insights, thought leadership, and career opportunities (if applicable). Positions the brand as a leader in sustainable practices.

Content Calendar

Here is a 2-week content calendar, detailing daily posts across key platforms.


Week 1: Education & Inspiration

Day 1: Monday, October 23rd

  • Theme: Campaign Kick-off: Embrace Sustainable Living
  • Platform(s): Instagram, Facebook, Twitter, LinkedIn
  • Content Type: Image Post (IG/FB/LI), Text Post (TW)
  • Visual/Creative Notes: Inspiring image of a natural landscape or a person enjoying a sustainable lifestyle (e.g., carrying a reusable bag, using a bamboo straw). Brand logo subtly included.
  • Headline/Caption:

* IG/FB/LI: "Your Green Living Journey Starts Today! 🌿"

* TW: "Kickstart your #GreenLiving journey!"

  • Body Text:

* IG/FB: "Welcome to the Green Living Journey! We're kicking off two weeks dedicated to inspiring and empowering you to make sustainable choices. From small swaps to bigger changes, every step counts towards a healthier planet. Join us as we explore eco-friendly tips, spotlight amazing products, and build a community committed to a sustainable future. Let's make a difference, together!"

* TW: "Ready to go green? Join our #SustainableLiving campaign! Over the next 2 weeks, we'll share tips, products & inspiration to help you make eco-friendly choices. #GreenJourney"

* LI: "At [Your Brand Name], we believe in a future where sustainable living is accessible to all. We're excited to launch our 'Green Living Journey' campaign, a two-week initiative dedicated to fostering environmental consciousness and showcasing practical ways to embrace sustainability in daily life. Follow along for insights, product highlights, and community engagement. #Sustainability #EcoFriendly #CorporateSocialResponsibility"

  • Call to Action (CTA):

* IG/FB: "Tell us in the comments: What's one sustainable change you're excited to make?"

* TW: "Follow us for daily tips! What's your top eco-friendly goal?"

* LI: "Join the conversation! What sustainability initiatives are you passionate about?"

  • Hashtags: #GreenLivingJourney #SustainableLifestyle #EcoFriendly #GoGreen #MakeADifference #SustainabilityStartsNow #[YourBrandName]

Day 2: Tuesday, October 24th

  • Theme: Product Spotlight: Reusable Essentials
  • Platform(s): Instagram (Carousel/Reel), Facebook (Image), Twitter (Image/Text), LinkedIn (Image)
  • Visual/Creative Notes: High-quality flat lay or short video showcasing a collection of reusable products (e.g., water bottle, coffee cup, tote bag, bamboo cutlery).
  • Headline/Caption:

* IG/FB/LI: "Swap & Save: Your Everyday Reusable Essentials ♻️"

* TW: "Small swaps, big impact! #ReusableEssentials"

  • Body Text:

* IG/FB: "Did you know that by switching to reusable items, you can drastically reduce your daily waste? Today, we're spotlighting our favorite reusable essentials that make sustainable living effortless and stylish. From keeping your coffee hot to carrying your groceries, these swaps are game-changers! Which one will you try first?"

* TW: "Ditch disposables! Our reusable essentials make going green easy. Think water bottles, coffee cups & tote bags. Shop now & make a difference. [Link to Product Page] #EcoFriendlyProducts #ZeroWaste"

* LI: "Reducing single-use waste is a critical step towards corporate and individual sustainability. Our range of reusable essentials offers practical and durable alternatives for everyday consumption, aligning with circular economy principles. Invest in quality, reduce waste, and set a positive example. #SustainabilitySolutions #ReusableProducts #WasteReduction"

  • Call to Action (CTA):

* IG/FB: "Tap the link in bio to explore our full collection of reusable essentials!"

* TW: "Click here to shop: [Link to Product Page]"

* LI: "Learn more about our sustainable product line: [Link to Product Page]"

  • Hashtags: #Reusable #ZeroWasteLiving #EcoFriendlyProducts #SustainableSwaps #PlasticFree #EverydayEssentials #[YourBrandName]

Day 3: Wednesday, October 25th

  • Theme: Educational Content: The Impact of Single-Use Plastics
  • Platform(s): Instagram (Infographic/Carousel), Facebook (Video/Article Link), Twitter (Fact-based Text), LinkedIn (Article Link)
  • Visual/Creative Notes: Infographic showing alarming stats about plastic waste, or a short educational video explaining the impact.
  • Headline/Caption:

* IG/FB/LI: "The Truth About Single-Use Plastics: A Call to Action 🌎"

* TW: "Shocking facts on single-use plastics!"

  • Body Text:

* IG/FB: "It's time for a reality check. Single-use plastics are devastating our oceans, wildlife, and even our health. Every year, millions of tons of plastic end up in landfills and natural environments. But we have the power to change this! Understanding the problem is the first step towards finding solutions. Let's educate ourselves and inspire collective action."

* TW: "Did you know 8 million tons of plastic enter our oceans annually? That's equivalent to a garbage truck full of plastic every minute! Learn more & act: [Link to Blog Post] #PlasticPollution #EnvironmentalImpact"

* LI: "As businesses and professionals, understanding the environmental repercussions of single-use plastics is paramount for developing sustainable supply chains and responsible consumption models. Our latest article delves into the critical impact of plastic waste and explores innovative solutions for a greener economy. #SustainabilityInsights #CircularEconomy #PlasticFreeFuture"

  • Call to Action (CTA):

* IG/FB: "Swipe to learn more, and share this post to spread awareness!"

* TW: "Read our blog for solutions: [Link to Blog Post]"

* LI: "Read the full article on our website: [Link to Blog Post]"

  • Hashtags: #PlasticFree #OceanConservation #EnvironmentalAwareness #SustainabilityFacts #NoPlastic #ReduceReuseRecycle #[YourBrandName]

Day 4: Thursday, October 26th

  • Theme: User-Generated Content / Community Focus: Share Your Eco-Tips
  • Platform(s): Instagram (Story/Post), Facebook (Post), Twitter (Engagement Post)
  • Visual/Creative Notes: Collage of diverse people, or a graphic inviting users to share their tips.
  • Headline/Caption:

* IG/FB/TW: "Community Spotlight: What's Your Best Eco-Tip? ✨"

  • Body Text:

* IG/FB: "We believe in the power of community! Today, we want to hear from YOU. What's your favorite eco-friendly tip or trick that helps you live more sustainably? Whether it's composting, thrifting, or making your own cleaning products, share your wisdom! Let's inspire each other to make greener choices."

TW: "Your turn! What's your* best eco-friendly tip? Share it below using #MyEcoTip! We'll retweet our favorites. 👇 #SustainableCommunity"

  • Call to Action (CTA):

* IG/FB: "Share your tip in the comments below! We might feature your idea on our stories!"

* TW: "Reply with your tip & tag a friend!"

  • Hashtags: #MyEcoTip #SustainableCommunity #GreenLivingTips #ShareYourKnowledge #EcoFriendlyHacks #CommunityLove #[YourBrandName]

Day 5: Friday, October 27th

  • Theme: Behind the Scenes / Brand Story: Our Commitment to Sustainability
  • Platform(s): Instagram (Reel/Video), Facebook (Video/Image), LinkedIn (Article/Image)
  • Visual/Creative Notes: Short video showing aspects of the brand's sustainable practices (e.g., ethical sourcing, eco-friendly packaging, team at work), or images of the brand's sustainable initiatives.
  • Headline/Caption:

* IG/FB/LI: "More Than Products: Our Heart for a Sustainable Planet 🌱"

* TW: "Behind the scenes: Our #SustainabilityCommitment!"

  • Body Text:

* IG/FB: "At [Your Brand Name], sustainability isn't just a trend; it's at the core of who we are. From carefully sourcing our materials to ensuring ethical production and using recyclable packaging, every decision we make is guided by our commitment to the planet. Get a glimpse behind the scenes and discover the passion that drives us to create products you can feel good about."

* TW: "Curious about our eco-mission? We're committed to sustainability at every step – from sourcing to packaging. Learn more: [Link to About Us/Sustainability Page] #EthicalBrand #GreenBusiness"

* LI: "Transparency and accountability are key pillars of our commitment to sustainability. This Friday, we're sharing an exclusive look into the practices that define [Your Brand Name]'s dedication to environmental stewardship and ethical operations. We believe in building a business that benefits both people and the planet. #CSR #EthicalBusiness #SustainableSupplyChain #BrandValues"

  • Call to Action (CTA):

* IG/FB: "Learn more about our mission on our website – link in bio!"

* TW: "Visit our site to read our full sustainability report."

* LI: "Explore our sustainability initiatives on our website: [Link to About Us/Sustainability Page]"

  • Hashtags: #BrandStory #SustainableBrand #EthicalSourcing #EcoPackaging #GreenBusiness #OurMission #[YourBrandName]

Day 6: Saturday, October 28th

  • Theme: Weekend Challenge / DIY: Eco-Friendly Home Tips
  • Platform(s): Instagram (Reel/Carousel), Facebook (Video/Post), Twitter (Tips List)
  • Visual/Creative Notes: Short, fun video demonstrating a simple eco-friendly DIY (e.g., making natural cleaner, composting, upcycling), or a carousel of tips.
  • Headline/Caption:

* IG/FB: "Weekend Challenge: Green Up Your Home! 🏠"

* TW: "DIY Eco-Home Tips for Your Weekend!"

  • Body Text:

* IG/FB: "It's the weekend! Why not dedicate some time to making your home a little greener? Our #EcoHomeChallenge is all about simple, impactful changes. Try making your own all-purpose cleaner, starting a mini compost bin, or upcycling an old item into something new. Share your progress with us!"

* TW: "Weekend Project! 🛠️ Try these eco-friendly home tips: 1. DIY natural cleaner 2. Start a mini compost 3. Upcycle old items. Share your progress! #EcoChallenge #DIYGreen"

  • Call to Action (CTA):

* IG/FB: "Show us your eco-friendly weekend projects! Tag us @[YourBrandHandle] and use #EcoHomeChallenge!"

* TW: "

sharper4k Output

This output details the conceptualization and specifications for a series of high-impact images crucial for the "Aura Smart Eco-Thermostat" social media campaign. These image descriptions are designed to be directly actionable by an image generation AI (like sharper4k) to produce visually compelling assets that resonate with the target audience and support campaign objectives.


Social Media Campaign: Image Generation Specifications

Campaign Name: Future-Proof Your Home: Introducing Aura, the Smart Eco-Thermostat

Campaign Goal: Drive awareness, website traffic, and pre-orders/sales for the new Aura Smart Eco-Thermostat.

Target Audience: Environmentally conscious homeowners, tech enthusiasts, and individuals seeking energy savings and modern home convenience.

Overall Aesthetic: Modern, clean, sophisticated, eco-conscious, user-friendly.


Image Concept 1: The "Aura" Product Reveal - Hero Shot

  • Image Title/Purpose: "Meet Aura: Your Home's New Eco-Conscious Brain" - Hero image for initial launch announcements and brand recognition.
  • Detailed Description:

* Subject: The Aura Smart Eco-Thermostat, prominently displayed. It features a sleek, minimalist circular or square design with a soft, ambient glow emanating from its central interface.

* Composition: A slightly off-center close-up of the device, creating visual interest. The background is a subtly blurred, modern, high-end living space (e.g., a minimalist wall with warm wood accents or a muted concrete finish).

* Lighting: Soft, diffused natural light highlighting the device's contours, with a gentle, cool-toned internal glow from the interface (e.g., a soft blue or green hue).

* Color Palette: Predominantly cool grays, whites, and muted blues/greens, with subtle warm accents from the background elements to create a sense of comfort and sophistication.

* Mood: Elegant, futuristic, inviting, and intelligent.

  • Context/Usage: Primary image for Facebook/Instagram ads, website banners, blog post headers, and initial campaign posts.
  • Keywords for Image Generation: smart thermostat, minimalist design, eco-friendly, modern home interior, futuristic tech, sleek device, glowing interface, soft lighting, muted colors, smart home automation, high-tech, clean aesthetic, product photography.

Image Concept 2: Energy Savings in Action - Benefit Focus

  • Image Title/Purpose: "Smart Savings, Effortless Comfort" - Highlighting the energy efficiency and financial benefits.
  • Detailed Description:

* Subject: A split or overlaid image.

* Left/Foreground: A diverse, smiling family (e.g., a couple with a child) comfortably enjoying their modern living room, bathed in pleasant, natural light. Subtle visual cues of comfort like a cozy blanket or a warm drink.

* Right/Background Overlay: A stylized, transparent overlay showing a digital interface or infographic-style element. This element clearly displays "Energy Savings" or "Reduced Bill" with a subtle upward trend graph or a leaf icon integrated with dollar signs.

* Composition: The family scene should feel authentic and warm. The digital overlay should be integrated seamlessly, not jarring, perhaps appearing as if projected onto the wall or a transparent screen.

* Lighting: Bright, inviting natural light for the family scene. The digital overlay elements should have a clean, crisp luminescence.

* Color Palette: Warm, inviting tones for the family scene (creams, soft browns, muted greens) contrasted with crisp blues and greens for the digital savings display.

* Mood: Happy, comfortable, reassuring, intelligent, financially beneficial.

  • Context/Usage: Instagram carousels, Facebook ads targeting homeowners concerned about utility bills, email marketing visuals, and landing page sections on savings.
  • Keywords for Image Generation: energy saving, smart home benefits, family comfort, modern living room, eco-friendly lifestyle, financial savings, digital graph overlay, green energy, happy family, natural light, data visualization, smart thermostat advantage.

Image Concept 3: Seamless Control & Modern Lifestyle - Lifestyle Integration

  • Image Title/Purpose: "Your Home, Perfected. Anywhere, Anytime." - Showcasing remote control and convenience.
  • Detailed Description:

* Subject: A person (e.g., a young professional, gender-neutral) in a relaxed, yet productive setting (e.g., working from a stylish cafe, or on a park bench). They are holding a smartphone with a clean, intuitive app interface displayed, showing control of the Aura thermostat. In the background, subtly blurred, is a glimpse of their modern home interior where the Aura device is visible on a wall.

* Composition: The focus is on the person and their interaction with the phone, implying effortless control. The background elements (cafe, park, home interior) add context without distracting.

* Lighting: Bright, natural daylight, emphasizing clarity and ease.

* Color Palette: Contemporary and fresh – cool grays, whites, blues, with pops of natural green from outdoor elements or subtle warmth from interior accents.

* Mood: Empowering, convenient, modern, effortless, connected.

  • Context/Usage: Instagram stories, Facebook video ad thumbnails, app store visuals, and website sections detailing app features.
  • Keywords for Image Generation: smart home control, mobile app, remote access, modern lifestyle, convenience, connected living, person with smartphone, minimalist interior, technology integration, user-friendly interface, smart thermostat app.

Image Concept 4: Sustainable Future - Thematic & Emotional

  • Image Title/Purpose: "Innovate for a Greener Tomorrow" - Connecting Aura with environmental responsibility and future living.
  • Detailed Description:

* Subject: A conceptual, artistic image merging natural elements with subtle futuristic technology. A vibrant, lush green environment (e.g., a forest edge, a clean park) transitions into or is overlaid with abstract, glowing lines and geometric shapes representing a smart, sustainable city or network. In the foreground, a hand gently reaches out towards a soft, glowing projection or hologram of the Aura device, symbolizing interaction with future technology for a better world.

* Composition: Dynamic and aspirational. The blend of organic and synthetic elements should feel harmonious and hopeful. The hand and projected Aura should be the focal point, drawing the viewer in.

* Lighting: Ethereal, gentle, and bright, with a soft glow from the technological elements.

* Color Palette: Dominant greens and blues from nature, contrasted with luminous, soft white, teal, or light-blue glows from the tech elements.

* Mood: Hopeful, inspiring, futuristic, environmentally conscious, visionary.

  • Context/Usage: Brand awareness campaigns, CSR (Corporate Social Responsibility) messaging, long-form content visuals, and high-level campaign branding.
  • Keywords for Image Generation: sustainable future, eco-tech, green living, smart city, nature and technology harmony, futuristic vision, environmental impact, glowing hologram, hands interacting, clean energy, innovation, smart thermostat concept art.

These image specifications provide a robust foundation for generating visually compelling content for the "Aura Smart Eco-Thermostat" social media campaign, ensuring consistency, relevance, and high impact across various platforms.

social_media_campaign.md
Download as Markdown
Copy all content
Full output as text
Download ZIP
IDE-ready project ZIP
Copy share link
Permanent URL for this run
Get Embed Code
Embed this result on any website
Print / Save PDF
Use browser print dialog
\n\n\n"); var hasSrcMain=Object.keys(extracted).some(function(k){return k.indexOf("src/main")>=0;}); if(!hasSrcMain) zip.file(folder+"src/main."+ext,"import React from 'react'\nimport ReactDOM from 'react-dom/client'\nimport App from './App'\nimport './index.css'\n\nReactDOM.createRoot(document.getElementById('root')!).render(\n \n \n \n)\n"); var hasSrcApp=Object.keys(extracted).some(function(k){return k==="src/App."+ext||k==="App."+ext;}); if(!hasSrcApp) zip.file(folder+"src/App."+ext,"import React from 'react'\nimport './App.css'\n\nfunction App(){\n return(\n
\n
\n

"+slugTitle(pn)+"

\n

Built with PantheraHive BOS

\n
\n
\n )\n}\nexport default App\n"); zip.file(folder+"src/index.css","*{margin:0;padding:0;box-sizing:border-box}\nbody{font-family:system-ui,-apple-system,sans-serif;background:#f0f2f5;color:#1a1a2e}\n.app{min-height:100vh;display:flex;flex-direction:column}\n.app-header{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:40px}\nh1{font-size:2.5rem;font-weight:700}\n"); zip.file(folder+"src/App.css",""); zip.file(folder+"src/components/.gitkeep",""); zip.file(folder+"src/pages/.gitkeep",""); zip.file(folder+"src/hooks/.gitkeep",""); Object.keys(extracted).forEach(function(p){ var fp=p.startsWith("src/")?p:"src/"+p; zip.file(folder+fp,extracted[p]); }); zip.file(folder+"README.md","# "+slugTitle(pn)+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\nnpm install\nnpm run dev\n\`\`\`\n\n## Build\n\`\`\`bash\nnpm run build\n\`\`\`\n\n## Open in IDE\nOpen the project folder in VS Code or WebStorm.\n"); zip.file(folder+".gitignore","node_modules/\ndist/\n.env\n.DS_Store\n*.local\n"); } /* --- Vue (Vite + Composition API + TypeScript) --- */ function buildVue(zip,folder,app,code,panelTxt){ var pn=pkgName(app); var C=cc(pn); var extracted=extractCode(panelTxt); zip.file(folder+"package.json",'{\n "name": "'+pn+'",\n "version": "0.0.0",\n "type": "module",\n "scripts": {\n "dev": "vite",\n "build": "vue-tsc -b && vite build",\n "preview": "vite preview"\n },\n "dependencies": {\n "vue": "^3.5.13",\n "vue-router": "^4.4.5",\n "pinia": "^2.3.0",\n "axios": "^1.7.9"\n },\n "devDependencies": {\n "@vitejs/plugin-vue": "^5.2.1",\n "typescript": "~5.7.3",\n "vite": "^6.0.5",\n "vue-tsc": "^2.2.0"\n }\n}\n'); zip.file(folder+"vite.config.ts","import { defineConfig } from 'vite'\nimport vue from '@vitejs/plugin-vue'\nimport { resolve } from 'path'\n\nexport default defineConfig({\n plugins: [vue()],\n resolve: { alias: { '@': resolve(__dirname,'src') } }\n})\n"); zip.file(folder+"tsconfig.json",'{"files":[],"references":[{"path":"./tsconfig.app.json"},{"path":"./tsconfig.node.json"}]}\n'); zip.file(folder+"tsconfig.app.json",'{\n "compilerOptions":{\n "target":"ES2020","useDefineForClassFields":true,"module":"ESNext","lib":["ES2020","DOM","DOM.Iterable"],\n "skipLibCheck":true,"moduleResolution":"bundler","allowImportingTsExtensions":true,\n "isolatedModules":true,"moduleDetection":"force","noEmit":true,"jsxImportSource":"vue",\n "strict":true,"paths":{"@/*":["./src/*"]}\n },\n "include":["src/**/*.ts","src/**/*.d.ts","src/**/*.tsx","src/**/*.vue"]\n}\n'); zip.file(folder+"env.d.ts","/// \n"); zip.file(folder+"index.html","\n\n\n \n \n "+slugTitle(pn)+"\n\n\n
\n \n\n\n"); var hasMain=Object.keys(extracted).some(function(k){return k==="src/main.ts"||k==="main.ts";}); if(!hasMain) zip.file(folder+"src/main.ts","import { createApp } from 'vue'\nimport { createPinia } from 'pinia'\nimport App from './App.vue'\nimport './assets/main.css'\n\nconst app = createApp(App)\napp.use(createPinia())\napp.mount('#app')\n"); var hasApp=Object.keys(extracted).some(function(k){return k.indexOf("App.vue")>=0;}); if(!hasApp) zip.file(folder+"src/App.vue","\n\n\n\n\n"); zip.file(folder+"src/assets/main.css","*{margin:0;padding:0;box-sizing:border-box}body{font-family:system-ui,sans-serif;background:#fff;color:#213547}\n"); zip.file(folder+"src/components/.gitkeep",""); zip.file(folder+"src/views/.gitkeep",""); zip.file(folder+"src/stores/.gitkeep",""); Object.keys(extracted).forEach(function(p){ var fp=p.startsWith("src/")?p:"src/"+p; zip.file(folder+fp,extracted[p]); }); zip.file(folder+"README.md","# "+slugTitle(pn)+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\nnpm install\nnpm run dev\n\`\`\`\n\n## Build\n\`\`\`bash\nnpm run build\n\`\`\`\n\nOpen in VS Code or WebStorm.\n"); zip.file(folder+".gitignore","node_modules/\ndist/\n.env\n.DS_Store\n*.local\n"); } /* --- Angular (v19 standalone) --- */ function buildAngular(zip,folder,app,code,panelTxt){ var pn=pkgName(app); var C=cc(pn); var sel=pn.replace(/_/g,"-"); var extracted=extractCode(panelTxt); zip.file(folder+"package.json",'{\n "name": "'+pn+'",\n "version": "0.0.0",\n "scripts": {\n "ng": "ng",\n "start": "ng serve",\n "build": "ng build",\n "test": "ng test"\n },\n "dependencies": {\n "@angular/animations": "^19.0.0",\n "@angular/common": "^19.0.0",\n "@angular/compiler": "^19.0.0",\n "@angular/core": "^19.0.0",\n "@angular/forms": "^19.0.0",\n "@angular/platform-browser": "^19.0.0",\n "@angular/platform-browser-dynamic": "^19.0.0",\n "@angular/router": "^19.0.0",\n "rxjs": "~7.8.0",\n "tslib": "^2.3.0",\n "zone.js": "~0.15.0"\n },\n "devDependencies": {\n "@angular-devkit/build-angular": "^19.0.0",\n "@angular/cli": "^19.0.0",\n "@angular/compiler-cli": "^19.0.0",\n "typescript": "~5.6.0"\n }\n}\n'); zip.file(folder+"angular.json",'{\n "$schema": "./node_modules/@angular/cli/lib/config/schema.json",\n "version": 1,\n "newProjectRoot": "projects",\n "projects": {\n "'+pn+'": {\n "projectType": "application",\n "root": "",\n "sourceRoot": "src",\n "prefix": "app",\n "architect": {\n "build": {\n "builder": "@angular-devkit/build-angular:application",\n "options": {\n "outputPath": "dist/'+pn+'",\n "index": "src/index.html",\n "browser": "src/main.ts",\n "tsConfig": "tsconfig.app.json",\n "styles": ["src/styles.css"],\n "scripts": []\n }\n },\n "serve": {"builder":"@angular-devkit/build-angular:dev-server","configurations":{"production":{"buildTarget":"'+pn+':build:production"},"development":{"buildTarget":"'+pn+':build:development"}},"defaultConfiguration":"development"}\n }\n }\n }\n}\n'); zip.file(folder+"tsconfig.json",'{\n "compileOnSave": false,\n "compilerOptions": {"baseUrl":"./","outDir":"./dist/out-tsc","forceConsistentCasingInFileNames":true,"strict":true,"noImplicitOverride":true,"noPropertyAccessFromIndexSignature":true,"noImplicitReturns":true,"noFallthroughCasesInSwitch":true,"paths":{"@/*":["src/*"]},"skipLibCheck":true,"esModuleInterop":true,"sourceMap":true,"declaration":false,"experimentalDecorators":true,"moduleResolution":"bundler","importHelpers":true,"target":"ES2022","module":"ES2022","useDefineForClassFields":false,"lib":["ES2022","dom"]},\n "references":[{"path":"./tsconfig.app.json"}]\n}\n'); zip.file(folder+"tsconfig.app.json",'{\n "extends":"./tsconfig.json",\n "compilerOptions":{"outDir":"./dist/out-tsc","types":[]},\n "files":["src/main.ts"],\n "include":["src/**/*.d.ts"]\n}\n'); zip.file(folder+"src/index.html","\n\n\n \n "+slugTitle(pn)+"\n \n \n \n\n\n \n\n\n"); zip.file(folder+"src/main.ts","import { bootstrapApplication } from '@angular/platform-browser';\nimport { appConfig } from './app/app.config';\nimport { AppComponent } from './app/app.component';\n\nbootstrapApplication(AppComponent, appConfig)\n .catch(err => console.error(err));\n"); zip.file(folder+"src/styles.css","* { margin: 0; padding: 0; box-sizing: border-box; }\nbody { font-family: system-ui, -apple-system, sans-serif; background: #f9fafb; color: #111827; }\n"); var hasComp=Object.keys(extracted).some(function(k){return k.indexOf("app.component")>=0;}); if(!hasComp){ zip.file(folder+"src/app/app.component.ts","import { Component } from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\n\n@Component({\n selector: 'app-root',\n standalone: true,\n imports: [RouterOutlet],\n templateUrl: './app.component.html',\n styleUrl: './app.component.css'\n})\nexport class AppComponent {\n title = '"+pn+"';\n}\n"); zip.file(folder+"src/app/app.component.html","
\n
\n

"+slugTitle(pn)+"

\n

Built with PantheraHive BOS

\n
\n \n
\n"); zip.file(folder+"src/app/app.component.css",".app-header{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;gap:16px}h1{font-size:2.5rem;font-weight:700;color:#6366f1}\n"); } zip.file(folder+"src/app/app.config.ts","import { ApplicationConfig, provideZoneChangeDetection } from '@angular/core';\nimport { provideRouter } from '@angular/router';\nimport { routes } from './app.routes';\n\nexport const appConfig: ApplicationConfig = {\n providers: [\n provideZoneChangeDetection({ eventCoalescing: true }),\n provideRouter(routes)\n ]\n};\n"); zip.file(folder+"src/app/app.routes.ts","import { Routes } from '@angular/router';\n\nexport const routes: Routes = [];\n"); Object.keys(extracted).forEach(function(p){ var fp=p.startsWith("src/")?p:"src/"+p; zip.file(folder+fp,extracted[p]); }); zip.file(folder+"README.md","# "+slugTitle(pn)+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\nnpm install\nng serve\n# or: npm start\n\`\`\`\n\n## Build\n\`\`\`bash\nng build\n\`\`\`\n\nOpen in VS Code with Angular Language Service extension.\n"); zip.file(folder+".gitignore","node_modules/\ndist/\n.env\n.DS_Store\n*.local\n.angular/\n"); } /* --- Python --- */ function buildPython(zip,folder,app,code){ var title=slugTitle(app); var pn=pkgName(app); var src=code.replace(/^\`\`\`[\w]*\n?/m,"").replace(/\n?\`\`\`$/m,"").trim(); var reqMap={"numpy":"numpy","pandas":"pandas","sklearn":"scikit-learn","tensorflow":"tensorflow","torch":"torch","flask":"flask","fastapi":"fastapi","uvicorn":"uvicorn","requests":"requests","sqlalchemy":"sqlalchemy","pydantic":"pydantic","dotenv":"python-dotenv","PIL":"Pillow","cv2":"opencv-python","matplotlib":"matplotlib","seaborn":"seaborn","scipy":"scipy"}; var reqs=[]; Object.keys(reqMap).forEach(function(k){if(src.indexOf("import "+k)>=0||src.indexOf("from "+k)>=0)reqs.push(reqMap[k]);}); var reqsTxt=reqs.length?reqs.join("\n"):"# add dependencies here\n"; zip.file(folder+"main.py",src||"# "+title+"\n# Generated by PantheraHive BOS\n\nprint(title+\" loaded\")\n"); zip.file(folder+"requirements.txt",reqsTxt); zip.file(folder+".env.example","# Environment variables\n"); zip.file(folder+"README.md","# "+title+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\npython3 -m venv .venv\nsource .venv/bin/activate\npip install -r requirements.txt\n\`\`\`\n\n## Run\n\`\`\`bash\npython main.py\n\`\`\`\n"); zip.file(folder+".gitignore",".venv/\n__pycache__/\n*.pyc\n.env\n.DS_Store\n"); } /* --- Node.js --- */ function buildNode(zip,folder,app,code){ var title=slugTitle(app); var pn=pkgName(app); var src=code.replace(/^\`\`\`[\w]*\n?/m,"").replace(/\n?\`\`\`$/m,"").trim(); var depMap={"mongoose":"^8.0.0","dotenv":"^16.4.5","axios":"^1.7.9","cors":"^2.8.5","bcryptjs":"^2.4.3","jsonwebtoken":"^9.0.2","socket.io":"^4.7.4","uuid":"^9.0.1","zod":"^3.22.4","express":"^4.18.2"}; var deps={}; Object.keys(depMap).forEach(function(k){if(src.indexOf(k)>=0)deps[k]=depMap[k];}); if(!deps["express"])deps["express"]="^4.18.2"; var pkgJson=JSON.stringify({"name":pn,"version":"1.0.0","main":"src/index.js","scripts":{"start":"node src/index.js","dev":"nodemon src/index.js"},"dependencies":deps,"devDependencies":{"nodemon":"^3.0.3"}},null,2)+"\n"; zip.file(folder+"package.json",pkgJson); var fallback="const express=require(\"express\");\nconst app=express();\napp.use(express.json());\n\napp.get(\"/\",(req,res)=>{\n res.json({message:\""+title+" API\"});\n});\n\nconst PORT=process.env.PORT||3000;\napp.listen(PORT,()=>console.log(\"Server on port \"+PORT));\n"; zip.file(folder+"src/index.js",src||fallback); zip.file(folder+".env.example","PORT=3000\n"); zip.file(folder+".gitignore","node_modules/\n.env\n.DS_Store\n"); zip.file(folder+"README.md","# "+title+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\nnpm install\n\`\`\`\n\n## Run\n\`\`\`bash\nnpm run dev\n\`\`\`\n"); } /* --- Vanilla HTML --- */ function buildVanillaHtml(zip,folder,app,code){ var title=slugTitle(app); var isFullDoc=code.trim().toLowerCase().indexOf("=0||code.trim().toLowerCase().indexOf("=0; var indexHtml=isFullDoc?code:"\n\n\n\n\n"+title+"\n\n\n\n"+code+"\n\n\n\n"; zip.file(folder+"index.html",indexHtml); zip.file(folder+"style.css","/* "+title+" — styles */\n*{margin:0;padding:0;box-sizing:border-box}\nbody{font-family:system-ui,-apple-system,sans-serif;background:#fff;color:#1a1a2e}\n"); zip.file(folder+"script.js","/* "+title+" — scripts */\n"); zip.file(folder+"assets/.gitkeep",""); zip.file(folder+"README.md","# "+title+"\n\nGenerated by PantheraHive BOS.\n\n## Open\nDouble-click \`index.html\` in your browser.\n\nOr serve locally:\n\`\`\`bash\nnpx serve .\n# or\npython3 -m http.server 3000\n\`\`\`\n"); zip.file(folder+".gitignore",".DS_Store\nnode_modules/\n.env\n"); } /* ===== MAIN ===== */ var sc=document.createElement("script"); sc.src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js"; sc.onerror=function(){ if(lbl)lbl.textContent="Download ZIP"; alert("JSZip load failed — check connection."); }; sc.onload=function(){ var zip=new JSZip(); var base=(_phFname||"output").replace(/\.[^.]+$/,""); var app=base.toLowerCase().replace(/[^a-z0-9]+/g,"_").replace(/^_+|_+$/g,"")||"my_app"; var folder=app+"/"; var vc=document.getElementById("panel-content"); var panelTxt=vc?(vc.innerText||vc.textContent||""):""; var lang=detectLang(_phCode,panelTxt); if(_phIsHtml){ buildVanillaHtml(zip,folder,app,_phCode); } else if(lang==="flutter"){ buildFlutter(zip,folder,app,_phCode,panelTxt); } else if(lang==="react-native"){ buildReactNative(zip,folder,app,_phCode,panelTxt); } else if(lang==="swift"){ buildSwift(zip,folder,app,_phCode,panelTxt); } else if(lang==="kotlin"){ buildKotlin(zip,folder,app,_phCode,panelTxt); } else if(lang==="react"){ buildReact(zip,folder,app,_phCode,panelTxt); } else if(lang==="vue"){ buildVue(zip,folder,app,_phCode,panelTxt); } else if(lang==="angular"){ buildAngular(zip,folder,app,_phCode,panelTxt); } else if(lang==="python"){ buildPython(zip,folder,app,_phCode); } else if(lang==="node"){ buildNode(zip,folder,app,_phCode); } else { /* Document/content workflow */ var title=app.replace(/_/g," "); var md=_phAll||_phCode||panelTxt||"No content"; zip.file(folder+app+".md",md); var h=""+title+""; h+="

"+title+"

"; var hc=md.replace(/&/g,"&").replace(//g,">"); hc=hc.replace(/^### (.+)$/gm,"

$1

"); hc=hc.replace(/^## (.+)$/gm,"

$1

"); hc=hc.replace(/^# (.+)$/gm,"

$1

"); hc=hc.replace(/\*\*(.+?)\*\*/g,"$1"); hc=hc.replace(/\n{2,}/g,"

"); h+="

"+hc+"

Generated by PantheraHive BOS
"; zip.file(folder+app+".html",h); zip.file(folder+"README.md","# "+title+"\n\nGenerated by PantheraHive BOS.\n\nFiles:\n- "+app+".md (Markdown)\n- "+app+".html (styled HTML)\n"); } zip.generateAsync({type:"blob"}).then(function(blob){ var a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download=app+".zip"; a.click(); URL.revokeObjectURL(a.href); if(lbl)lbl.textContent="Download ZIP"; }); }; document.head.appendChild(sc); } function phShare(){navigator.clipboard.writeText(window.location.href).then(function(){var el=document.getElementById("ph-share-lbl");if(el){el.textContent="Link copied!";setTimeout(function(){el.textContent="Copy share link";},2500);}});}function phEmbed(){var runId=window.location.pathname.split("/").pop().replace(".html","");var embedUrl="https://pantherahive.com/embed/"+runId;var code='';navigator.clipboard.writeText(code).then(function(){var el=document.getElementById("ph-embed-lbl");if(el){el.textContent="Embed code copied!";setTimeout(function(){el.textContent="Get Embed Code";},2500);}});}