Email Marketing Sequence
Run ID: 69b6fa0e896970b089464a8c2026-03-29Marketing
PantheraHive BOS
BOS Dashboard

Build a complete email marketing sequence with welcome series, nurture campaigns, re-engagement flows, and conversion-optimized copy.

Email Marketing Sequence: AI Technology (Test Run)

Workflow Execution Summary:

This workflow has successfully generated a comprehensive email marketing sequence tailored for the topic of "AI Technology," encompassing a welcome series, nurture campaigns, re-engagement flows, and conversion-optimized copy principles. The goal is to build a highly engaged subscriber base, educate them on AI, and guide them towards desired actions (e.g., content consumption, product exploration, community participation).


1. Overview and Strategic Goals

Objective: To establish our brand as a leading voice in AI Technology, educate subscribers, foster community engagement, and drive conversions for relevant products, services, or premium content.

Target Audience:

  • Tech Enthusiasts: Individuals passionate about new technologies, looking to understand AI's impact and future.
  • Business Professionals: Decision-makers, managers, and entrepreneurs seeking to leverage AI for business growth and efficiency.
  • Developers/Researchers: Those building or researching AI solutions, looking for advanced insights, tools, and industry trends.

Key Performance Indicators (KPIs):

  • Open Rate: % of recipients who open the email.
  • Click-Through Rate (CTR): % of recipients who click on a link in the email.
  • Conversion Rate: % of recipients who complete a desired action (e.g., download a whitepaper, register for a webinar, make a purchase).
  • Unsubscribe Rate: % of recipients who opt out.
  • Engagement Rate: Clicks per opener, replies, forwards.
  • List Growth Rate: Net increase in subscribers.

2. Welcome Series (3 Emails)

Purpose: To warmly greet new subscribers, introduce our brand and value proposition, set expectations, and deliver immediate value related to AI Technology.

Trigger: Immediate upon new subscriber signup.

Email 1: Welcome to the Future of AI!

  • Subject Line: Welcome to [Your Brand Name]! Your Journey into AI Begins Now.
  • Preheader: Unlock cutting-edge insights, trends, and breakthroughs in AI.
  • Body:

* Greeting: "Welcome aboard, [Subscriber Name]!"

* Brand Introduction: Briefly introduce [Your Brand Name] and its mission in the AI space (e.g., "Your go-to source for demystifying AI," "Empowering you with AI knowledge").

* What to Expect: Clearly state the type of content they'll receive (e.g., weekly AI news, in-depth analyses, expert interviews, practical applications).

* Immediate Value: Offer a valuable, easily digestible resource.

* Example Resource: "To get started, here's our exclusive guide: 'The Top 5 AI Trends Shaping 2024' – a quick read to bring you up to speed!"

* Call to Action (CTA):

* Button: "Download Your Free AI Trends Guide"

* Link: Link to a dedicated landing page or direct download.

* Social Proof/Engagement: "Join over [X] AI enthusiasts already exploring the future with us!"

  • Sender: [Your Brand Name]
  • Frequency: Immediately after signup.

Email 2: Demystifying AI: What You Need to Know

  • Subject Line: AI Explained: From Basics to Breakthroughs (No Jargon Required!)
  • Preheader: We break down complex AI concepts into actionable insights.
  • Body:

* Re-engagement: "Hope you enjoyed our AI Trends Guide! Today, let's dive a little deeper..."

* Problem/Solution: Address a common misconception or challenge regarding AI (e.g., "Feeling overwhelmed by AI jargon?"). Position your brand as the solution provider.

* Educational Content: Share a foundational piece of content (blog post, infographic, short video) that explains a core AI concept in an accessible way.

* Example Content: "Check out our latest article: 'Understanding Machine Learning vs. Deep Learning: A Beginner's Guide.'"

* Call to Action (CTA):

* Button: "Read the Full Article"

* Link: Link to the blog post.

* Engagement Question: "What AI topic are you most curious about? Reply and let us know!"

  • Sender: [Your Brand Name]
  • Frequency: 2 days after Email 1.

Email 3: Your AI Journey: What's Next?

  • Subject Line: Personalize Your AI Experience + Exclusive Resource!
  • Preheader: Tell us your interests and get a bonus AI toolkit.
  • Body:

* Recap: "We've covered the basics and future trends. Now, let's tailor your AI journey."

* Segmentation Opportunity: Ask subscribers about their specific interests in AI (e.g., "Are you interested in AI for business, development, ethics, or general news?"). Provide preference links or a quick survey.

* Bonus Value: Offer another exclusive resource as an incentive for updating preferences or engaging.

* Example Resource: "As a thank you for helping us tailor your content, here's our 'Essential AI Tools & Resources Toolkit'!"

* Call to Action (CTA):

* Button 1: "Update Your Preferences"

* Button 2: "Get Your AI Toolkit Now"

* Link: Link to preference center/survey and toolkit download page.

* Community Invitation: "Don't forget to join our growing community on [Social Media Platform] for daily updates and discussions!"

  • Sender: [Your Brand Name]
  • Frequency: 3-4 days after Email 2.

3. Nurture Campaign (Ongoing, Segmented)

Purpose: To continuously educate subscribers, build brand authority, showcase practical applications of AI, and gently guide them towards deeper engagement or specific product/service offerings.

Trigger: After Welcome Series completion, or based on segmentation and engagement scores.

Email 1: The Latest in AI Innovation

  • Subject Line: Breaking News: [Specific AI Breakthrough] & What It Means For You
  • Preheader: Stay ahead of the curve with our curated AI news and analysis.
  • Body:

* Hook: "The world of AI is moving fast! Here’s the most significant development you need to know this week..."

* Curated Content: Share a summary of a recent, impactful AI news story or research breakthrough. Provide expert commentary or analysis from your brand.

* Deep Dive: Link to a full blog post, whitepaper, or video discussing the implications.

* Call to Action (CTA):

* Button: "Read the Full Analysis"

* Link: Link to the detailed content.

* Related Content: "Explore more: [Link to related article/resource]"

  • Sender: [Your Brand Name]
  • Frequency: Weekly/Bi-weekly (e.g., every Tuesday).

Email 2: AI in Action: [Industry/Use Case] Success Story

  • Subject Line: How AI Transformed [Company Name/Industry] – A Real-World Case Study
  • Preheader: Discover practical applications and measurable results of AI.
  • Body:

* Storytelling: "Numbers speak louder than words. See how AI is making a tangible difference..."

* Case Study/Use Case: Present a compelling success story of AI implementation in a specific industry or for a particular problem. Highlight challenges, the AI solution, and the measurable results.

* Key Learnings: Summarize key takeaways for the reader.

* Call to Action (CTA):

* Button: "Explore the Full Case Study"

* Link: Link to the case study page or downloadable PDF.

* Webinar/Event: "Want to learn how to apply AI in your business? Register for our upcoming webinar: '[Webinar Title]'"

  • Sender: [Your Brand Name]
  • Frequency: Bi-weekly (e.g., every other Thursday).

Email 3: Expert Insights: Navigating the Ethical AI Landscape

  • Subject Line: Beyond the Code: An Expert's Take on Ethical AI
  • Preheader: Exclusive interview with [Expert Name] on the future of responsible AI.
  • Body:

* Authority Building: "In an era of rapid AI advancement, understanding its ethical implications is crucial. We sat down with [Expert Name]..."

* Thought Leadership: Share excerpts from an interview, an opinion piece, or a summary of a panel discussion featuring an AI expert (internal or external). Focus on a critical or thought-provoking aspect of AI.

* Discussion Points: Encourage subscribers to share their thoughts.

* Call to Action (CTA):

* Button: "Watch/Read the Full Interview"

* Link: Link to the video or article.

* Community Engagement: "Join the conversation! What are your biggest concerns about AI ethics? [Link to Forum/Social Post]"

  • Sender: [Your Brand Name]
  • Frequency: Monthly.

Email 4: [Your Product/Service] Spotlight: Solving [Specific AI Problem]

  • Subject Line: Solve Your [Specific AI Problem] with [Your Product/Service Name]
  • Preheader: See how our solution can streamline your AI initiatives.
  • Body:

* Pain Point: "Are you struggling with [common AI challenge, e.g., data labeling, model deployment, understanding AI analytics]?"

* Solution Introduction: Introduce a specific product, feature, or service from your brand that directly addresses this pain point.

* Benefits: Highlight key benefits and how it simplifies the user's life or improves their results.

* Testimonial/Social Proof: Include a short, impactful quote from a satisfied user.

* Call to Action (CTA):

* Button: "Learn More About [Product/Service Name]"

* Link: Link to the product/service page.

* Incentive (Optional): "Limited-time offer: Get [X]% off your first month!"

  • Sender: [Your Brand Name]
  • Frequency: Monthly, or based on user segmentation (e.g., users who have viewed product pages).

4. Re-engagement Flow (3 Emails)

Purpose: To identify and re-engage inactive subscribers who haven't opened or clicked emails for a defined period (e.g., 60-90 days).

Trigger: No email opens or clicks for 60-90 days.

Email 1: We Miss You! Is Everything Okay with Your AI Journey?

  • Subject Line: Are We Still Connecting? Important Update from [Your Brand Name]
  • Preheader: We've missed you! Here's what you might have missed in AI.
  • Body:

* Acknowledge Inactivity: "It looks like you haven't engaged with our emails recently, and we miss having you around!"

* Value Reminder: Briefly remind them of the value your brand provides (e.g., "We're still delivering the latest AI news, expert insights, and practical guides.").

* Quick Win/Highlight: Share a link to one of your most popular or recent pieces of content that might pique their interest.

* Call to Action (CTA):

* Button: "Catch Up on the Latest AI Trends"

* Link: Link to your blog homepage or a curated "best of" content page.

* Implicit Question: "Is this still relevant to you?"

  • Sender: [Your Brand Name]
  • Frequency: Day 0 of re-engagement trigger.

Email 2: Your Feedback Matters: Help Us Improve Your AI Experience

  • Subject Line: Quick Question: What AI Content Do You Want to See?
  • Preheader: Help us tailor your content, or update your preferences.
  • Body:

* Direct Question: "We want to make sure you're getting the most out of our AI insights. What kind of content are you most interested in right now?"

* Preference Update: Provide options for them to update their content preferences.

* Example Options: "Click below to tell us:

* I want more AI news updates.

* I'm interested in practical AI applications for business.

* I prefer deep technical dives into AI research.

* I just want to stay informed generally."

* Call to Action (CTA):

* Button: "Update My Preferences"

* Link: Link to a preference center or a simple survey.

* New Offer (Optional): "As a thank you for your feedback, here's a free [exclusive AI checklist/mini-guide]!"

  • Sender: [Your Brand Name]
  • Frequency: 5-7 days after Email 1.

Email 3: Last Chance to Stay Connected: Your AI Updates from [Your Brand Name]

  • Subject Line: We'll Miss You! Your Subscription to [Your Brand Name] Updates
  • Preheader: Don't miss out on future AI breakthroughs. Act now to stay subscribed.
  • Body:

* Clear Statement: "It looks like we haven't heard from you in a while, and we respect your inbox. If we don't hear back, we'll assume you're no longer interested in our AI updates and will remove you from our mailing list."

* Final Value Proposition: Reiterate the core value one last time. "We'd love to keep sharing cutting-edge AI insights, exclusive content, and practical guides with you."

* Clear Call to Action: Make it easy to stay subscribed.

* Call to Action (CTA):

* Button: "Yes, Keep Me Subscribed!"

* Link: Link to a "re-subscribe" or "confirm interest" page.

* Unsubscribe Option: Clearly state that if they take no action, they will be unsubscribed. Provide an explicit unsubscribe link as well.

  • Sender: [Your Brand Name]
  • Frequency: 7-10 days after Email 2.
  • Action: If no engagement, remove from active list.

5. Conversion-Optimized Copy Principles

Integrating these principles across all emails ensures maximum effectiveness:

  • Benefit-Driven Language: Always focus on "what's in it for the subscriber." Instead of "We offer AI tools," say "Streamline your AI development and save hours with our intuitive tools."
  • Clear and Concise: Get to the point quickly. Use short paragraphs, bullet points, and clear headings. Avoid jargon where possible, or explain it simply.
  • Strong, Single Call to Action (CTA): Each email should have a primary goal and a single, prominent CTA button. Use action-oriented language (e.g., "Discover More," "Download Now," "Start Your Free Trial," "Register Here").
  • Sense of Urgency/Scarcity (Judiciously): For specific promotions or events, create a gentle sense of urgency ("Limited spots available," "Offer ends soon") without being overly aggressive.
  • Personalization: Use merge tags for names ([Subscriber Name]). Segment content based on user preferences or behavior to deliver highly relevant messages.
  • Social Proof & Authority: Include testimonials, statistics, expert quotes, or mentions of reputable partners to build trust and credibility.
  • Visual Appeal: Use compelling images, GIFs, or videos that complement the message and break up text. Ensure mobile responsiveness.
  • Emotional Connection: Tap into the reader's aspirations, challenges, or curiosity related to AI.
  • Scannability: Design emails for quick reading on any device. Use bold text for emphasis.
  • A/B Testing Mentality: Continuously test subject lines, CTAs, email body copy, and send times to optimize performance.

6. Implementation Notes & Best Practices

  • Email Platform: Utilize an email service provider (ESP) like Mailchimp, HubSpot, ActiveCampaign, or Braze to automate these sequences, manage segmentation, and track analytics.
  • Segmentation: Continuously refine segments based on engagement, content consumed, demographics, and explicit preferences. This allows for highly targeted nurture campaigns.
  • A/B Testing: Regularly test different subject lines, preheaders, CTAs, image choices, and even email lengths to identify what resonates best with your audience.
  • Analytics & Reporting: Monitor key metrics (open rates, CTR, conversion rates, unsubscribe rates) for each email and overall sequence. Use insights to iterate and improve.
  • Mobile Optimization: Ensure all email designs are fully responsive and look great on mobile devices, as a significant portion of opens occur on smartphones.
  • Sender Reputation: Maintain a good sender reputation by avoiding spammy language, getting proper consent, and regularly cleaning your list of inactive subscribers.
  • Compliance: Adhere to email marketing regulations such as GDPR (General Data Protection Regulation) and CAN-SPAM Act. Ensure clear unsubscribe options and privacy policies.
  • Integration: Integrate your email platform with your CRM, website analytics, and other marketing tools for a holistic view of customer journeys.
  • Content Calendar: Plan your nurture campaign content well in advance, aligning it with product launches, industry events, and seasonal themes.

This comprehensive email marketing sequence provides a robust framework to engage, educate, and convert your audience interested in AI Technology. Consistent implementation and optimization will drive sustained growth and engagement.

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