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

Mobile App Wireframe Specification

Project: E-Commerce Mobile Application (Example)

Version: 1.0

Date: October 26, 2023

Author: PantheraHive AI


1. Introduction

This document provides a comprehensive wireframe specification for the E-Commerce Mobile Application. It details the structural layout, user interaction flows, a reusable component library, and critical developer handoff notes. This specification serves as a foundational blueprint for design, development, and quality assurance, ensuring a clear understanding of the application's core functionality and user experience.

The primary goal is to outline the application's functionality at a low-fidelity level, focusing on content, hierarchy, and interaction without delving into specific visual design elements (colors, typography, detailed iconography).


2. Screen Flows

This section defines the key user journeys through the application, detailing the screens involved and the transitions between them.

2.1 High-Level User Journeys

text • 78 chars
#### 2.2 Detailed Screen Flows

##### 2.2.1 Flow: User Onboarding & Sign Up

Sandboxed live preview

Mobile App Wireframe Kit: Comprehensive Study Plan

This document outlines a detailed study plan designed to equip you with the knowledge and skills necessary to generate a complete mobile app wireframe specification, including screen flows, a robust component library, defined interaction patterns, and clear developer handoff notes. This plan is structured to provide a professional and actionable learning path.


1. Introduction & Goal

This study plan serves as a roadmap for mastering the art and science of mobile app wireframing. By following this structured approach, you will develop a deep understanding of user experience (UX) principles, design best practices, and the technical specifications required to translate concepts into actionable blueprints for development. The ultimate goal is to enable you to independently create professional-grade mobile app wireframe kits.

Overall Learning Objective: Upon completion of this 8-week study plan, the learner will be able to competently plan, design, and document a comprehensive mobile app wireframe specification, ready for developer handoff.

Target Audience: Aspiring UX/UI designers, product managers, business analysts, or developers looking to enhance their understanding and practical skills in mobile app wireframing.


2. Weekly Schedule & Learning Objectives

This 8-week schedule balances theoretical learning with practical application, culminating in the creation of a complete wireframe kit.

Week 1: Foundations of Wireframing & UX Principles (Approx. 10-12 hours)

  • Learning Objectives:

* Understand the fundamental purpose and benefits of wireframing in the product development lifecycle.

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

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

* Learn about common mobile app design patterns (navigation, data entry, feedback).

* Familiarize yourself with popular wireframing tools.

  • Activities:

* Read foundational UX articles/chapters.

* Watch introductory tutorials on wireframing concepts.

* Install and explore a chosen wireframing tool (e.g., Figma, Adobe XD, Sketch).

* Practice sketching basic app screens on paper.

  • Deliverable: A short summary (1-2 pages) outlining the importance of wireframing and key UX principles.

Week 2: User Research & Information Architecture (Approx. 12-15 hours)

  • Learning Objectives:

* Understand basic user research methods relevant to wireframing (e.g., user interviews, personas, user stories).

* Learn to create user personas and user stories.

* Master techniques for defining app scope and features.

* Develop skills in creating sitemaps and user flows/task flows.

* Understand the role of information architecture in structuring content.

  • Activities:

* Create 2-3 user personas for a hypothetical mobile app.

* Write 5-10 user stories for the app.

* Develop a sitemap for a small mobile app (e.g., a simple to-do list app).

* Map out 2-3 key user flows (e.g., "create new item," "mark item complete").

  • Deliverable: User Personas, User Stories, Sitemap, and 2-3 User Flows for a chosen simple app concept.

Week 3: Screen Flow Design & Low-Fidelity Wireframing (Approx. 15-18 hours)

  • Learning Objectives:

* Translate user flows into detailed screen flows.

* Learn best practices for designing mobile screen layouts (header, footer, content areas).

* Develop proficiency in creating low-fidelity wireframes using a digital tool.

* Understand the purpose of placeholder content and annotations.

  • Activities:

* Choose a specific user flow from Week 2 and wireframe all associated screens in a digital tool.

* Focus on basic layout, placement of elements, and screen transitions.

* Practice adding basic annotations to explain functionality.

* Review existing app wireframes for inspiration and best practices.

  • Deliverable: Low-fidelity wireframes for a complete user flow (e.g., user onboarding or core task completion) with basic annotations.

Week 4: Component Library & UI Patterns (Approx. 15-18 hours)

  • Learning Objectives:

* Understand the concept and benefits of a design system and component library.

* Identify common mobile UI components (buttons, input fields, navigation bars, cards, lists, modals).

* Learn to create reusable components within your chosen wireframing tool.

* Explore and apply standard mobile interaction patterns (e.g., swipe, tap, long press, drag-and-drop).

  • Activities:

* Start building a basic component library within your wireframing tool (e.g., 5-7 common components).

* Analyze popular mobile apps to identify their UI components and interaction patterns.

* Re-use components to build new screens or refine existing ones from Week 3.

  • Deliverable: A foundational component library (at least 10 reusable components) and 2-3 screens demonstrating the application of these components.

Week 5: Interaction Patterns & Prototyping (Approx. 12-15 hours)

  • Learning Objectives:

* Define and document interaction patterns for various UI elements.

* Learn to add basic interactivity (click, hover, swipe) to wireframes to create a navigable prototype.

* Understand the role of micro-interactions and animations (even at a conceptual wireframe level).

* Prepare for user testing with wireframes.

  • Activities:

* Add basic interactive links between your wireframed screens to create a navigable flow.

* Document the intended interaction for key elements (e.g., "tapping this button navigates to X screen, showing a loading spinner for 2 seconds").

* Conduct a self-review of your prototype to identify any broken flows or missing interactions.

  • Deliverable: An interactive, navigable wireframe prototype demonstrating a complete user flow.

Week 6: Developer Handoff & Documentation (Approx. 10-12 hours)

  • Learning Objectives:

* Understand the essential elements of a developer handoff document.

* Learn to add detailed annotations, specifications, and redlines to wireframes.

* Define and document states for interactive elements (e.g., default, hover, active, disabled).

* Understand how to specify basic animations and transitions.

* Learn to export assets and specifications effectively.

  • Activities:

* Select a few screens from your prototype and add comprehensive annotations for every interactive element and crucial layout detail.

* Document states for 2-3 interactive components (e.g., button states).

* Write a brief "developer notes" section for your project, outlining key considerations.

* Explore the handoff features of your chosen wireframing tool.

  • Deliverable: Annotated wireframes for 3-5 key screens, including component states and initial developer notes.

Week 7: Building a Complete Wireframe Kit (Project Work - Approx. 20-25 hours)

  • Learning Objectives:

* Integrate all learned concepts into a cohesive "Mobile App Wireframe Kit" for a new, moderately complex app idea.

* Practice iterative design and refinement.

* Manage a larger-scale wireframing project from conception to documentation.

  • Activities:

* Project Kick-off: Choose a new app idea (e.g., a simple social media app, a recipe organizer, a budget tracker).

* Phase 1: Research & IA: Define personas, user stories, sitemap, and key user flows.

* Phase 2: Wireframing & Components: Create low-fidelity wireframes for core screens, build out a specific component library for this app.

* Phase 3: Interactions & Prototype: Add interactivity and build a navigable prototype for 2-3 critical user flows.

  • Deliverable: Draft version of a complete wireframe kit for your chosen app, including initial documentation.

Week 8: Review, Refinement & Presentation (Approx. 15-20 hours)

  • Learning Objectives:

* Conduct thorough self-review and identify areas for improvement.

* Refine wireframes, component library, and interaction patterns based on best practices.

* Finalize developer handoff notes and documentation.

* Learn to present your wireframe kit effectively.

  • Activities:

* Critique your Week 7 project against all the learning objectives from previous weeks.

* Iterate and refine all aspects: screen flows, component library, interaction patterns, and developer notes.

* Prepare a brief presentation (5-10 slides) summarizing your app concept and showcasing key aspects of your wireframe kit.

* Practice explaining your design decisions and the value of your kit.

  • Deliverable: Final Mobile App Wireframe Kit for your chosen app, including:

* User Personas & User Stories

* Sitemap & Key User Flows

* Low-Fidelity Wireframes for all core screens

* Interactive Prototype of primary user flows

* Comprehensive Component Library

* Detailed Interaction Patterns documentation

* Developer Handoff Notes & Annotations


3. Recommended Resources

Books:

  • "Don't Make Me Think, Revisited" by Steve Krug (UX/Usability 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 (Agile UX Process)
  • "About Face: The Essentials of Interaction Design" by Alan Cooper (Interaction Design)

Online Courses & Tutorials:

  • Coursera/edX: "Google UX Design Professional Certificate," "Introduction to UX Design" (various universities)
  • Udemy/Skillshare: Search for "Wireframing for Beginners," "Figma/Adobe XD/Sketch Masterclass," "UX Design Fundamentals."
  • YouTube Channels: The Futur, AJ&Smart, NNgroup (Nielsen Norman Group), Figma/Adobe XD official channels.
  • Specific Tool Tutorials: Official documentation and tutorials for Figma, Adobe XD, Sketch.

Tools:

  • Primary Wireframing Tools:

* Figma: Industry-standard, collaborative, web-based (highly recommended).

* Adobe XD: Part of Adobe Creative Cloud, good for UI/UX.

* Sketch: Mac-only, robust for UI design.

* Balsamiq: Focuses specifically on low-fidelity wireframes, great for quick ideation.

  • Diagramming Tools (for Sitemaps/User Flows):

* Miro, Lucidchart, Whimsical (many wireframing tools also have this capability).

  • Collaboration & Documentation:

* Notion, Confluence, Google Docs (for project notes and detailed documentation).

Websites & Blogs:

  • Nielsen Norman Group (NN/g): Research-backed UX articles.
  • Smashing Magazine: Extensive articles on web and mobile design.
  • UX Planet (Medium): Collection of UX articles from various designers.
  • Dribbble / Behance: For design inspiration and examples (focus on why things are designed a certain way, not just aesthetics).
  • Mobile-patterns.com: A great resource for common mobile UI patterns.

Communities:

  • Local UX Meetups: Networking and learning from peers.
  • Online Forums/Subreddits: r/UXDesign, r/userexperience, r/FigmaDesign.
  • LinkedIn Groups: Connect with UX professionals.

4. Milestones

  • End of Week 2: Completed User Research artifacts (Personas, User Stories, Sitemap, User Flows).
  • End of Week 4: Established foundational Component Library and initial low-fidelity wireframes for a core feature.
  • End of Week 6: Interactive Prototype demonstrating a complete user flow with initial developer annotations.
  • End of Week 8: Final Mobile App Wireframe Kit for a chosen app concept, including all specified deliverables.

5. Assessment Strategies

  • Self-Assessment Checklists: Each week, review your work against the learning objectives and ensure all activities/deliverables are completed to a satisfactory standard.
  • Practical Application: The core assessment is the successful completion of the "Final Mobile App Wireframe Kit" project, demonstrating proficiency across all aspects of the wireframing process.
  • Peer Review/Feedback (Optional but Recommended): Share your work with a peer, mentor, or online community for constructive criticism. This helps identify blind spots and improve design rationale.
  • Portfolio Building: Actively build out a portfolio piece with your final wireframe kit. Document your process, challenges, and solutions. This serves as a tangible demonstration of your skills.
  • "Walkthrough" Presentation: Practice explaining your wireframe kit, design decisions, and the rationale behind your choices. This hones your communication skills, crucial for professional contexts.

This comprehensive study plan provides a clear, actionable path to mastering mobile app wireframing. Dedication to the weekly tasks and consistent practice will ensure you develop the expertise needed to create high-quality, professional wireframe kits.

yaml

Detailed Flow: Product Browsing & Purchase

flow_id: F_PURCHASE_001

name: Product Browsing & Purchase

description: User journey from discovering a product to adding it to the cart.

screens:

- screen_id: S_HOME_001

name: Home Screen

type: content_display

elements:

- type: header

elements:

- type: icon_button

icon: "menu"

action: "OPEN_DRAWER_NAV"

- type: text

content: "App Name"

- type: icon_button

icon: "shopping_cart"

action: "NAVIGATE(S_CART_001)"

badge_count: "cart_item_count"

- type: search_bar

placeholder: "Search for products..."

action: "NAVIGATE(S_SEARCH_RESULTS_001)"

- type: carousel

role: "Featured Products/Banners"

items:

- image: "banner_1.jpg"

action: "NAVIGATE(S_PDP_001)"

- image: "banner_2.jpg"

action: "NAVIGATE(S_PLP_001, category_id: 'electronics')"

- type: horizontal_scroll_list

role: "Categories"

items:

- label: "Electronics"

action: "NAVIGATE(S_PLP_001, category_id: 'electronics')"

- label: "Fashion"

action: "NAVIGATE(S_PLP_001, category_id: 'fashion')"

# ... more categories

- type: vertical_list

role: "Recommended Products"

items:

- type: product_card

product_id: "PROD_001"

action: "NAVIGATE(S_PDP_001, product_id: 'PROD_001')"

- type: product_card

product_id: "PROD_002"

action: "NAVIGATE(S_PDP_001, product_id: 'PROD_002')"

transitions:

- from_element: "Search Bar"

to_screen: "S_SEARCH_RESULTS_001"

trigger: "tap"

- from_element: "Category item"

to_screen: "S_PLP_001"

trigger: "tap"

- from_element: "Product Card

gemini Output

Mobile App Wireframe Specification

Project: [Your Mobile App Name Here]

Version: 1.0

Date: October 26, 2023

Prepared For: [Client/Stakeholder Name]


1. Introduction & Project Overview

This document provides a comprehensive wireframe specification for the mobile application, outlining the core user experience, screen flows, reusable UI components, interaction patterns, and critical notes for development. The goal of this specification is to serve as a foundational blueprint for design and development, ensuring a clear understanding of the app's structure and functionality before proceeding to high-fidelity design.

Key Objectives of this Wireframe Kit:

  • To visualize the app's structure and hierarchy.
  • To define user flows and interactions.
  • To establish a consistent set of UI components.
  • To provide clear instructions for developers, minimizing ambiguity.
  • To facilitate early feedback and iteration on the app's usability.

2. App Overview & Core Functionality

App Name: [Placeholder: e.g., "PantheraConnect", "EcoTracker"]

Target Audience: [Placeholder: e.g., "Young professionals seeking networking opportunities", "Environmentally conscious individuals tracking their carbon footprint"]

Core Value Proposition: [Placeholder: e.g., "Seamless professional networking on the go", "Empowering users to monitor and reduce their environmental impact"]

Key Features (High-Level):

  • [Feature 1: e.g., User Registration & Profile Management]
  • [Feature 2: e.g., Content Feed/Dashboard Display]
  • [Feature 3: e.g., Search & Filtering Functionality]
  • [Feature 4: e.g., Interactive Data Visualization]
  • [Feature 5: e.g., Notifications & Alerts]

3. Screen Flows & User Journeys

This section details the primary user journeys within the application, illustrating how users navigate between screens to accomplish key tasks. Each flow is described sequentially, indicating screens and key user actions.

3.1. General Navigation Structure

The app primarily utilizes a Bottom Navigation Bar for primary sections and a Header Bar for contextual actions and screen titles.

  • Bottom Navigation Bar: Persistent across main sections, providing quick access to 3-5 core functionalities.
  • Header Bar: Displays screen title, back button (where applicable), and contextual action buttons (e.g., "Add", "Filter", "Settings").
  • Modal Sheets/Pop-ups: Used for secondary actions, confirmations, or brief input forms that don't require a full screen transition.

3.2. Key User Flows

Flow 1: User Onboarding & Account Creation

  • Purpose: Guides new users through initial setup and account registration.
  • Screens Involved:

1. Splash Screen: App logo, brief loading state (optional).

2. Welcome/Introduction Screens (x3): Swipeable screens highlighting key app features with illustrative graphics. "Skip" option available.

3. Login/Sign Up Screen: Options for "Sign Up" (email/password, social login) and "Login" for existing users.

4. Registration Form (New User): Fields for Name, Email, Password, Confirm Password. "Terms & Conditions" checkbox.

5. Profile Setup (Optional): Fields for Profile Picture, Bio, Interests. "Skip for now" option.

6. Permissions Request (Optional): Location, Notifications, Camera access. User-friendly explanations for each.

7. Home/Dashboard Screen: First view after successful onboarding.

Flow 2: Main Content Browsing & Interaction

  • Purpose: Allows users to view and interact with the app's primary content.
  • Screens Involved:

1. Home/Dashboard Screen: Displays a feed of [Content Type, e.g., posts, data summaries].

* Action: Tap on a [Content Item].

2. Content Detail Screen: Displays full details of the selected [Content Item].

* Actions: "Like/Favorite", "Comment", "Share", "Edit" (if applicable), "Back" to Home.

3. Comment Section (Modal/Separate Screen): Allows users to view and add comments.

* Action: Tap "Add Comment".

4. User Profile (from Content Detail): Tap on author's name/profile picture.

5. Search Screen: Accessed via search icon in Header or Bottom Nav.

* Action: Enter search query.

6. Search Results Screen: Displays filtered content based on query.

Flow 3: Profile Management & Settings

  • Purpose: Enables users to manage their personal information and app settings.
  • Screens Involved:

1. Profile Screen: Accessed via Bottom Nav or Header icon. Displays user's profile picture, name, bio, and summary of activity.

* Action: Tap "Edit Profile".

2. Edit Profile Screen: Fields for Name, Bio, Profile Picture upload, Email, Password change. "Save Changes" button.

3. Settings Screen: List of settings categories (e.g., "Notifications", "Privacy", "Account", "About").

* Action: Tap on "Notifications".

4. Notification Settings Screen: Toggles for various notification types (e.g., Push, Email).

5. Privacy Settings Screen: Options for data sharing, visibility.

6. Account Settings Screen: Options for "Change Password", "Delete Account".

* Action: Tap "Logout".

7. Confirmation Dialog (Logout/Delete): "Are you sure?" confirmation with "Yes/No" options.


4. Component Library

This section defines the reusable UI components that will be consistently used throughout the application. Each component includes its name, description, states, and general usage guidelines.

4.1. Navigation Components

  • Bottom Navigation Bar:

* Description: Primary navigation element, fixed at the bottom of the screen.

* States: Default (inactive icon/label), Active (highlighted icon/label).

* Usage: For 3-5 core app sections. Icons should be clear and distinct.

  • Header Bar:

* Description: Top bar containing screen title, back button, and contextual actions.

* States: Default, with Back Button, with Action Icons (e.g., Search, Add, Settings).

* Usage: Always present on primary screens. Back button for navigating one step back.

  • Tab Bar (Internal/Segmented Control):

* Description: Used within a screen to switch between sub-sections (e.g., "My Posts" vs. "Saved Posts").

* States: Default (inactive tab), Active (highlighted tab).

* Usage: For organizing content on a single screen.

4.2. Buttons & Calls to Action

  • Primary Button:

* Description: High-emphasis button for primary actions (e.g., "Submit", "Save", "Continue").

* States: Default, Hover/Pressed, Disabled, Loading.

* Usage: One primary action per screen/view.

  • Secondary Button:

* Description: Medium-emphasis button for secondary actions (e.g., "Cancel", "Learn More").

* States: Default, Hover/Pressed, Disabled.

* Usage: When a primary action is also present, or for less critical actions.

  • Tertiary/Text Button:

* Description: Low-emphasis, text-only button (e.g., "Forgot Password?", "Skip").

* States: Default, Hover/Pressed.

* Usage: For supplementary actions or links.

  • Icon Button:

* Description: Button represented solely by an icon (e.g., "Like", "Share", "Edit").

* States: Default, Pressed, Active/Inactive.

* Usage: For quick, universal actions.

4.3. Input Elements

  • Text Input Field:

* Description: Single-line input for text, numbers, email, etc.

* States: Default, Focused, Filled, Error (with helper text), Disabled.

* Usage: For all form inputs. Clear placeholder text is essential.

  • Text Area:

* Description: Multi-line input for longer text (e.g., "Bio", "Comment").

* States: Default, Focused, Filled, Error.

* Usage: For extended user input.

  • Dropdown/Picker:

* Description: Allows selection from a predefined list of options.

* States: Default, Open, Selected.

* Usage: For selecting categories, dates, or specific values.

  • Checkbox:

* Description: Allows selection of one or more options from a list, or toggling a single setting.

* States: Unchecked, Checked, Disabled.

* Usage: For multiple selections or binary choices.

  • Radio Button:

* Description: Allows selection of only one option from a mutually exclusive list.

* States: Unselected, Selected, Disabled.

* Usage: For single-choice selections.

  • Toggle Switch:

* Description: Binary switch for turning settings on/off.

* States: Off (Inactive), On (Active), Disabled.

* Usage: For immediate application of a setting.

4.4. Display & Feedback Components

  • Cards:

* Description: Container for grouping related content, often with a shadow or distinct background.

* States: Default, Pressable.

* Usage: For displaying individual items in a list (e.g., "Post Card", "Product Card").

  • List Items:

* Description: Single row items in a list, often with an icon, text, and optional accessory.

* States: Default, Pressed.

* Usage: For settings menus, simple lists, or navigation links.

  • Avatars/Profile Images:

* Description: Circular or square images representing users or entities.

* States: Default (user image), Placeholder (initials or generic icon).

* Usage: For user profiles, comments, or author information.

  • Toast Notification:

* Description: Small, non-intrusive message appearing temporarily at the bottom/top of the screen.

* States: Default (appears for 3-5 seconds, then fades).

* Usage: For brief feedback (e.g., "Item added to cart", "Settings saved").

  • Modal Dialog/Alert:

* Description: Overlay blocking interaction with the main screen, requiring user action.

* States: Default (visible with title, message, and 1-2 buttons).

* Usage: For critical information, confirmations, or short forms.

  • Loading Indicator/Spinner:

* Description: Visual cue indicating data is being loaded or an action is in progress.

* States: Default (spinning animation).

* Usage: When waiting for network requests or heavy processing.

  • Empty State:

* Description: Screen or section displayed when there is no content to show (e.g., "No items in cart").

* States: Default (with illustrative icon/text and optional CTA).

* Usage: To guide users when a section is empty.


5. Interaction Patterns

This section outlines common interaction behaviors and user feedback mechanisms within the app.

5.1. Navigation & Flow

  • Back Button Logic: The hardware/system back button (Android) or the "Back" arrow in the Header Bar (iOS/Android) should consistently navigate to the previous screen in the user's history stack. Exception: Exiting the app from the root screen.
  • Bottom Navigation Interaction: Tapping an inactive tab navigates directly to that section's root screen. Tapping an active tab again should scroll to the top of the current screen (if scrollable) or refresh the content.
  • External Links: Tapping external links should open in the device's default web browser.

5.2. Data Entry & Forms

  • Keyboard Behavior: The keyboard should automatically appear when an input field is focused. The screen should adjust (scroll or resize) to ensure the active input field is visible above the keyboard.
  • Input Validation:

* Real-time Feedback: Invalid input should show immediate visual feedback (e.g., red border, error message below field) as the user types or after losing focus.

* Submission Validation: On form submission, all fields should be validated, and errors clearly indicated near the respective fields.

  • Placeholder Text: All input fields should have descriptive placeholder text indicating expected input.
  • Clear Input: Input fields should have an "X" icon to clear text for long inputs.

5.3. Feedback & Notifications

  • Loading States: Use spinners or skeleton loaders for content that takes time to load. Avoid blank screens.
  • Success Messages: Use Toast Notifications for brief, non-critical success messages (e.g., "Profile Updated").
  • Error Messages:

* Field-specific: For validation errors, display messages directly below the input field.

* General/Critical: For network errors or critical failures, use a Modal Dialog or a persistent banner at the top of the screen.

  • Confirmation Dialogs: Use Modal Dialogs for irreversible actions (e.g., "Delete Account", "Confirm Purchase").

5.4. Gestures & Interactions

  • Tap: Primary interaction for buttons, list items, and actionable components.
  • Swipe:

* Horizontal: For carousels, image galleries, or switching between tabs/segments on a single screen.

* Vertical: For scrolling content.

* Swipe-to-Refresh: Pulling down on a list/feed to refresh content.

  • Long Press: For secondary actions or context menus (e.g., "Copy text", "More options").
  • Pinch-to-Zoom: For images or detailed views where zooming is beneficial.

6. Developer Handoff Notes

This section provides crucial technical and implementation considerations for the development team to ensure the wireframes are translated into a robust and performant application.

6.1. General Guidelines

  • Platform Consistency: Adhere to platform-specific UI/UX guidelines (Material Design for Android, Human Interface Guidelines for iOS) where general patterns are not explicitly defined in these wire
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);}});}