Image Prompt & Brief Creator
Run ID: 69cb7f4861b1021a29a899152026-03-31Design
PantheraHive BOS
BOS Dashboard

Generate 10 professional AI image prompts, creative briefs, and visual direction specs

As your AI Image Prompt & Brief Creator, I have generated 10 comprehensive sets of professional AI image prompts, creative briefs, and visual direction specifications. Each set is designed to provide a clear, actionable foundation for generating high-quality AI imagery, suitable for various professional applications.


Deliverable: 10 Professional AI Image Prompts, Creative Briefs, and Visual Direction Specs

1. Concept: Futuristic Eco-Cityscape

  • Image Prompt:

A breathtaking hyperrealistic cityscape of a sustainable, futuristic metropolis at golden hour. Seamlessly integrated with lush vertical gardens, clean energy infrastructure (wind turbines, solar panels), and serene public spaces. Aerial view, vibrant, hopeful atmosphere, sharp focus, intricate details. Neo-futurism, 8k, photorealistic, cinematic lighting.

  • Creative Brief:

* Purpose: To visually represent innovation, sustainability, and aspirational urban living for a technology and urban development conference.

* Target Audience: Investors, urban planners, environmental advocates, and tech enthusiasts.

* Key Message: The future of urbanism is green, technologically advanced, and harmonious with nature.

* Desired Emotional Response: Awe, optimism, inspiration, and a sense of possibility.

  • Visual Direction Specs:

* Elements: Focus on green architecture, biophilic design, integrated public transport (e.g., sky trains, drone ports), clean energy solutions. Avoid visible cars or traditional traffic.

* Color Palette: Dominant greens (foliage), blues (sky, water features), silvers/grays (modern materials), with warm golden hues from the setting sun.

* Composition/Angle: High aerial perspective, showing the vastness and intricate layout of the city. Ensure depth and scale.

* Artistic Influences: Masdar City, Singapore's Gardens by the Bay, concepts from "Tomorrowland."

* Technical: Aspect Ratio 16:9, high resolution for large format displays.

2. Concept: Ancient Library of Alexandria Reimagined

  • Image Prompt:

A grand, ethereal depiction of the ancient Library of Alexandria, reimagined with soft, glowing magical elements. Vast, towering shelves overflowing with illuminated scrolls and ancient texts, leading to a central atrium with a celestial sphere. Soft, warm light emanating from within the books and the sphere. Scholars in flowing robes silently studying. Mystical, academic, inspiring, 4k, fantasy art, oil painting style.

  • Creative Brief:

* Purpose: To evoke a sense of timeless wisdom, knowledge, and wonder for an educational institution's marketing campaign or a historical documentary.

* Target Audience: Students, academics, historians, and individuals passionate about learning and ancient cultures.

* Key Message: Knowledge is a powerful, enduring, and almost magical force.

* Desired Emotional Response: Curiosity, reverence, inspiration, and a sense of peace.

  • Visual Direction Specs:

* Elements: Emphasize the sheer volume of knowledge, the grandeur of the architecture (classical Greek/Egyptian fusion), and subtle magical light effects. Scrolls should appear ancient but well-preserved.

* Color Palette: Earth tones (parchment, wood), deep blues and purples (night sky, celestial elements), soft gold (light sources).

* Composition/Angle: Wide-angle interior shot, looking up towards the celestial sphere or down a long aisle of books to emphasize scale.

* Artistic Influences: Romanticism, Pre-Raphaelite Brotherhood, fantasy concept art (e.g., Rivendell libraries).

* Technical: Aspect Ratio 3:2 or 4:3, suitable for print and digital.

3. Concept: Abstract Data Visualization as Art

  • Image Prompt:

A dynamic, abstract visualization of complex data, rendered as a swirling, luminous cosmic tapestry. Interconnected nodes, pathways, and glowing particles forming intricate patterns against a dark, deep space background. Fluid motion, vibrant neon colors (blues, purples, pinks) contrasting with subtle dark tones. High-tech, artistic, futuristic, 8k, digital art, generative art style.

  • Creative Brief:

* Purpose: To represent the beauty and complexity of big data, AI, or network systems in an engaging, non-literal way for a tech company's branding or presentation.

* Target Audience: Tech industry professionals, data scientists, innovators, and modern art enthusiasts.

* Key Message: Data is not just numbers; it's a dynamic, interconnected universe of insight and potential.

* Desired Emotional Response: Fascination, intrigue, sophistication, and a sense of cutting-edge innovation.

  • Visual Direction Specs:

* Elements: Focus on flowing lines, glowing points, and interconnected structures. Avoid literal graphs or charts. Emphasize depth and motion.

* Color Palette: Predominantly cool neon tones (electric blue, deep purple, magenta), with hints of bright cyan and subtle dark grays/blacks for contrast.

* Composition/Angle: Close-up on a particularly complex section, or a wider shot showing a large, swirling formation. Emphasize depth of field.

* Artistic Influences: Generative art, fractal art, light painting, "TRON: Legacy" aesthetics.

* Technical: Aspect Ratio 16:9, ideal for digital screens, presentations, and website headers.

4. Concept: Minimalist Coffee Shop Interior

  • Image Prompt:

A serene, minimalist coffee shop interior bathed in soft, natural daylight. Clean lines, light wood furniture, white walls, and subtle greenery. A single, perfectly crafted latte on a simple wooden table, steam gently rising. No people visible. Hygge, calm, inviting, warm, 4k, architectural photography style, shallow depth of field.

  • Creative Brief:

* Purpose: To convey a sense of calm, quality, and modern comfort for a coffee brand, interior design portfolio, or lifestyle blog.

* Target Audience: Young professionals, remote workers, design enthusiasts, and coffee lovers.

* Key Message: A perfect space for relaxation, focus, and enjoying high-quality coffee.

* Desired Emotional Response: Peace, comfort, sophistication, and a desire to be in the space.

  • Visual Direction Specs:

* Elements: Focus on natural materials (wood, ceramics), subtle textures, and abundant natural light. The latte art should be impeccable. Minimal clutter.

* Color Palette: Dominant neutrals (whites, creams, light grays), warm wood tones, and subtle greens from plants.

* Composition/Angle: Eye-level shot, focusing on the table with the coffee, but showing enough of the surrounding interior to establish the atmosphere. Rule of thirds.

* Artistic Influences: Scandinavian design, Japanese minimalism, "Hygge" aesthetic.

* Technical: Aspect Ratio 5:4 or 4:3, suitable for social media and editorial use.

5. Concept: Mystical Forest with Bioluminescent Flora

  • Image Prompt:

A dense, ancient forest at twilight, filled with glowing bioluminescent flora and fauna. Towering trees with luminescent moss, glowing mushrooms, and ethereal floating spores illuminating a winding path. A gentle mist hangs in the air, creating a magical, otherworldly atmosphere. Deep shadows, vibrant light, mysterious, enchanting, 8k, fantasy landscape, cinematic realism.

  • Creative Brief:

* Purpose: To create a sense of wonder and enchantment for a fantasy game, book cover, or nature documentary exploring unique ecosystems.

* Target Audience: Gamers, fantasy readers, nature enthusiasts, and those seeking escapism and magic.

* Key Message: Nature holds incredible, hidden beauty and mystery.

* Desired Emotional Response: Awe, wonder, curiosity, and a touch of serene mystery.

  • Visual Direction Specs:

* Elements: Focus on diverse bioluminescent plant life (e.g., ferns, flowers, fungi), subtle glowing insects or small creatures, and the interplay of light and shadow. The path should invite exploration.

* Color Palette: Rich blues, deep purples, vibrant greens, and soft yellows/golds for the glowing elements, contrasting with dark forest greens and browns.

* Composition/Angle: Low-angle shot looking down a path, or a wide shot emphasizing the scale of the glowing forest. Use leading lines.

* Artistic Influences: Avatar (Pandora), "FernGully," fantasy concept art, deep-sea bioluminescence.

* Technical: Aspect Ratio 21:9 or 16:9, for a wide, immersive cinematic feel.

6. Concept: High-Tech Product Showcase (Sleek Smartwatch)

  • Image Prompt:

A close-up, highly detailed studio shot of a sleek, minimalist smartwatch on a smooth, reflective dark surface. The watch face displays a sophisticated UI with subtle glowing elements. Soft, dramatic side lighting highlighting the premium materials (brushed metal, sapphire glass) and precision engineering. Dark, luxurious background with subtle ambient light. Professional, elegant, cutting-edge, 8k, product photography, dramatic lighting.

  • Creative Brief:

* Purpose: To showcase the design, quality, and advanced features of a new premium tech product for launch campaigns and e-commerce.

* Target Audience: Early adopters, tech enthusiasts, luxury consumers, and professionals.

* Key Message: This product is the pinnacle of design, innovation, and functionality.

* Desired Emotional Response: Desire, admiration, trust in quality, and excitement for innovation.

  • Visual Direction Specs:

* Elements: Focus on the smartwatch itself. Ensure the UI is clear but not overwhelming. Subtle reflections on the surface to add depth. No distractions.

* Color Palette: Predominantly dark grays, blacks, silvers, with subtle pops of color from the UI (e.g., electric blue, soft green).

* Composition/Angle: Macro close-up, slightly angled to show depth and texture. Rule of thirds, placing the watch slightly off-center.

* Artistic Influences: Apple product photography, high-end automotive advertisements, minimalist design.

* Technical: Aspect Ratio 1:1 or 4:5, ideal for social media product shots and e-commerce listings.

7. Concept: Portrait of a Wise Elder in a Traditional Setting

  • Image Prompt:

A dignified, authentic portrait of a wise elder from a specific cultural background (e.g., a Maasai elder, a Tibetan monk, an indigenous tribal leader). Seated calmly in a traditional setting, surrounded by subtle cultural artifacts. Deep, knowing eyes, weathered skin, expressing resilience and wisdom. Soft, natural light illuminating facial features. Authentic, respectful, poignant, 4k, documentary photography style, shallow depth of field.

  • Creative Brief:

* Purpose: To convey wisdom, cultural heritage, and the beauty of human experience for a non-profit, cultural exhibition, or educational material.

* Target Audience: Anthropologists, humanitarians, students, and general public interested in global cultures.

* Key Message: Respect for elders and appreciation for diverse cultural wisdom.

* Desired Emotional Response: Respect, contemplation, empathy, and a sense of connection to heritage.

  • Visual Direction Specs:

* Elements: Focus on facial expression and traditional attire/adornments. The background should be relevant to the culture but not distracting. Avoid stereotypes; aim for authentic representation.

* Color Palette: Earthy tones, natural dyes, and colors specific to the chosen cultural attire. Soft, warm lighting.

* Composition/Angle: Medium close-up, head-and-shoulders shot, direct eye contact (or slightly off-gaze for introspection).

* Artistic Influences: Steve McCurry's portraiture, National Geographic photography, classical portrait painting.

* Technical: Aspect Ratio 3:4 or 2:3, suitable for print, editorial, and gallery display.

8. Concept: Dynamic Sports Action Shot (Surfing)

  • Image Prompt:

A powerful, dramatic action shot of a professional surfer riding a massive, curling wave at sunset. The surfer is perfectly balanced, spray dramatically flying off the board. Golden light reflecting off the water and the wave's peak. Intense, energetic, awe-inspiring, 8k, sports photography, motion blur on water, sharp focus on surfer.

  • Creative Brief:

* Purpose: To capture the thrill, skill, and beauty of extreme sports for an athletic brand, sports magazine, or travel agency promoting adventure.

* Target Audience: Athletes, sports enthusiasts, adventurers, and aspirational individuals.

* Key Message: Push your limits, embrace the power of nature, and achieve greatness.

* Desired Emotional Response: Excitement, inspiration, adrenaline, and admiration.

  • Visual Direction Specs:

* Elements: Focus on the surfer's form, the raw power of the wave, and the dynamic interaction between them. Ensure water spray is dramatic.

* Color Palette: Warm oranges, yellows, and reds from the sunset, contrasting with deep blues and greens of the ocean.

* Composition/Angle: Low-angle shot from the water, looking up at the surfer in the barrel of the wave, or a wider shot showing the scale of the wave.

* Artistic Influences: Red Bull photography, surf magazine covers, extreme sports videography stills.

* Technical: Aspect Ratio 16:9 or 2:1, ideal for large screens and dynamic visual impact.

9. Concept: Surreal Dreamscape with Floating Islands

  • Image Prompt:

A whimsical, surreal dreamscape featuring impossibly floating islands in a vibrant, pastel-colored sky. Waterfalls cascade from the islands into the clouds below. A lone, ancient tree with glowing leaves stands on the largest island. Soft, diffused light, magical, serene, ethereal, 8k, digital painting, fantasy realism.

  • Creative Brief:

* Purpose: To evoke imagination, wonder, and a sense of peaceful escapism for creative media, mental wellness apps, or children's book illustrations.

* Target Audience: Artists, dreamers, fantasy lovers, and anyone seeking imaginative inspiration or calm.

* Key Message: Imagination knows no bounds; find peace in the impossible.

* Desired Emotional Response: Wonder, tranquility, inspiration, and a sense of calm.

  • Visual Direction Specs:

* Elements: Focus on varied island shapes, the physics-defying waterfalls, and the glowing tree. Subtle, fluffy clouds. Perhaps a distant, gentle moon or sun.

* Color Palette: Soft pastels (lavender, mint green, sky blue, pale pink, peach), with warm, gentle

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