Mobile App Wireframe Kit
Run ID: 69cccf323e7fb09ff16a54e02026-04-01Design
PantheraHive BOS
BOS Dashboard

As a professional AI assistant within PantheraHive, I have generated the comprehensive Mobile App Wireframe Specification as requested. This document provides a detailed blueprint for the mobile application, covering screen flows, a robust component library, interaction patterns, and essential developer handoff notes. It is structured to be clear, actionable, and ready for immediate use by your development team.


Mobile App Wireframe Specification

Project: Mobile App Wireframe Kit

Version: 1.0

Date: October 26, 2023

Generated By: PantheraHive AI Assistant


1. Introduction

This document serves as a comprehensive wireframe specification for the mobile application. It details the structural layout, content, and behavior of the application at a functional level, without focusing on visual aesthetics (which will be covered in a subsequent UI/UX design phase). The primary goal is to provide a clear, actionable guide for developers and stakeholders, ensuring a shared understanding of the application's core functionality and user experience.

Target Audience:


2. Global Design Principles & Guidelines

These principles guide the overall structure and interaction within the application:


3. Component Library Specification

This section defines the reusable UI components that form the building blocks of the application. Each component includes a description, states, properties, and usage guidelines.

3.1. General Component Structure

text • 1,044 chars
**B. TextInput**
*   **Name:** `TextInput`
*   **Description:** Allows users to input single-line text.
*   **Type:** `Input`
*   **States:** `Default`, `Focused`, `Error`, `Disabled`, `Filled`
*   **Properties:**
    *   `label`: `string` (Label displayed above/beside input)
    *   `placeholder`: `string` (Hint text when empty)
    *   `value`: `string` (Current input value)
    *   `type`: `enum` (`text`, `email`, `password`, `number`, `tel`)
    *   `errorMessage`: `string` (Text displayed on error state)
    *   `helperText`: `string` (Informative text below input)
    *   `leadingIcon`: `string` (Optional icon name at start)
    *   `trailingIcon`: `string` (Optional icon name at end)
    *   `keyboardType`: `enum` (Platform-specific keyboard type)
    *   `onChangeText`: `function` (Handler for text changes)
*   **Usage Guidelines:**
    *   Always provide a clear label.
    *   Use appropriate `type` and `keyboardType` for data entry.
    *   Provide immediate feedback for validation errors.
*   **Example Markup:**
    
Sandboxed live preview

This document outlines a comprehensive study plan designed to equip you with the skills and knowledge required to create professional Mobile App Wireframe Kits. This plan is structured to provide a deep understanding of wireframing principles, tools, and best practices, culminating in the ability to produce detailed specifications for mobile application development.


Detailed Study Plan: Mastering Mobile App Wireframe Kit Creation

1. Introduction and Overall Learning Objective

This study plan is crafted for aspiring UX/UI designers, product managers, developers, or anyone looking to master the art of mobile app wireframing. A "Mobile App Wireframe Kit" encompasses not just static screens, but a holistic specification including user flows, component libraries, interaction patterns, and detailed developer handoff documentation.

Overall Learning Objective: Upon completion of this study plan, you will be able to independently plan, design, and document a complete Mobile App Wireframe Kit, ready for developer handoff and stakeholder review, adhering to industry best practices and user-centered design principles.

2. Target Audience & Prerequisites

  • Target Audience: Individuals with a basic understanding of mobile applications and a keen interest in user experience design, product development, or software engineering.
  • Prerequisites:

* Familiarity with common mobile apps (iOS and Android).

* Basic computer literacy and comfort with design software (even at a beginner level).

* An analytical mindset and attention to detail.

3. Study Duration & Structure

This plan is designed for an 8-week duration, assuming approximately 10-15 hours of dedicated study and practice per week. It is structured into weekly modules, each building upon the previous one.

4. Weekly Schedule & Detailed Learning Objectives

Week 1: Foundations of Wireframing & UX Principles

  • Learning Objectives:

* Understand the role of wireframes in the product development lifecycle.

* Differentiate between sketches, wireframes, mockups, and prototypes.

* Grasp core UX principles: usability, accessibility, user-centered design, information architecture.

* Identify common mobile user behaviors and mental models.

* Learn how to conduct basic competitive analysis and user research (e.g., persona creation, user stories).

  • Activities:

* Read foundational UX articles.

* Analyze existing mobile apps for their basic structure and flow.

* Practice sketching low-fidelity wireframes for a simple app idea.

Week 2: Mobile UI Patterns & Grids

  • Learning Objectives:

* Familiarize with standard iOS Human Interface Guidelines (HIG) and Android Material Design principles.

* Identify common mobile UI patterns (navigation, data input, content display, feedback).

* Understand the importance of grid systems, spacing, and responsive design in mobile wireframing.

* Learn about common screen resolutions and device considerations.

  • Activities:

* Study HIG and Material Design documentation.

* Deconstruct popular mobile apps, identifying UI patterns.

* Practice sketching different navigation patterns (tabs, hamburger menus, bottom sheets).

Week 3: Wireframing Tools & Basic Screen Flows

  • Learning Objectives:

* Become proficient with a chosen wireframing tool (e.g., Figma, Adobe XD, Sketch, Balsamiq).

* Create basic, low-fidelity wireframes for individual screens.

* Map out simple user flows (e.g., login/signup, profile viewing).

* Learn about naming conventions and file organization for wireframe projects.

  • Activities:

* Complete beginner tutorials for your chosen tool.

* Wireframe a 3-5 screen user flow (e.g., "order a coffee" app).

* Practice adding basic annotations to wireframes.

Week 4: Component Library & Design Systems Thinking

  • Learning Objectives:

* Understand the concept of a component library and its benefits (consistency, efficiency).

* Learn to create reusable UI components (buttons, input fields, cards, headers) within your chosen tool.

* Grasp the basics of atomic design principles for wireframing.

* Organize components effectively for scalability and reusability.

  • Activities:

* Identify common components in existing apps.

* Create a basic component library for your chosen app project.

* Apply these components to build several variations of a screen.

Week 5: Interaction Patterns & Prototyping

  • Learning Objectives:

* Explore common mobile interaction patterns (gestures, transitions, animations – conceptually).

* Learn to create interactive prototypes from your wireframes using the chosen tool.

* Understand different levels of fidelity in prototyping.

* Conduct basic usability testing on your prototypes to gather feedback.

  • Activities:

* Prototype the user flows from Week 3, adding basic interactions.

* Practice creating different transition types.

* Ask a friend/colleague to test your prototype and provide feedback.

Week 6: Advanced Wireframing & Edge Cases

  • Learning Objectives:

* Address complex screen states (empty states, error states, loading states).

* Design for accessibility considerations in wireframes (e.g., touch target sizes, contrast considerations).

* Learn to document complex user flows and conditional logic.

* Explore responsive wireframing for different mobile device sizes.

  • Activities:

* Integrate error, empty, and loading states into your existing wireframes.

* Wireframe a feature with conditional logic (e.g., different views for logged-in vs. logged-out users).

* Consider how your wireframes adapt to a tablet view.

Week 7: Developer Handoff & Documentation

  • Learning Objectives:

* Understand what developers need from wireframes and specifications.

* Learn to create clear, concise annotations and specifications for each screen and component.

* Document user flows, interaction details, and edge cases comprehensively.

* Explore tools and best practices for developer handoff (e.g., Zeplin, Avocode, built-in tool features).

* Learn about version control for design files.

  • Activities:

* Prepare a complete wireframe kit for a small app feature, including detailed annotations.

* Practice writing developer notes for specific components and interactions.

* Review examples of good and bad developer handoff documentation.

Week 8: Project & Portfolio Development

  • Learning Objectives:

* Apply all learned concepts to create a complete Mobile App Wireframe Kit for a personal project.

* Refine wireframing skills through iterative design based on feedback.

* Structure and present a wireframe portfolio piece effectively.

* Understand next steps for transitioning wireframes to high-fidelity designs.

  • Activities:

* Select a new app idea or expand on an existing one.

* Design and document a complete wireframe kit from scratch.

* Create a portfolio case study for your completed wireframe kit.

* Seek feedback on your final project from peers or mentors.

5. Recommended Resources

  • Books:

* "Don't Make Me Think, Revisited" by Steve Krug (UX Fundamentals)

* "The Design of Everyday Things" by Don Norman (Design Principles)

* "Lean UX: Applying Lean Principles to Improve User Experience" by Jeff Gothelf & Josh Seiden

  • Online Courses/Tutorials:

* Figma/Adobe XD/Sketch Official Tutorials: Essential for tool proficiency.

* Coursera/Udemy/edX: Search for "UX Design," "Wireframing," "Mobile UI/UX." (e.g., Google UX Design Professional Certificate).

* Nielsen Norman Group (NN/g): Articles and videos on UX research, usability, and best practices.

  • Tools:

* Figma (Recommended): Cloud-based, collaborative, robust for wireframing, prototyping, and design systems.

* Adobe XD: Good for quick prototyping, integrates with Adobe ecosystem.

* Sketch: Industry standard for macOS users, extensive plugin ecosystem.

* Balsamiq: Specifically designed for low-fidelity wireframing, excellent for conceptualization.

* Miro/Whimsical: For collaborative brainstorming and basic flows.

  • Blogs/Articles:

* UX Planet, Smashing Magazine (UX section), Medium (UX topics), A List Apart.

* Material Design Guidelines (Android): [https://material.io/design](https://material.io/design)

* iOS Human Interface Guidelines (Apple): [https://developer.apple.com/design/human-interface-guidelines/](https://developer.apple.com/design/human-interface-guidelines/)

  • Communities:

* Local UX meetups, LinkedIn UX groups, Reddit (r/userexperience, r/figma, etc.).

6. Milestones

  • End of Week 2: Solid understanding of mobile UI patterns and UX principles.
  • End of Week 4: Proficiency in chosen wireframing tool, ability to create basic user flows and a foundational component library.
  • End of Week 6: Ability to create interactive prototypes, design for edge cases, and apply accessibility considerations.
  • End of Week 7: Production of a complete, annotated wireframe kit for a feature, ready for developer handoff.
  • End of Week 8: Completion of a personal wireframe project and a portfolio-ready case study.

7. Assessment Strategies

  • Self-Assessment: Regularly review your work against the learning objectives and compare it to industry examples.
  • Peer Review: Share your wireframes and prototypes with peers, mentors, or online communities for constructive feedback.
  • Practical Application: The ultimate assessment is your ability to complete the final project (Week 8) to a professional standard.
  • Usability Testing: Conduct simple usability tests on your prototypes to identify areas for improvement.
  • Portfolio Development: The creation of a strong portfolio piece demonstrating your wireframing skills will serve as a tangible assessment of your learning.

8. Tips for Success

  • Practice Consistently: Wireframing is a skill that improves with regular practice.
  • Embrace Feedback: Actively seek and incorporate feedback into your designs.
  • Stay Curious: The UX/UI field evolves rapidly; continuously learn new tools, patterns, and best practices.
  • Build a Portfolio: Start building a portfolio from day one. Even small exercises can become valuable case studies.
  • Understand the "Why": Always ask why certain design decisions are made, not just how to implement them.
  • Focus on Clarity: Wireframes are about communication. Ensure your designs and annotations are clear and unambiguous.


4. Screen Flow Specification

This section outlines the primary user journeys through the application, detailing the sequence of screens and transitions.

4.1. Flow 1: User Onboarding & Account Creation

  • Flow Name: User Onboarding & Account Creation
  • Description: Guides new users through the initial setup, including welcome screens and account
gemini Output

Mobile App Wireframe Specification Kit

Project: [Your Project Name/Client Name]

Version: 1.0

Date: October 26, 2023

Prepared For: [Client/Stakeholder Name]

Prepared By: PantheraHive

1. Introduction & Overview

This document provides a comprehensive wireframe specification kit for the [App Name] mobile application. It serves as a foundational blueprint for the app's user interface (UI) and user experience (UX), detailing screen layouts, user flows, reusable components, and interaction patterns.

Purpose:

  • To establish a clear visual and functional structure for the mobile application.
  • To facilitate understanding and alignment among stakeholders (product, design, development).
  • To provide a detailed reference for UI design and front-end development.

Scope:

This specification covers the core user journeys, key screens, and fundamental UI components required for the initial release of the [App Name] mobile application. It focuses on functional layout and interaction, not final visual design or branding.

2. Key User Flows & Screen Navigation

This section outlines the primary paths users will take through the application, illustrating the sequence of screens and key decision points.

2.1. Flow 1: Onboarding & Account Creation

Description: Guides new users through the initial setup, introducing the app's value proposition and allowing them to create an account or log in.

  • Screen 1.1: Welcome/Splash Screen

Purpose:* Initial brand display, quick loading.

Interaction:* Auto-advances after 2-3 seconds.

Navigates to:* Screen 1.2.

  • Screen 1.2: Onboarding Carousel (3-4 screens)

Purpose:* Highlight key features and benefits.

Elements:* Image/Illustration, Title, Description, "Skip" button, "Next" button, pagination dots.

Interaction:* Swipe left/right to navigate, Tap "Next" to advance, Tap "Skip" to go to Screen 1.4.

Navigates to:* Screen 1.3 (if "Next") or Screen 1.4 (if "Skip" on any screen, or "Get Started" on the last carousel screen).

  • Screen 1.3: User Type Selection (Optional)

Purpose:* If applicable, allows users to choose a role (e.g., "Customer," "Provider").

Elements:* Title, two distinct buttons for roles, "Back" button.

Interaction:* Tap a role button to proceed.

Navigates to:* Screen 1.4 (based on selection).

  • Screen 1.4: Login / Sign Up Options

Purpose:* Provide entry points for existing and new users.

Elements:* Title ("Welcome Back!" or "Join Us!"), "Login" button, "Sign Up" button, "Continue with Google" button, "Continue with Apple" button.

Interaction:* Tap respective buttons.

Navigates to:* Screen 1.5 (Login) or Screen 1.6 (Sign Up).

  • Screen 1.5: Login Screen

Purpose:* Authenticate existing users.

Elements:* Email/Username input, Password input, "Forgot Password?" link, "Login" button, "Back" button.

Interaction:* Tap "Login" to attempt authentication.

Navigates to:* Main Dashboard (Flow 2.1) upon success, or displays error message.

  • Screen 1.6: Sign Up Screen (Part 1 - Email/Password)

Purpose:* Capture initial user details.

Elements:* Full Name input, Email input, Password input, Confirm Password input, "Terms & Conditions" checkbox/link, "Sign Up" button, "Back" button.

Interaction:* Tap "Sign Up" to create account.

Navigates to:* Screen 1.7 (if successful), or displays error.

  • Screen 1.7: Profile Setup (Optional, e.g., Interests/Preferences)

Purpose:* Personalize user experience post-signup.

Elements:* Title, multiple selectable options (e.g., categories, interests), "Skip" button, "Continue" button.

Interaction:* Select options, tap "Continue."

Navigates to:* Main Dashboard (Flow 2.1).

2.2. Flow 2: Main Feature X (Example: Item Browsing & Viewing)

Description: Allows users to discover items, view details, and initiate an action (e.g., add to cart, bookmark).

  • Screen 2.1: Main Dashboard / Home Screen

Purpose:* Central hub for app features, personalized content.

Elements:* Top Bar (Search, Notifications, Profile icon), Main Content Area (e.g., featured items, categories, personalized feed), Bottom Navigation Bar.

Interaction:* Tap item/category to navigate, Tap icons in top/bottom bar.

Navigates to:* Screen 2.2 (Item List/Search Results), Screen 2.3 (Item Detail), Notifications, Profile, other main tabs.

  • Screen 2.2: Item List / Search Results Screen

Purpose:* Display a collection of items based on search or category.

Elements:* Top Bar (Search input, Filter/Sort icon), List/Grid of Item Cards.

Interaction:* Tap an Item Card to view details, Tap Filter/Sort to open options.

Navigates to:* Screen 2.3 (Item Detail).

  • Screen 2.3: Item Detail Screen

Purpose:* Provide comprehensive information about a specific item.

Elements:* Image Gallery, Item Name, Price, Description, Reviews section, "Add to Cart" / "Bookmark" button, "Share" icon, "Back" button.

Interaction:* Swipe images, Tap "Add to Cart," Tap "Share."

Navigates to:* Cart screen (if "Add to Cart"), previous screen (if "Back").

(Continue with other critical flows, e.g., Profile Management, Settings, etc.)

3. Component Library

This section defines the reusable UI elements that form the building blocks of the application. Each component includes its purpose, states, and general usage guidelines.

3.1. Navigation Components

  • Top Bar (App Bar/Header)

Purpose:* Provides primary navigation, branding, and contextual actions.

Elements:* App Title/Logo, Back Button, Hamburger Menu Icon, Search Icon, Notification Icon, Action Buttons (e.g., "Save," "Edit").

States:* Default, Transparent (on scroll), With search input.

Usage:* Always present at the top of main screens; contextual actions change per screen.

  • Bottom Navigation Bar (Tab Bar)

Purpose:* Persistent navigation to top-level destinations.

Elements:* 3-5 icons with text labels.

States:* Default, Active (selected tab highlighted), Inactive.

Usage:* Used for primary app sections, accessible from most screens.

  • Buttons (Primary, Secondary, Tertiary, Icon)

Purpose:* Initiate actions.

Elements:* Text label, optional icon.

States:* Default, Hover (if applicable), Pressed, Disabled, Loading.

Usage:*

* Primary: Main call-to-action (e.g., "Submit," "Next," "Add").

* Secondary: Less prominent actions (e.g., "Cancel," "Learn More").

* Tertiary/Text: Least prominent, often for links or minor actions.

* Icon: Actions represented solely by an icon (e.g., "Delete," "Share").

3.2. Input Components

  • Text Input Field

Purpose:* Allow users to enter text, numbers, or symbols.

Elements:* Label, Placeholder text, Input area, Optional clear button, Optional visibility toggle (for passwords).

States:* Default, Focused, Filled, Error, Disabled.

Usage:* Forms, search fields, comments.

  • Dropdown / Selector

Purpose:* Allow users to select one option from a predefined list.

Elements:* Label, Display area showing current selection, Dropdown arrow, List of options.

States:* Default, Open (list visible), Disabled.

Usage:* Country selection, category filters.

  • Checkbox

Purpose:* Allow users to select multiple options or toggle a single setting.

Elements:* Square box, Label.

States:* Unchecked, Checked, Indeterminate, Disabled.

Usage:* Terms & conditions, multi-select filters.

  • Radio Button

Purpose:* Allow users to select a single option from a group.

Elements:* Circular button, Label.

States:* Unselected, Selected, Disabled.

Usage:* Gender selection, single-choice surveys.

  • Toggle Switch

Purpose:* Control binary settings (on/off).

Elements:* Switch mechanism, Label.

States:* Off, On, Disabled.

Usage:* Notification preferences, dark mode.

3.3. Display & Feedback Components

  • Cards

Purpose:* Group related content and actions in a visually distinct container.

Elements:* Image, Title, Description, Buttons/Icons.

States:* Default, Pressed.

Usage:* Item listings, news articles, profile snippets.

  • Alert Dialog / Modal

Purpose:* Display critical information or require user input/confirmation, temporarily interrupting the user flow.

Elements:* Title, Message, Action Buttons (e.g., "Confirm," "Cancel").

States:* Visible, Hidden.

Usage:* Confirming deletions, system warnings, complex input forms.

  • Toast / Snackbar

Purpose:* Provide brief, unobtrusive feedback about an operation.

Elements:* Short message, optional action button.

States:* Visible (auto-dismiss), Hidden.

Usage:* "Item added to cart," "Settings saved."

  • Progress Indicators (Spinner, Progress Bar)

Purpose:* Inform users that an operation is in progress.

Elements:* Spinner animation, Bar filling up.

States:* Indeterminate (spinner), Determinate (progress bar).

Usage:* Loading data, file uploads.

  • Empty State Illustrations

Purpose:* Visually communicate that there is no content to display and guide the user on how to populate it.

Elements:* Illustration, Title, Description, Call-to-action button.

Usage:* Empty cart, no search results, no notifications.

4. Interaction Patterns

This section details common ways users interact with the app, beyond individual component actions.

4.1. Gestures

  • Tap: Primary action for buttons, links, and selectable items.
  • Double Tap: (If applicable) Zoom in/out on images, like/favorite.
  • Long Press: Contextual menus, drag-and-drop initiation.
  • Swipe (Horizontal): Navigate between tabs/screens in a carousel, dismiss items in a list.
  • Swipe (Vertical): Scroll content.
  • Pinch-to-Zoom: (If applicable) Zoom in/out on images or maps.
  • Pull-to-Refresh: Refresh content in lists/feeds.

4.2. Feedback Mechanisms

  • Visual Feedback:

* Tap States: Buttons visually change on tap (e.g., background color change, shadow).

* Progress Indicators: Displayed during loading/processing.

* Error States: Input fields highlight red, error messages appear.

* Success States: Green checkmarks, success messages (toasts).

  • Haptic Feedback: (Vibration)

* Subtle vibration for successful critical actions (e.g., submitting a form, adding to cart).

* Can be used for confirmation of long press.

  • Auditory Feedback: (Optional, if required)

* Subtle sounds for notifications or specific interactions, with user control to disable.

4.3. State Management

  • Loading States: Displayed when content is being fetched (e.g., skeleton screens, spinners).
  • Empty States: Clear visual and textual guidance when a section has no content. Includes a call to action if applicable.
  • Error States:

* Input Validation Errors: Inline messages next to the problematic field.

* API/Network Errors: Full-screen error messages with retry options, or toasts for minor issues.

* No Internet Connection: Dedicated screen or persistent banner.

  • Success States: Confirmation messages (toasts, modals) after successful operations.

4.4. Transitions & Animations

  • Screen Transitions:

* Push/Pop: Standard for navigating forward/backward (e.g., new screen slides in from right, old slides out left).

* Modal Presentation: New screen slides up from bottom.

* Fade: For less disruptive changes (e.g., content updates within a screen).

  • Component Animations:

* Subtle animations for button presses, dropdowns opening, toggle switches.

* Micro-interactions to provide delight and clarity (e.g., icon transformations).

5. Developer Handoff Notes

This section provides crucial information and guidelines for the development team to ensure a smooth implementation process and adherence to the wireframe specifications.

5.1. General Guidelines

  • Responsiveness: All wireframes are designed with mobile-first principles.
mobile_app_wireframe_kit.txt
Download source file
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
"); 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' import ReactDOM from 'react-dom/client' import App from './App' import './index.css' ReactDOM.createRoot(document.getElementById('root')!).render( ) "); 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' import './App.css' function App(){ return(

"+slugTitle(pn)+"

Built with PantheraHive BOS

) } export default App "); zip.file(folder+"src/index.css","*{margin:0;padding:0;box-sizing:border-box} body{font-family:system-ui,-apple-system,sans-serif;background:#f0f2f5;color:#1a1a2e} .app{min-height:100vh;display:flex;flex-direction:column} .app-header{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:40px} h1{font-size:2.5rem;font-weight:700} "); 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)+" Generated by PantheraHive BOS. ## Setup ```bash npm install npm run dev ``` ## Build ```bash npm run build ``` ## Open in IDE Open the project folder in VS Code or WebStorm. "); zip.file(folder+".gitignore","node_modules/ dist/ .env .DS_Store *.local "); } /* --- 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",'{ "name": "'+pn+'", "version": "0.0.0", "type": "module", "scripts": { "dev": "vite", "build": "vue-tsc -b && vite build", "preview": "vite preview" }, "dependencies": { "vue": "^3.5.13", "vue-router": "^4.4.5", "pinia": "^2.3.0", "axios": "^1.7.9" }, "devDependencies": { "@vitejs/plugin-vue": "^5.2.1", "typescript": "~5.7.3", "vite": "^6.0.5", "vue-tsc": "^2.2.0" } } '); zip.file(folder+"vite.config.ts","import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import { resolve } from 'path' export default defineConfig({ plugins: [vue()], resolve: { alias: { '@': resolve(__dirname,'src') } } }) "); zip.file(folder+"tsconfig.json",'{"files":[],"references":[{"path":"./tsconfig.app.json"},{"path":"./tsconfig.node.json"}]} '); zip.file(folder+"tsconfig.app.json",'{ "compilerOptions":{ "target":"ES2020","useDefineForClassFields":true,"module":"ESNext","lib":["ES2020","DOM","DOM.Iterable"], "skipLibCheck":true,"moduleResolution":"bundler","allowImportingTsExtensions":true, "isolatedModules":true,"moduleDetection":"force","noEmit":true,"jsxImportSource":"vue", "strict":true,"paths":{"@/*":["./src/*"]} }, "include":["src/**/*.ts","src/**/*.d.ts","src/**/*.tsx","src/**/*.vue"] } '); zip.file(folder+"env.d.ts","/// "); zip.file(folder+"index.html"," "+slugTitle(pn)+"
"); 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' import { createPinia } from 'pinia' import App from './App.vue' import './assets/main.css' const app = createApp(App) app.use(createPinia()) app.mount('#app') "); var hasApp=Object.keys(extracted).some(function(k){return k.indexOf("App.vue")>=0;}); if(!hasApp) zip.file(folder+"src/App.vue"," "); 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} "); 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)+" Generated by PantheraHive BOS. ## Setup ```bash npm install npm run dev ``` ## Build ```bash npm run build ``` Open in VS Code or WebStorm. "); zip.file(folder+".gitignore","node_modules/ dist/ .env .DS_Store *.local "); } /* --- 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",'{ "name": "'+pn+'", "version": "0.0.0", "scripts": { "ng": "ng", "start": "ng serve", "build": "ng build", "test": "ng test" }, "dependencies": { "@angular/animations": "^19.0.0", "@angular/common": "^19.0.0", "@angular/compiler": "^19.0.0", "@angular/core": "^19.0.0", "@angular/forms": "^19.0.0", "@angular/platform-browser": "^19.0.0", "@angular/platform-browser-dynamic": "^19.0.0", "@angular/router": "^19.0.0", "rxjs": "~7.8.0", "tslib": "^2.3.0", "zone.js": "~0.15.0" }, "devDependencies": { "@angular-devkit/build-angular": "^19.0.0", "@angular/cli": "^19.0.0", "@angular/compiler-cli": "^19.0.0", "typescript": "~5.6.0" } } '); zip.file(folder+"angular.json",'{ "$schema": "./node_modules/@angular/cli/lib/config/schema.json", "version": 1, "newProjectRoot": "projects", "projects": { "'+pn+'": { "projectType": "application", "root": "", "sourceRoot": "src", "prefix": "app", "architect": { "build": { "builder": "@angular-devkit/build-angular:application", "options": { "outputPath": "dist/'+pn+'", "index": "src/index.html", "browser": "src/main.ts", "tsConfig": "tsconfig.app.json", "styles": ["src/styles.css"], "scripts": [] } }, "serve": {"builder":"@angular-devkit/build-angular:dev-server","configurations":{"production":{"buildTarget":"'+pn+':build:production"},"development":{"buildTarget":"'+pn+':build:development"}},"defaultConfiguration":"development"} } } } } '); zip.file(folder+"tsconfig.json",'{ "compileOnSave": false, "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"]}, "references":[{"path":"./tsconfig.app.json"}] } '); zip.file(folder+"tsconfig.app.json",'{ "extends":"./tsconfig.json", "compilerOptions":{"outDir":"./dist/out-tsc","types":[]}, "files":["src/main.ts"], "include":["src/**/*.d.ts"] } '); zip.file(folder+"src/index.html"," "+slugTitle(pn)+" "); zip.file(folder+"src/main.ts","import { bootstrapApplication } from '@angular/platform-browser'; import { appConfig } from './app/app.config'; import { AppComponent } from './app/app.component'; bootstrapApplication(AppComponent, appConfig) .catch(err => console.error(err)); "); zip.file(folder+"src/styles.css","* { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: system-ui, -apple-system, sans-serif; background: #f9fafb; color: #111827; } "); 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'; import { RouterOutlet } from '@angular/router'; @Component({ selector: 'app-root', standalone: true, imports: [RouterOutlet], templateUrl: './app.component.html', styleUrl: './app.component.css' }) export class AppComponent { title = '"+pn+"'; } "); zip.file(folder+"src/app/app.component.html","

"+slugTitle(pn)+"

Built with PantheraHive BOS

"); 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} "); } zip.file(folder+"src/app/app.config.ts","import { ApplicationConfig, provideZoneChangeDetection } from '@angular/core'; import { provideRouter } from '@angular/router'; import { routes } from './app.routes'; export const appConfig: ApplicationConfig = { providers: [ provideZoneChangeDetection({ eventCoalescing: true }), provideRouter(routes) ] }; "); zip.file(folder+"src/app/app.routes.ts","import { Routes } from '@angular/router'; export const routes: Routes = []; "); 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)+" Generated by PantheraHive BOS. ## Setup ```bash npm install ng serve # or: npm start ``` ## Build ```bash ng build ``` Open in VS Code with Angular Language Service extension. "); zip.file(folder+".gitignore","node_modules/ dist/ .env .DS_Store *.local .angular/ "); } /* --- Python --- */ function buildPython(zip,folder,app,code){ var title=slugTitle(app); var pn=pkgName(app); var src=code.replace(/^```[w]* ?/m,"").replace(/ ?```$/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(" "):"# add dependencies here "; zip.file(folder+"main.py",src||"# "+title+" # Generated by PantheraHive BOS print(title+" loaded") "); zip.file(folder+"requirements.txt",reqsTxt); zip.file(folder+".env.example","# Environment variables "); zip.file(folder+"README.md","# "+title+" Generated by PantheraHive BOS. ## Setup ```bash python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt ``` ## Run ```bash python main.py ``` "); zip.file(folder+".gitignore",".venv/ __pycache__/ *.pyc .env .DS_Store "); } /* --- Node.js --- */ function buildNode(zip,folder,app,code){ var title=slugTitle(app); var pn=pkgName(app); var src=code.replace(/^```[w]* ?/m,"").replace(/ ?```$/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)+" "; zip.file(folder+"package.json",pkgJson); var fallback="const express=require("express"); const app=express(); app.use(express.json()); app.get("/",(req,res)=>{ res.json({message:""+title+" API"}); }); const PORT=process.env.PORT||3000; app.listen(PORT,()=>console.log("Server on port "+PORT)); "; zip.file(folder+"src/index.js",src||fallback); zip.file(folder+".env.example","PORT=3000 "); zip.file(folder+".gitignore","node_modules/ .env .DS_Store "); zip.file(folder+"README.md","# "+title+" Generated by PantheraHive BOS. ## Setup ```bash npm install ``` ## Run ```bash npm run dev ``` "); } /* --- 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:" "+title+" "+code+" "; zip.file(folder+"index.html",indexHtml); zip.file(folder+"style.css","/* "+title+" — styles */ *{margin:0;padding:0;box-sizing:border-box} body{font-family:system-ui,-apple-system,sans-serif;background:#fff;color:#1a1a2e} "); zip.file(folder+"script.js","/* "+title+" — scripts */ "); zip.file(folder+"assets/.gitkeep",""); zip.file(folder+"README.md","# "+title+" Generated by PantheraHive BOS. ## Open Double-click `index.html` in your browser. Or serve locally: ```bash npx serve . # or python3 -m http.server 3000 ``` "); zip.file(folder+".gitignore",".DS_Store node_modules/ .env "); } /* ===== 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(/ {2,}/g,"

"); h+="

"+hc+"

Generated by PantheraHive BOS
"; zip.file(folder+app+".html",h); zip.file(folder+"README.md","# "+title+" Generated by PantheraHive BOS. Files: - "+app+".md (Markdown) - "+app+".html (styled HTML) "); } 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);}});}