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

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

Image Prompt & Brief Creator: Professional Deliverables

This document presents 10 detailed professional AI image prompts, accompanied by creative briefs and comprehensive visual direction specifications. Each entry is designed to provide precise guidance for generating high-quality, impactful AI imagery across a diverse range of styles and concepts.


1. Futuristic Urban Oasis

Image Prompt:

"Hyperrealistic, ultra-detailed, serene futuristic urban park at dawn, towering biophilic skyscrapers integrated with lush vertical gardens, crystal-clear reflective water features, solar pathways glowing softly, few people engaged in calm activities like yoga or meditation, soft ambient light, volumetric fog, 8k, cinematic, utopian aesthetic."

Creative Brief:

  • Concept: To envision a tranquil, sustainable future where nature and advanced technology coexist harmoniously within a bustling metropolis.
  • Target Audience: Environmental organizations, urban planners, tech innovators, wellness brands.
  • Key Message: The future can be beautiful, sustainable, and peaceful, offering a sanctuary from the urban rush.
  • Usage: Promotional material for smart city initiatives, environmental campaigns, corporate sustainability reports.

Visual Direction Specs:

  • Style: Hyperrealism, Utopian Sci-Fi, Architectural Visualization.
  • Composition: Wide shot, slightly elevated perspective looking over the park, showcasing the integration of buildings and nature. Rule of thirds for key elements.
  • Lighting: Soft, diffused morning light, gentle sunbeams breaking through, subtle glow from integrated tech elements.
  • Colors: Predominantly greens, blues, whites, and soft grays, with accents of warm amber from solar paths.
  • Mood: Serene, hopeful, inspiring, peaceful, clean.
  • Elements: Living walls, transparent solar panels, calm reflective pools, discreet futuristic furniture, diverse and subtly active individuals.
  • Sharpness: Ultra-sharp details on foliage, water, and architectural textures.

2. Mystical Forest Guardian

Image Prompt:

"Ethereal, fantastical, ancient forest guardian creature made of intertwining roots and glowing moss, luminescent eyes, standing majestically amidst a dense, ancient forest, shafts of magical light piercing through the canopy, swirling mist, bioluminescent flora, cinematic fantasy art, 16k, highly detailed, dramatic lighting."

Creative Brief:

  • Concept: To create a powerful, enigmatic, and magical protector of nature, evoking a sense of ancient wisdom and untamed beauty.
  • Target Audience: Fantasy genre enthusiasts, environmental advocacy groups, game developers, illustrators.
  • Key Message: Nature holds ancient secrets and powerful guardians, deserving of respect and wonder.
  • Usage: Book cover art, game concept art, fantasy illustration, environmental campaign visuals.

Visual Direction Specs:

  • Style: Dark Fantasy, Mythological Art, Ethereal Realism.
  • Composition: Medium shot of the creature, slightly low angle to emphasize its grandeur. Frame with ancient trees and magical light.
  • Lighting: Dramatic chiaroscuro, with strong magical light sources highlighting the creature and bioluminescent elements, deep shadows in the background.
  • Colors: Deep emerald greens, earthy browns, mystical purples and blues for glowing elements, contrasting with warm light shafts.
  • Mood: Mysterious, awe-inspiring, powerful, ancient, magical.
  • Elements: Intricate root patterns forming the creature's body, glowing moss and fungi, ancient trees with gnarled branches, swirling mist.
  • Sharpness: Focus on the creature's intricate details, with a slightly softer, dreamlike background.

3. Minimalist Luxury Skincare Product Shot

Image Prompt:

"Clean, minimalist, high-end product photography of a sleek, frosted glass skincare bottle with a silver pump, placed on a pristine white marble surface, soft studio lighting, subtle elegant shadows, a single delicate dewdrop on the bottle, reflective surface, macro detail, ultra-sharp focus, professional studio shot, 4k."

Creative Brief:

  • Concept: To convey elegance, purity, and sophistication for a luxury skincare brand, emphasizing the product's premium quality through minimalist aesthetics.
  • Target Audience: High-end skincare consumers, beauty editors, luxury lifestyle publications.
  • Key Message: Purity, efficacy, and understated luxury in skincare.
  • Usage: E-commerce product pages, magazine advertisements, social media campaigns for luxury brands.

Visual Direction Specs:

  • Style: Modern Minimalist, Luxury Product Photography.
  • Composition: Eye-level, centered or slightly off-center close-up of the bottle. Ample negative space.
  • Lighting: Softbox studio lighting, even and diffused, to minimize harsh reflections and create subtle, elegant gradients.
  • Colors: Predominantly white, silver, and the natural tones of the frosted glass/product, with very subtle cool undertones.
  • Mood: Clean, sophisticated, pure, calm, elegant.
  • Elements: Frosted glass texture, metallic silver pump, perfect dewdrop, seamless white marble background.
  • Sharpness: Extreme sharpness on the product label, texture of the glass, and the dewdrop.

4. Abstract Expressionist Symphony

Image Prompt:

"Dynamic, vibrant abstract expressionist painting, a symphony of bold brushstrokes and splashes of primary and secondary colors (red, blue, yellow, green, orange), energetic movement, thick impasto texture, sense of controlled chaos, large canvas, art gallery lighting, highly textured, 8k."

Creative Brief:

  • Concept: To capture the raw emotion and spontaneous energy of abstract expressionism, creating a visually stimulating and thought-provoking piece.
  • Target Audience: Art collectors, interior designers, creative agencies, contemporary art enthusiasts.
  • Key Message: Art as a powerful expression of emotion and energy, challenging traditional forms.
  • Usage: Digital art display, gallery exhibition promotion, corporate art collection, creative branding.

Visual Direction Specs:

  • Style: Abstract Expressionism, Modern Art.
  • Composition: Full frame, dynamic balance of color and form, no discernible subject, pure abstraction.
  • Lighting: Even, soft gallery lighting to highlight texture and color without harsh shadows.
  • Colors: Dominant use of vivid primary and secondary colors, with some darker accents for contrast.
  • Mood: Energetic, passionate, expressive, sophisticated, chaotic yet harmonious.
  • Elements: Visible brushstrokes, paint drips, layered textures, a sense of depth created by overlapping colors.
  • Sharpness: Detailed texture of paint and canvas, sharp edges where colors meet.

5. Vintage Film Noir Detective

Image Prompt:

"Monochromatic portrait of a thoughtful detective in a fedora and trench coat, 1940s film noir style, dramatic chiaroscuro lighting, subtle cigarette smoke wafting, gritty urban backdrop (blurred), high contrast, medium close-up, vintage film grain, cinematic, 8k."

Creative Brief:

  • Concept: To evoke the classic, mysterious, and atmospheric aesthetic of 1940s film noir, capturing the essence of a troubled but determined protagonist.
  • Target Audience: Film buffs, fans of crime fiction, period drama producers, vintage fashion enthusiasts.
  • Key Message: Intrigue, mystery, and timeless style from a bygone era.
  • Usage: Movie poster, book cover, editorial illustration for historical features, vintage brand promotion.

Visual Direction Specs:

  • Style: Film Noir, Vintage Photography, Black & White Cinema.
  • Composition: Medium close-up, slightly off-center, with the detective's gaze directed slightly away from the viewer, implying deep thought or observation.
  • Lighting: Hard, directional lighting from a single source (e.g., a window or streetlamp), creating deep shadows and strong highlights (chiaroscuro).
  • Colors: Strictly black and white, with a wide range of grays and deep blacks. Subtle sepia tone optional.
  • Mood: Mysterious, gritty, contemplative, melancholic, dramatic.
  • Elements: Fedora hat casting shadow over eyes, trench coat details, subtle smoke, rain-streaked window or dimly lit street in the very soft background.
  • Sharpness: Sharp focus on the detective's face and clothing details, with a soft, atmospheric background.

6. Dynamic Sports Action: Basketball Dunk

Image Prompt:

"High-speed action shot of a professional basketball player mid-air executing a powerful dunk, intense focus on face, muscles tensed, sweat flying, dynamic motion blur on the ball and limbs, vibrant arena lighting, cheering crowd in blurred background, ultra-sharp detail on player, dramatic angle, 8k, sports photography aesthetic."

Creative Brief:

  • Concept: To capture the peak moment of athletic power and determination in professional basketball, conveying excitement and peak performance.
  • Target Audience: Sports enthusiasts, athletic wear brands, sports media, fitness industry.
  • Key Message: Strength, agility, determination, and the thrill of competition.
  • Usage: Sports advertising, magazine cover, social media content for sports brands, motivational posters.

Visual Direction Specs:

  • Style: Sports Photography, Dynamic Action.
  • Composition: Low-angle shot looking up at the player, emphasizing height and power. Player centered or slightly leading into the frame.
  • Lighting: Bright, even arena lighting with strong highlights on the player's skin and jersey, creating a sense of energy.
  • Colors: Vibrant team colors (e.g., reds, blues, oranges) against the polished court and blurred crowd.
  • Mood: Exhilarating, powerful, intense, energetic, triumphant.
  • Elements: Basketball net, player's jersey, sweat droplets, focused facial expression, motion blur on extremities.
  • Sharpness: Pin-sharp focus on the player's face and core body, with controlled motion blur on the ball and limbs to convey speed.

7. Cozy Autumnal Reading Nook

Image Prompt:

"Warm, inviting, and cozy autumnal reading nook by a large window, golden hour sunlight streaming in, soft blankets draped over a comfortable armchair, a steaming mug of tea on a rustic wooden side table, open book, fall leaves visible outside the window, warm lighting, atmospheric, hygge aesthetic, 4k."

Creative Brief:

  • Concept: To evoke a sense of comfort, warmth, and peaceful relaxation, ideal for a cozy autumn day spent indoors.
  • Target Audience: Home decor brands, lifestyle bloggers, book publishers, tea/coffee companies.
  • Key Message: Comfort, relaxation, and the simple joys of a quiet moment.
  • Usage: Home decor inspiration, lifestyle marketing, seasonal promotions, book club visuals.

Visual Direction Specs:

  • Style: Hygge, Cozy Interior, Lifestyle Photography.
  • Composition: Medium shot, slightly wide to capture the nook and the view outside. Rule of thirds for the armchair and window.
  • Lighting: Warm, soft golden hour light, creating long shadows and a glowing effect. Ambient light from a nearby lamp if present.
  • Colors: Dominant warm tones: oranges, reds, browns, deep yellows, with soft neutrals for the furniture.
  • Mood: Cozy, peaceful, relaxing, inviting, warm, nostalgic.
  • Elements: Knitted blankets, plush cushions, ceramic mug with steam, open book, autumn foliage outside.
  • Sharpness: Sharp focus on the immediate foreground elements (mug, book, blanket texture), with a slightly softer background.

8. Macro Detail: Dew-Kissed Spiderweb

Image Prompt:

"Extreme macro photography of a delicate spiderweb intricately woven between blades of grass, covered in countless tiny, glistening dewdrops, golden hour backlighting creating sparkling bokeh, shallow depth of field, natural light, intricate detail, breathtaking clarity, 8k, nature photography."

Creative Brief:

  • Concept: To highlight the intricate beauty and delicate complexity of nature on a micro-scale, emphasizing precision and natural wonder.
  • Target Audience: Nature photographers, scientific publications, art prints, environmental education.
  • Key Message: The hidden beauty and intricate design present in the smallest corners of nature.
  • Usage: Fine art prints, scientific illustrations, nature documentaries, educational materials.

Visual Direction Specs:

  • Style: Macro Photography, Nature Art.
  • Composition: Extreme close-up, filling the frame with the spiderweb and dewdrops. Focus on a central section of the web.
  • Lighting: Backlighting from a low sun (golden hour) to make the dewdrops sparkle and create a halo effect around the web.
  • Colors: Natural greens of grass, silvery-white of dew, warm golden hues from the sun's reflection.
  • Mood: Delicate, magical, intricate, peaceful, awe-inspiring.
  • Elements: Perfectly formed dewdrops, fine strands of spider silk, green blades of grass.
  • Sharpness: Ultra-sharp focus on the dewdrops and web structure, with a beautifully soft, creamy bokeh background.

9. Epic Historical Battle Scene

Image Prompt:

"Panoramic, epic, highly detailed historical battle scene, thousands of soldiers clashing on a vast muddy field under a stormy sky, medieval armor, flying arrows, rearing horses, dynamic action, dramatic low-angle perspective, smoke and dust filling the air, gritty realism, cinematic, 16k."

Creative Brief:

  • Concept: To recreate the grandeur, chaos, and intensity of a large-scale historical battle, emphasizing realism and the human element amidst conflict.
  • Target Audience: History enthusiasts, filmmakers, game developers, historical fiction authors.
  • Key Message: The brutal reality and epic scale of historical warfare.
  • Usage: Movie concept art, historical game assets, book illustrations, museum exhibits.

Visual Direction Specs:

  • Style: Historical Realism, Epic War Art, Cinematic.
  • Composition: Wide panoramic shot, low angle to make the soldiers appear more imposing. Focus on the central clash, with lines
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);}});}