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

Plan and create content for a complete social media campaign

Social Media Campaign: Content Calendar - EcoSmart Water Bottle Launch

This document outlines a comprehensive 4-week social media content calendar designed to generate excitement, educate your audience, and drive conversions for the launch of the EcoSmart Water Bottle. This calendar provides ready-to-publish content, including headlines, body text, and calls to action, tailored for key social media platforms.


Campaign Overview: Hydrate Smarter, Live Greener

  • Campaign Name: Hydrate Smarter, Live Greener: Introducing EcoSmart Water Bottle
  • Product: EcoSmart Water Bottle – A sustainable, smart water bottle with advanced hydration tracking and eco-friendly design.
  • Duration: 4 Weeks (2 Weeks Teaser/Pre-Launch, 2 Weeks Launch/Post-Launch)
  • Core Message: Revolutionize your hydration and contribute to a healthier planet with the EcoSmart Water Bottle.
  • Key Differentiators: Sustainable materials, smart hydration tracking, sleek design, community focus.

Campaign Goals

  • Awareness: Generate significant buzz and brand recognition for the EcoSmart Water Bottle.
  • Engagement: Foster an active community around hydration, sustainability, and smart living.
  • Education: Clearly communicate the unique features, benefits, and environmental impact of the EcoSmart Water Bottle.
  • Conversion: Drive sign-ups for launch notifications, pre-orders, and ultimately, sales.
  • Website Traffic: Increase visits to the EcoSmart product page.

Target Audience

  • Primary: Environmentally conscious individuals, health & fitness enthusiasts, tech-savvy consumers (ages 25-45).
  • Secondary: Busy professionals seeking convenient health solutions, students interested in sustainable tech.

Key Social Media Platforms

  • Instagram: Visual storytelling, Reels, Stories, product showcases, lifestyle integration.
  • Facebook: Community building, longer-form content, event promotion, detailed feature explanations.
  • Twitter: Real-time updates, quick tips, engagement with trending topics, Q&A.
  • LinkedIn: Professional insights, company announcements, sustainability leadership, B2B partnerships (if applicable).

Content Pillars & Themes

  1. Sustainability & Eco-Friendliness: Highlight recycled materials, plastic reduction, carbon footprint.
  2. Smart Hydration & Health Benefits: Focus on hydration tracking, personalized goals, improved well-being.
  3. Lifestyle Integration: Showcase the bottle in various settings (gym, office, travel, outdoor).
  4. Innovation & Technology: Delve into the smart features, app connectivity, sleek design.
  5. Community & Impact: User-generated content, testimonials, shared values, environmental impact.

Detailed Content Calendar: Weeks 1 & 2 (Teaser & Pre-Launch)

Week 1: Building Anticipation & Introducing the Problem/Solution

Theme: "The Future of Hydration is Here." Tease a revolutionary solution to common hydration challenges and environmental concerns.


Day 1: Monday - The Tease

  • Platform: Instagram, Facebook, Twitter
  • Content Type: Image Post (Instagram/Facebook), Text Post (Twitter)
  • Key Message: Hint at a new way to hydrate and save the planet.
  • Instagram/Facebook:

* Headline: The Future of Hydration is Brewing... πŸŒπŸ’§

* Body Text: Tired of single-use plastics? Frustrated with guessing your daily water intake? Something revolutionary is coming that will change how you hydrate and impact the planet. Get ready to rethink your bottle.

* Call to Action: Tap the link in bio to be the first to know! #HydrateSmarter #EcoRevolution #ComingSoon

* Suggested Visual: A sleek, blurred silhouette of the bottle against a natural, vibrant background (e.g., lush green forest or clear blue water).

  • Twitter:

* Headline: Big news on the horizon for your hydration & the planet! πŸŒΏπŸ’§ #HydrateSmarter #EcoRevolution #ComingSoon

* Body Text: We're about to unveil a game-changer. Ditch single-use plastics and discover smarter hydration. Stay tuned!

* Call to Action: Follow us for updates! [Link to landing page for email sign-up]

Day 2: Tuesday - The Problem & Solution Hint

  • Platform: Instagram Stories, Facebook Post
  • Content Type: Poll (IG Stories), Question Post (FB)
  • Key Message: Engage audience on hydration challenges and plastic waste.
  • Instagram Stories:

* Headline: Hydration Habits: What's YOUR biggest challenge?

* Poll Options: "Forgetting to drink enough," "Tracking water intake," "Using too much plastic," "Finding a stylish bottle."

* Call to Action: Swipe up to learn how we're solving it! (Link to blog post about hydration challenges/sustainability).

* Suggested Visual: A minimalistic graphic with water droplets and question marks.

  • Facebook:

* Headline: Let's Talk Hydration & Our Planet!

* Body Text: How often do you find yourself forgetting to drink water? And how do you feel about the impact of plastic bottles on our environment? We're on a mission to solve both. Share your thoughts below!

* Call to Action: Join the conversation! #SustainableLiving #HydrationGoals

Day 3: Wednesday - Sustainability Focus

  • Platform: LinkedIn, Instagram Reel/Short Video
  • Content Type: Article/Post (LinkedIn), Short Video (IG Reel)
  • Key Message: Emphasize commitment to sustainability and eco-friendly design.
  • LinkedIn:

* Headline: Redefining Sustainability in Everyday Products: A Sneak Peek at Our Philosophy

* Body Text: At [Your Company Name], we believe true innovation goes hand-in-hand with environmental responsibility. We're excited to share a glimpse into the sustainable design principles behind our upcoming product. From recycled materials to a reduced carbon footprint, we're setting a new standard.

* Call to Action: Learn more about our mission and sign up for launch alerts. [Link to company's sustainability page/launch sign-up] #Sustainability #EcoInnovation #CircularEconomy

* Suggested Visual: A professional graphic showing a leaf integrated with a circuit board, or a clean design featuring recycling symbols.

  • Instagram Reel:

* Concept: A quick, visually appealing montage of natural elements (water, green leaves) interspersed with quick cuts of hands assembling a sleek, partially visible product (the bottle). Upbeat, inspiring music.

* On-Screen Text: "Designed for you. Designed for Earth." "Coming Soon."

* Caption: We're crafting something beautiful, inside and out. Every detail designed with you and the planet in mind. 🌱 #EcoFriendly #SustainableDesign #Innovation

Day 4: Thursday - Smart Tech Hint

  • Platform: Twitter, Facebook
  • Content Type: Teaser Image/Text Post
  • Key Message: Hint at the smart technology integration.
  • Twitter:

* Headline: Your Hydration, Elevated. πŸ“ˆ

* Body Text: What if your water bottle could do more than just hold water? Get ready for smart insights that help you reach your health goals. #SmartTech #HydrationTracking #FutureIsNow

* Call to Action: Don't miss the reveal! Follow us!

* Suggested Visual: A close-up, out-of-focus shot of a sleek digital display, perhaps showing a partial graph or number.

  • Facebook:

* Headline: Beyond Just a Bottle.

* Body Text: Imagine a water bottle that understands your body's needs. We're integrating cutting-edge technology to bring you personalized hydration insights. Say goodbye to guesswork and hello to optimal health!

* Call to Action: Share your dream smart bottle feature! πŸ‘‡ #TechForGood #WellnessJourney

Day 5: Friday - Weekend Anticipation

  • Platform: Instagram, Facebook Stories
  • Content Type: Countdown Sticker (IG Stories), Engaging Question (FB)
  • Key Message: Build weekend excitement and drive sign-ups.
  • Instagram Stories:

* Concept: A visually appealing graphic with a countdown sticker.

* Text: "Something amazing is just around the corner... Don't miss out!"

* Call to Action: "Tap to get notified!" (Link to launch notification sign-up).

* Suggested Visual: A dynamic, animated graphic with water ripples or gentle light effects.

  • Facebook Stories:

* Concept: A short video showing a glimpse of the bottle's texture or a subtle glow.

* Text Overlay: "What's your hydration goal this weekend? We've got something that will help you crush it, coming soon!"

* Call to Action: "Learn more!" (Link to sign-up page).


Week 2: Deep Dive into Benefits & Pre-Order Push

Theme: "Unlock Your Best Self: Hydration Meets Innovation." Start revealing key features and benefits, driving towards pre-orders.


Day 6: Monday - The Reveal (Partial)

  • Platform: Instagram, Facebook, LinkedIn
  • Content Type: High-Quality Image/Short Video
  • Key Message: Reveal a key design element or feature, link it to a benefit.
  • Instagram/Facebook:

* Headline: Meet the EcoSmart Water Bottle: More Than Just Hydration. ✨

* Body Text: We're thrilled to give you a first look at the EcoSmart Water Bottle! Crafted from premium recycled materials, its ergonomic design fits perfectly into your life. But that's just the beginning...

* Call to Action: Pre-order now and be among the first to experience it! [Link to pre-order page] #EcoSmartBottle #SustainableLiving #SmartHydration

* Suggested Visual: A stunning, well-lit photograph of the EcoSmart bottle, showcasing its sleek design and texture, perhaps held by someone in a dynamic pose.

  • LinkedIn:

* Headline: Innovation Unveiled: The EcoSmart Water Bottle's Sustainable Design

* Body Text: We're proud to introduce the EcoSmart Water Bottle, a testament to our commitment to both personal wellness and planetary health. Its elegant form and sustainable materials are just the surface of what makes this product revolutionary. Discover how we're merging design with responsibility.

* Call to Action: Explore the EcoSmart difference and sign up for updates: [Link to product page/pre-order]

Day 7: Tuesday - Feature Spotlight: Smart Tracking

  • Platform: Instagram Reel/Carousel, Twitter
  • Content Type: Explainer Video/Carousel (IG), Infographic/Text (Twitter)
  • Key Message: Detail the smart hydration tracking features.
  • Instagram Reel/Carousel:

* Concept: A dynamic Reel showing the bottle syncing with a smartphone app, displaying hydration data, personalized goals, and progress. Or a 3-slide carousel explaining: 1. "Track Every Sip", 2. "Personalized Goals", 3. "See Your Progress".

* On-Screen Text: "Never Miss a Sip." "Your Hydration Coach."

* Caption: Your personal hydration coach is here! The EcoSmart Water Bottle tracks your intake, sets personalized goals, and helps you achieve optimal hydration effortlessly. Say goodbye to dehydration headaches!

* Call to Action: Learn more about the smart features & pre-order today! [Link] #HydrationTracker #WellnessTech #EcoSmart

  • Twitter:

* Headline: Unlock Your Hydration Potential! πŸš€

* Body Text: Did you know the EcoSmart Water Bottle connects to an app to track your water intake & set personalized goals? It's time to hydrate smarter, not harder. #SmartBottle #HealthGoals

* Call to Action: Pre-order yours now! [Link]

Day 8: Wednesday - Lifestyle Integration

  • Platform: Facebook, Instagram Stories
  • Content Type: Lifestyle Image/Video Post, "Day in the Life" Story
  • Key Message: Show the bottle seamlessly fitting into daily routines.
  • Facebook:

* Headline: Your Perfect Companion, Everywhere You Go.

* Body Text: From morning commutes to gym sessions, office desks to hiking trails – the EcoSmart Water Bottle is designed to be your constant companion. Stylish, durable, and smart, it fits effortlessly into your active lifestyle.

* Call to Action: How will EcoSmart fit into YOUR day? Tell us below! Pre-order now: [Link]

* Suggested Visual: A collage or carousel of images showing the bottle in different settings (gym bag, office desk, hiking backpack, coffee shop table).

  • Instagram Stories:

* Concept: A "Day in the Life" sequence showing someone using the EcoSmart bottle from morning to evening (waking up, working out, at the office, relaxing). Use "Swipe Up" for more info.

* Text Overlay: "Morning routine," "Workout fuel," "Desk essential," "Evening wind-down."

* Call to Action: "Ready to upgrade your daily routine? Pre-order!" (Link to pre-order page).

Day 9: Thursday - Environmental Impact Deep Dive

  • Platform: LinkedIn, Facebook, Twitter
  • Content Type: Infographic/Short Article (LinkedIn), Video (FB), Stat Share (Twitter)
  • Key Message: Quantify the positive environmental impact of choosing EcoSmart.
  • LinkedIn:

* Headline: Beyond Hydration: The EcoSmart Bottle's Commitment to a Greener Planet

*

sharper4k Output

Social Media Campaign: Image Generation Deliverables

This document outlines the detailed specifications and prompts for generating high-quality visual content for your upcoming social media campaign. As part of the "sharper4k β†’ generate_image" step, this output provides actionable instructions to create compelling visuals that align with your campaign objectives and brand identity.


1. Executive Summary

This deliverable focuses on generating a comprehensive set of images for a fictional "AuraFit Smart Ring Launch" social media campaign. The goal is to create diverse, high-impact visuals across various platforms to build anticipation, announce the product, showcase its features, and drive engagement. The image prompts provided are designed to be specific and actionable for an AI image generation tool, covering different stages of the campaign lifecycle.


2. Fictional Campaign Overview: AuraFit Smart Ring Launch

To provide context for the image generation, we've outlined a hypothetical campaign:

  • Campaign Name: AuraFit Smart Ring: Your Wellness, Simplified.
  • Campaign Goal: To successfully launch the AuraFit Smart Ring, drive pre-orders/initial sales, and establish the product as a leading, stylish, and essential wearable for health and convenience.
  • Target Audience: Tech-savvy individuals, health and fitness enthusiasts, busy professionals seeking seamless integration of wellness tracking and smart functionality.
  • Key Message: Experience effortless health monitoring and smart convenience, elegantly integrated into your daily life with the AuraFit Smart Ring.
  • Brand Aesthetic: Modern, minimalist, sophisticated, health-conscious, empowering, and technologically advanced.

3. General Image Generation Guidelines

To ensure consistency and effectiveness across all generated visuals:

  • Brand Colors: Incorporate a palette of cool blues, muted greens, sophisticated grays, and clean whites, with metallic accents for the ring itself.
  • Lighting: Prefer natural, soft, and well-lit environments. Avoid harsh shadows unless intentionally used for dramatic effect.
  • Style: Clean, modern, high-fidelity, and slightly aspirational. Images should evoke a sense of calm, innovation, and well-being.
  • Diversity & Inclusion: Feature diverse models representing various ages, ethnicities, and lifestyles to ensure broad appeal.
  • Product Placement: The AuraFit Smart Ring should always be clearly visible, stylishly worn, and in focus when featured.
  • Resolution: All generated images should be high-resolution (e.g., 4K or higher) to allow for cropping and adaptation across platforms without loss of quality.
  • Composition: Utilize the rule of thirds where appropriate, ensuring clear focal points and ample negative space for text overlays.

4. Detailed Image Generation Prompts by Campaign Phase

Below are specific image prompts categorized by campaign phase, designed for an AI image generation tool. Each prompt includes context, key elements, and stylistic guidance.

Phase 1: Teaser & Anticipation (Pre-Launch)

Objective: Build intrigue and excitement without revealing the full product immediately.

1. Image Prompt: "Mysterious Aura"

  • Purpose: To create a sense of mystery and anticipation around a new, revolutionary health tech product.
  • Platform Focus: Instagram Feed, Facebook, Twitter/X.
  • Key Visual Elements:

A close-up of a human hand (ambiguous gender/ethnicity), with a subtle, futuristic, soft glowing light emanating from where a ring would* be worn on the finger.

* The ring itself is not fully visible, perhaps just a blurred outline or a hint of metallic sheen.

* The background is a soft, out-of-focus gradient of cool blues and muted greens, suggesting health and technology.

* Subtle abstract lines or particles indicating data flow or energy.

  • Style/Aesthetics: Ethereal, futuristic, minimalist, soft focus, high-tech, intriguing.
  • Composition: Shallow depth of field, focused on the hand/light, with ample space for potential text overlay like "Something Revolutionary is Coming."
  • Aspect Ratio: 1:1 (Instagram), 4:5 (Instagram Portrait), 16:9 (Facebook/Twitter).

2. Image Prompt: "Abstract Wellness Data"

  • Purpose: To hint at the advanced health tracking capabilities without showing the product directly.
  • Platform Focus: LinkedIn, Twitter/X, Instagram Stories.
  • Key Visual Elements:

* Abstract representation of health data: elegant, flowing lines or gentle waveforms in cool blue, green, and white tones.

* Subtle, futuristic UI elements (minimalist graphs, heart rate icons) integrated seamlessly into the background, not as a primary focus.

* A very subtle, out-of-focus metallic gleam or ring-like silhouette in the bottom corner, almost subliminal.

* Clean, uncluttered background, possibly a textured white or light gray surface.

  • Style/Aesthetics: Sophisticated, data-driven, clean, modern, abstract art, high-tech.
  • Composition: Dynamic yet balanced, with the abstract elements leading the eye towards the subtle hint of the product.
  • Aspect Ratio: 9:16 (Instagram Stories), 16:9 (LinkedIn/Twitter).

Phase 2: Product Launch & Feature Showcase

Objective: Officially announce the AuraFit Smart Ring, highlight its design and core benefits.

3. Image Prompt: "Hero Product Shot: AuraFit Elegance"

  • Purpose: To showcase the AuraFit Smart Ring in a clean, professional, and aspirational manner.
  • Platform Focus: All platforms (primary launch image).
  • Key Visual Elements:

* The AuraFit Smart Ring, perfectly in focus, positioned elegantly on a minimalist white or light gray pedestal/surface.

* The ring should be shown from a slight angle, revealing its sleek design and metallic finish (e.g., polished silver, matte black).

* Soft, studio-style lighting creating subtle reflections and highlights that emphasize its premium quality.

* Absolutely clean, seamless, bright background.

  • Style/Aesthetics: High-end product photography, minimalist, sophisticated, pristine, luxurious.
  • Composition: Center-focused or slightly off-center for visual interest, ample negative space.
  • Aspect Ratio: 1:1, 4:5, 16:9.

4. Image Prompt: "Lifestyle: Seamless Health Tracking"

  • Purpose: To demonstrate the AuraFit Smart Ring's integration into an active, health-conscious lifestyle.
  • Platform Focus: Instagram Feed, Facebook, TikTok (as a still frame).
  • Key Visual Elements:

* A diverse individual (e.g., woman in her 30s, activewear) engaged in a wellness activity like yoga, light jogging, or meditation outdoors (e.g., park, scenic balcony).

* The AuraFit Smart Ring is prominently and naturally worn on their finger.

* The individual is in a moment of calm or focus, subtly glancing at their hand or looking into the distance.

* Soft, natural lighting, vibrant but not oversaturated colors (greens, blues, warm skin tones).

* Background should be slightly blurred to keep focus on the individual and the ring.

  • Style/Aesthetics: Authentic, aspirational, healthy, serene, active, natural light photography.
  • Composition: Mid-shot or close-up, showing both the person's expression and the ring.
  • Aspect Ratio: 4:5, 1:1, 9:16 (for stories/TikTok).

5. Image Prompt: "Lifestyle: Smart Convenience On-the-Go"

  • Purpose: To illustrate the convenience features of the AuraFit Smart Ring in a daily setting.
  • Platform Focus: Facebook, LinkedIn, Twitter/X.
  • Key Visual Elements:

* A diverse individual (e.g., man in his 40s, business casual) making a contactless payment, opening a smart door, or receiving a subtle notification (indicated by a slight glow or gesture) in an urban or modern office setting (e.g., coffee shop, co-working space).

* The AuraFit Smart Ring is clearly visible on their finger, the focal point of the action.

* Other elements (coffee cup, laptop, payment terminal) are blurred but identifiable.

* Modern, clean architectural background.

  • Style/Aesthetics: Dynamic, efficient, modern, urban, professional, subtle tech integration.
  • Composition: Action-oriented, close-up on the hand and the interaction.
  • Aspect Ratio: 16:9, 1:1.

6. Image Prompt: "Feature Highlight: Sleep Tracking Visual"

  • Purpose: To visually represent a specific key feature, like advanced sleep tracking.
  • Platform Focus: Instagram Carousel, Facebook Ad, LinkedIn.
  • Key Visual Elements:

* A stylized, minimalist graphic showing a person's hand (with AuraFit Smart Ring) resting on a clean bedsheet.

* Overlayed on this, futuristic UI elements depicting sleep stages (REM, Deep, Light) with sleek, glowing lines and icons (e.g., moon, stars, brainwaves) emanating from the ring.

* Color palette focused on soothing blues, deep purples, and soft whites.

* Background is a soft, blurred bedroom setting, perhaps with a window showing dawn.

  • Style/Aesthetics: Infographic-style, clean UI design, calming, futuristic, informative.
  • Composition: Balanced, with clear separation between the physical element (hand/ring) and the data visualization.
  • Aspect Ratio: 1:1, 4:5.

Phase 3: Engagement & Call-to-Action

Objective: Encourage interaction, testimonials, and conversions.

7. Image Prompt: "Diverse User Testimonial Background"

  • Purpose: To provide a compelling visual backdrop for user testimonials or quotes.
  • Platform Focus: Instagram Stories, Facebook Posts, Twitter/X.
  • Key Visual Elements:

* A grid of 3-4 diverse individuals (various ages, ethnicities, and styles) smiling genuinely, each subtly wearing the AuraFit Smart Ring.

* Each individual should be in a different, relatable setting (e.g., working from home, walking outdoors, enjoying a hobby).

* The images should have a soft, slightly desaturated filter to allow for text overlay.

* Focus on authentic expressions of happiness and satisfaction.

  • Style/Aesthetics: Authentic, relatable, diverse, warm, friendly, testimonial-ready.
  • Composition: Grid layout or collage, ensuring each face is clearly visible.
  • Aspect Ratio: 1:1, 9:16.

8. Image Prompt: "Call-to-Action Banner: Pre-Order Now"

  • Purpose: A clear, concise visual to drive immediate action.
  • Platform Focus: All platforms (ads, end-of-post CTAs).
  • Key Visual Elements:

* A striking, close-up of the AuraFit Smart Ring on a finger, perhaps with a subtle, glowing "aura" effect.

* The background is a clean, gradient blend of brand colors (e.g., cool blue to muted green).

* A prominent, clear space for text overlay such as "Pre-Order Now" or "Learn More."

* Minimalist design, strong visual impact.

  • Style/Aesthetics: Direct, impactful, clean, modern, action-oriented.
  • Composition: Product as the central focus, surrounded by negative space for text.
  • Aspect Ratio: 16:9, 1:1, 9:16.

5. Technical Specifications & Aspect Ratios

For optimal performance across platforms, please ensure images are generated with the following considerations:

| Platform | Recommended Aspect Ratios | Common Resolution (px) | Notes |

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

| Instagram | 1:1 (Square), 4:5 (Portrait) | 1080x1080, 1080x1350 | Stories: 9:16 (1080x1920) |

| Facebook | 1:1, 4:5, 16:9 (Landscape) | 1200x1200, 1200x1500, 1200x630 | Link Posts: 1200x628 |

| Twitter/X | 16:9 (Landscape), 1:1 (Square) | 1600x900, 1200x1200 | In-stream photos |

| LinkedIn | 1.91:1 (Landscape), 1:1 (Square) | 120

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