Mobile App UI Designer
Run ID: 69b6fa01896970b0894649472026-03-29Design
PantheraHive BOS
BOS Dashboard

Workflow Execution Summary

The "Mobile App UI Designer" workflow has been successfully executed. Based on your inputs, a comprehensive UI/UX design brief and conceptual framework for a mobile application focused on "AI Technology" have been generated. This output provides the foundational elements necessary to guide a UI designer or design team in creating an intuitive, engaging, and effective mobile experience.


Project Overview: AI Hive - Your Daily Dose of AI Innovation

Description: Test run for a mobile application UI design brief.

Topic: AI Technology

App Name Concept: AI Hive (or similar, e.g., AI Nexus, Synapse AI)

Core Concept: The "AI Hive" mobile application aims to be a central hub for anyone interested in AI Technology – from enthusiasts and students to developers and business professionals. It will provide curated news, a comprehensive directory of AI tools, interactive learning pathways, and a collaborative community space, all within a modern and intuitive user interface.

Value Proposition:

  • Stay Informed: Curated, personalized news and insights on the latest AI advancements.
  • Explore & Discover: A searchable directory of cutting-edge AI tools and research.
  • Learn & Grow: Structured learning paths and tutorials to deepen AI knowledge.
  • Connect & Collaborate: A community forum for discussions and knowledge sharing.

Target Audience Analysis

To ensure the UI design resonates, we identify the primary user segments:

  • AI Enthusiasts: Individuals passionate about AI, seeking general news, trends, and easy-to-understand explanations.
  • Students & Researchers: Learners and academics needing resources for study, project ideas, and research papers.
  • Developers & Engineers: Professionals looking for new AI tools, libraries, frameworks, and practical implementation guides.
  • Business Leaders & Innovators: Decision-makers interested in AI's impact on industries, use cases, and strategic insights.

Key User Needs & Expectations:

  • Up-to-date information: Timely news and trends.
  • Ease of discovery: Simple navigation to find specific tools or learning content.
  • Credibility: Reliable sources for news and learning materials.
  • Interactivity: Engaging content, quizzes, and community features.
  • Personalization: Content tailored to their interests and skill level.
  • Clean & professional interface: A visually appealing and easy-to-use app.

Core App Features & Functionality

The following key features will define the application's utility and user experience:

  1. Personalized AI News Feed:

* Algorithm-driven feed based on user interests (e.g., ML, Robotics, NLP, Ethics).

* Categorized articles (e.g., Research, Industry News, Breakthroughs, Opinion).

* "Read Later" functionality.

* Source filtering and blocking.

  1. AI Tool & Resource Directory:

* Searchable database of AI tools, frameworks, datasets, and APIs.

* Categorization (e.g., Computer Vision, NLP, Data Science, MLOps).

* Detailed tool pages: description, features, use cases, pricing (if applicable), links, user reviews/ratings.

* "Save for Later" or "My Tools" list.

  1. Interactive Learning Paths:

* Structured courses from beginner to advanced levels (e.g., "Intro to Neural Networks," "Advanced NLP with Transformers").

* Modules with video lessons, text-based tutorials, code examples, and quizzes.

* Progress tracking and certification (optional).

* "My Learning" section for ongoing courses and completed paths.

  1. Community Forum & Discussions:

* Topic-based discussion boards (e.g., "Ask an Expert," "Project Showcase," "Ethical AI").

* User profiles with activity history.

* Upvoting/downvoting, commenting, and direct messaging.

  1. AI Glossary & Concepts Explainer:

* Searchable dictionary of AI terms and concepts.

* Simple, clear explanations with examples.

* Interlinking with news articles and learning modules.

  1. User Profile & Settings:

* Manage interests, notifications, app preferences (e.g., Dark Mode).

* Track reading history, saved items, learning progress.


Information Architecture (IA) & Navigation Structure

A clear and intuitive navigation system is crucial for an app with diverse content. A bottom tab bar combined with a contextual header and internal navigation is recommended.

Primary Navigation (Bottom Tab Bar):

  • Home: Personalized news feed, featured tools, quick links to learning paths.
  • Explore: Directory for AI tools, research papers, and broader categories.
  • Learn: Access to learning paths, courses, and saved learning content.
  • Community: Forum, discussions, and user interactions.
  • Profile: User settings, saved items, progress tracking, notifications.

Secondary Navigation (Within Sections/Headers):

  • Search Bar: Prominently available across most screens.
  • Filters & Sort Options: For news, tools, and learning content.
  • Back Button: Standard navigation.
  • Contextual Actions: (e.g., "Share," "Save," "Bookmark," "Join Discussion").

User Flow Examples

To illustrate key interactions and inform screen design:

1. User Discovers a New AI Tool:

  • Scenario: User hears about a new AI model and wants to find out more.
  • Flow:

1. Home Screen: User sees a headline about a new AI breakthrough.

2. Tap "Explore" Tab: Navigates to the tool/resource directory.

3. Search Bar: User types "GPT-4o" (example).

4. Search Results: Displays relevant tools/resources.

5. Tap Tool Card: Navigates to the "GPT-4o Detail Page."

6. Tool Detail Page: User reviews description, features, links, and user reviews.

7. Action: User taps "Visit Website" to learn more or "Save Tool" for later reference.

2. User Starts a New Learning Path:

  • Scenario: A beginner wants to understand the basics of Machine Learning.
  • Flow:

1. Home Screen: User sees a "Featured Learning Path" card for "Intro to ML."

2. Tap "Learn" Tab: Navigates to the learning section.

3. Browse Courses: User sees categories like "Beginner," "Intermediate," "Advanced."

4. Select "Intro to Machine Learning": Navigates to the course overview page.

5. Course Overview: Displays modules, estimated time, prerequisites, and learning objectives.

6. Tap "Start Course": Begins Module 1, Lesson 1.

7. Lesson Screen: Presents content (text/video), code examples, and navigation to the next lesson/module.

8. Action: User completes lesson, takes quiz, and progresses through the path.


UI Design Principles & Guidelines

The visual design should reflect the cutting-edge nature of AI while remaining highly usable.

  • Modern & Futuristic:

* Color Palette: Primarily dark mode with vibrant accent colors (e.g., electric blue, neon green, deep purple) to signify innovation and technology. Light mode option for user preference.

* Typography: Clean, sans-serif fonts (e.g., Inter, Montserrat, Roboto) for readability, with a distinct font for headlines to add character.

* Imagery: Abstract AI-generated art, sleek data visualizations, and high-quality product screenshots for tools.

  • Clean & Intuitive:

* Minimalist Aesthetic: Focus on content, avoid clutter. Ample whitespace.

* Consistent Layouts: Predictable placement of elements across different screens.

* Clear Hierarchy: Use typography, color, and spacing to guide the user's eye.

  • Data-Rich, Digestible:

* Card-Based Design: For news articles, tools, and learning modules, allowing for easy scanning.

* Visualizations: Use charts, graphs, and infographics to explain complex AI concepts or trends.

* Progress Indicators: Clear visual cues for learning paths and content consumption.

  • Interactive & Engaging:

* Micro-interactions: Subtle animations for button presses, transitions, and loading states.

* Haptic Feedback: Enhance user interaction on key actions.

* Gamification Elements: (Optional) Badges for course completion, points for community contributions.

  • Accessibility:

* High Contrast: Ensure text and interactive elements are easily discernible.

* Legible Font Sizes: Provide options for text scaling.

* Touch Target Sizes: Ensure buttons and interactive areas are large enough for easy tapping.


Wireframe & Mockup Suggestions (Conceptual)

This section outlines key screen elements to guide the initial wireframing process.

1. Onboarding & Sign-up Screens:

  • Welcome/Splash Screen: App logo, tagline.
  • Feature Walkthrough (3-4 screens): Highlight key benefits (personalized news, tools, learning).
  • Interest Selection: User selects AI sub-topics (checkboxes, tags) to personalize content.
  • Sign-up/Login: Standard email/password, social login options.

2. Home Screen:

  • Header: App logo, search icon, profile avatar/icon.
  • Personalized News Feed: Scrollable list of news cards (image, title, source, time, brief summary).
  • "Quick Links" / "Featured Sections": Horizontal scrollable cards for "Trending Tools," "New Learning Paths," "Top Discussions."
  • Bottom Navigation Bar: (Home, Explore, Learn, Community, Profile).

3. Explore (Tools) Screen:

  • Header: "AI Tools & Resources," search bar, filter/sort icon.
  • Categories: Horizontal scrollable category chips (e.g., "NLP," "Computer Vision," "Generative AI").
  • Tool List: Vertical scrollable list of tool cards (logo, name, short description, rating, key tags).
  • "Saved Tools" / "My Tools" Access: Prominent button or icon.

4. Tool Detail Screen:

  • Header: Back button, tool name, share icon, save icon.
  • Hero Section: Tool logo/image, name, developer, rating, key features.
  • Overview: Detailed description, use cases, pricing model.
  • Technical Specs: APIs, frameworks, languages supported.
  • User Reviews: Star ratings, comments, ability to add a review.
  • Call to Action: "Visit Website," "Download," "Try Demo."

5. Learn (Course Overview & Lesson) Screens:

  • Course Overview: Header (course title, back button), progress bar, course description, learning objectives, list of modules/lessons.
  • Lesson Screen: Header (lesson title, progress indicator), content area (text, video player, code snippets), "Next Lesson" button, "Quiz" button, "Discuss" icon.

Technology Considerations (UI/UX Impact)

The nature of AI technology itself can be leveraged to enhance the UI/UX.

  • AI-Powered Personalization: The UI should dynamically adapt content display based on user behavior, interests, and learning progress. This includes news feeds, tool recommendations, and suggested learning paths.
  • Voice Search & Commands: Integrate voice input for searching articles, tools, or initiating learning modules, especially useful for developers and researchers who might be hands-on.
  • Interactive Data Visualizations: For presenting AI trends, statistics, or complex model architectures, interactive charts and graphs can make data more comprehensible and engaging.
  • Real-time Updates: Push notifications for breaking AI news, new tool releases, or community activity.
  • Dark Mode Optimization: Given the target audience (tech-savvy users, developers), a well-designed dark mode is essential and should be a primary consideration in the design system.

Actionable Next Steps

To move forward with the "AI Hive" mobile application UI design:

  1. User Research & Persona Development: Conduct interviews and surveys with target users to validate assumptions and refine user personas.
  2. Detailed Wireframing: Translate these conceptual screens into low-fidelity wireframes, focusing on layout, content placement, and interaction flows.
  3. Prototyping Key Flows: Create interactive prototypes for critical user journeys (e.g., onboarding, finding a tool, starting a lesson) to test usability.
  4. Design System Development: Establish a comprehensive design system including color palettes, typography, iconography, component libraries (buttons, cards, forms), and spacing guidelines.
  5. High-Fidelity Mockups: Develop pixel-perfect mockups based on the wireframes and design system, iterating based on feedback.
  6. Usability Testing: Conduct iterative usability testing with actual users to identify pain points and optimize the user experience.
  7. Accessibility Audit: Ensure the design meets WCAG standards for accessibility.

Estimated Resources & Time

Workflow Execution Time: 5 minutes

PantheraHive Credits Used: 100 cr

This output provides a robust foundation. The actual design and development phases will require dedicated UI/UX design resources, front-end development, and backend integration.

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