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

Generate a complete mobile app wireframe specification with screen flows, component library, interaction patterns, and developer handoff notes.

Project Plan: Mobile App Wireframe Kit Generation

This document outlines a comprehensive project plan for generating a complete Mobile App Wireframe Kit. This plan serves as our architectural blueprint, detailing the steps, objectives, resources, and quality assurance measures required to produce a professional, detailed, and actionable wireframe specification.


1. Project Overview & Core Objectives

The primary goal is to generate a comprehensive Mobile App Wireframe Kit, encompassing screen flows, a robust component library, defined interaction patterns, and clear developer handoff notes. This kit will serve as the foundational blueprint for the mobile application's user experience and functionality.

Core Project Objectives:

  • Define Application Scope: Clearly establish the mobile app's core features, user stories, and target audience to inform the wireframe architecture.
  • Information Architecture (IA) Development: Create a logical and intuitive structure for the app's content and navigation.
  • Detailed Screen Flow Mapping: Illustrate complete user journeys and decision points within the application.
  • Reusable Component Library Creation: Design a standardized set of UI elements to ensure consistency and efficiency.
  • Interaction Pattern Specification: Document how users will interact with the application's components and system feedback.
  • Developer Handoff Readiness: Structure the entire kit for clear, unambiguous communication with development teams, minimizing ambiguity and rework.
  • Usability & Consistency: Ensure the wireframes adhere to mobile UX/UI best practices and maintain visual and functional consistency throughout.

2. Weekly Schedule (Project Phases)

This schedule outlines a structured 4-week approach for a moderately complex mobile application. Adjustments may be made based on the actual scope and complexity of the specific app.

Week 1: Discovery & Information Architecture

  • Focus: Understanding core requirements, user needs, and establishing the foundational structure of the app.
  • Key Tasks:

* Review all provided project briefs, functional specifications, and user stories.

* Simulate stakeholder input to define target user personas and primary use cases.

* Conduct initial competitive analysis and research mobile UX best practices relevant to the app's domain.

* Map out high-level user flows to understand primary user journeys.

* Develop a comprehensive sitemap and information architecture (IA) diagram.

  • Expected Deliverables (End of Week 1):

* High-level User Flows (Diagrams)

* Sitemap / Information Architecture Diagram

* Project Brief Summary (Key features, user personas, goals)

Week 2: Screen Flow & Core Wireframing

  • Focus: Translating the defined information architecture into tangible screen layouts and detailed user paths.
  • Key Tasks:

* Translate high-level user flows into detailed, step-by-step screen flows, showing transitions and decision points.

* Begin sketching and digitally wireframing key screens for each primary user flow.

* Prioritize content placement, navigation elements, and primary calls-to-action (CTAs).

* Iterate on initial wireframes based on internal review and simulated feedback.

* Identify common UI patterns that emerge across different screens.

  • Expected Deliverables (End of Week 2):

* Detailed Screen Flow Diagrams (e.g., using swimlanes)

* Low-to-Mid Fidelity Wireframes for all Core Screens (annotated)

Week 3: Component Library & Interaction Patterns

  • Focus: Standardizing UI elements and defining the interactive behavior within the application.
  • Key Tasks:

* Extract and define all unique and recurring UI components from the wireframes (e.g., buttons, input fields, navigation bars, cards, lists, modals).

* Create a dedicated, organized component library including descriptions, various states (e.g., default, active, disabled, error), and usage guidelines.

* Document interaction patterns (e.g., tap, swipe, long press, drag & drop, form submission, loading states, error handling, animations).

* Refine existing wireframes to consistently apply the newly defined component library and interaction patterns.

  • Expected Deliverables (End of Week 3):

* Comprehensive Component Library (with states and usage notes)

* Interaction Pattern Specification Document

* Refined Wireframes (incorporating consistent components and interactions)

Week 4: Refinement, Documentation & Handoff Preparation

  • Focus: Finalizing all aspects of the wireframe kit, adding detailed annotations, and preparing for seamless developer handoff.
  • Key Tasks:

* Conduct a thorough review of all wireframes for consistency, completeness, and adherence to defined patterns and objectives.

* Add detailed annotations to each screen, explaining functionality, specific interactions, content requirements, and edge cases.

* Compile the final wireframe specification document, ensuring it includes all sections: introduction, IA, user flows, screen wireframes, component library, interaction patterns, and any specific developer notes.

* Organize all project files and assets for easy access and export.

* Perform a final internal quality assurance check against the project objectives.

  • Expected Deliverables (End of Week 4):

* Complete Mobile App Wireframe Kit (Final Deliverable)

* Cover Page & Project Introduction

* Information Architecture (Sitemap, Content Hierarchy)

* Detailed User Flows (Diagrams)

* Annotated Screen Wireframes (All key functionalities)

* Comprehensive Component Library

* Interaction Pattern Specification

* Developer Handoff Notes

* Glossary/Terminology


3. Key Deliverables & Milestones

This section outlines

gemini Output

This deliverable provides a comprehensive, structured specification for your mobile app wireframe kit, presented in a machine-readable JSON format. This "code" serves as the definitive blueprint for your app's low-fidelity design, detailing screens, reusable components, interaction patterns, and crucial notes for developers.

This output is designed to be directly consumed by developers, allowing for clear understanding and efficient implementation of the wireframe's intent, bridging the gap between design and development.


{
  "wireframeKit": {
    "metadata": {
      "appName": "PantheraConnect Mobile App",
      "version": "1.0.0-wireframe",
      "generationDate": "2023-10-27T10:30:00Z",
      "description": "Wireframe specification for the PantheraConnect mobile application, outlining core screens, reusable UI components, interaction patterns, and developer guidelines."
    },
    "components": [
      {
        "id": "button_primary",
        "name": "Primary Button",
        "type": "Button",
        "properties": {
          "text": "Call to Action",
          "backgroundColor": "#007AFF",
          "textColor": "#FFFFFF",
          "fontSize": 16,
          "padding": [12, 16],
          "borderRadius": 8,
          "state": ["default", "pressed", "disabled"]
        },
        "events": ["onTap"],
        "notes": "Used for main actions and navigation. Ensure sufficient tap target size."
      },
      {
        "id": "button_secondary",
        "name": "Secondary Button",
        "type": "Button",
        "properties": {
          "text": "Learn More",
          "backgroundColor": "#E0E0E0",
          "textColor": "#333333",
          "fontSize": 16,
          "padding": [12, 16],
          "borderRadius": 8,
          "state": ["default", "pressed", "disabled"]
        },
        "events": ["onTap"],
        "notes": "Used for secondary actions or less prominent navigation."
      },
      {
        "id": "input_text",
        "name": "Text Input Field",
        "type": "InputField",
        "properties": {
          "placeholder": "Enter text here...",
          "inputType": "text",
          "keyboardType": "default",
          "isSecure": false,
          "hasLabel": true,
          "label": "Label",
          "state": ["default", "focused", "error"]
        },
        "events": ["onChange", "onFocus", "onBlur"],
        "notes": "Standard input field. Consider accessibility for label association."
      },
      {
        "id": "input_password",
        "name": "Password Input Field",
        "type": "InputField",
        "properties": {
          "placeholder": "Password",
          "inputType": "password",
          "keyboardType": "default",
          "isSecure": true,
          "hasToggleVisibility": true,
          "label": "Password",
          "state": ["default", "focused", "error"]
        },
        "events": ["onChange", "onFocus", "onBlur", "onToggleVisibility"],
        "notes": "Password field with optional visibility toggle. Mask input by default."
      },
      {
        "id": "header_main",
        "name": "Main Header",
        "type": "Header",
        "properties": {
          "title": "Screen Title",
          "hasBackButton": true,
          "hasRightAction": false,
          "rightActionIcon": null,
          "backgroundColor": "#F8F8F8",
          "textColor": "#333333",
          "fontSize": 20
        },
        "events": ["onBackPress", "onRightActionPress"],
        "notes": "Top navigation bar. Back button typically navigates to previous screen in stack."
      },
      {
        "id": "text_link",
        "name": "Text Link",
        "type": "Text",
        "properties": {
          "text": "Forgot Password?",
          "textColor": "#007AFF",
          "fontSize": 14,
          "isUnderlined": true
        },
        "events": ["onTap"],
        "notes": "Inline text link for navigation or actions."
      },
      {
        "id": "alert_dialog",
        "name": "Alert Dialog",
        "type": "Overlay",
        "properties": {
          "title": "Alert Title",
          "message": "This is an alert message.",
          "buttons": ["OK", "Cancel"],
          "isDismissible": false
        },
        "events": ["onButtonPress", "onDismiss"],
        "notes": "Modal dialog for critical information or user confirmation."
      },
      {
        "id": "list_item_generic",
        "name": "Generic List Item",
        "type": "ListItem",
        "properties": {
          "title": "Item Title",
          "subtitle": "Item Subtitle",
          "hasChevron": true,
          "hasIcon": false,
          "iconName": null
        },
        "events": ["onTap"],
        "notes": "Reusable list item for displaying data in a scrollable list."
      },
      {
        "id": "tab_bar",
        "name": "Bottom Tab Bar",
        "type": "TabBar",
        "properties": {
          "tabs": [
            {"label": "Home", "icon": "home"},
            {"label": "Search", "icon": "search"},
            {"label": "Profile", "icon": "profile"}
          ],
          "activeTabColor": "#007AFF",
          "inactiveTabColor": "#8E8E93"
        },
        "events": ["onTabSelect"],
        "notes": "Persistent bottom navigation for primary app sections."
      }
    ],
    "screens": [
      {
        "id": "screen_splash",
        "name": "Splash Screen",
        "description": "Initial loading screen for app branding.",
        "layout": [
          {"type": "Image", "properties": {"source": "app_logo.png", "alt": "App Logo"}, "position": "center"},
          {"type": "Text", "properties": {"text": "PantheraConnect", "fontSize": 24, "fontWeight": "bold"}, "position": "bottom-center"}
        ],
        "notes": "Display for 2-3 seconds, then transition to Login/Onboarding."
      },
      {
        "id": "screen_login",
        "name": "Login Screen",
        "description": "Allows existing users to log in.",
        "layout": [
          {"componentId": "header_main", "properties": {"title": "Welcome Back", "hasBackButton": false}},
          {"componentId": "input_text", "properties": {"label": "Email", "placeholder": "your@example.com", "keyboardType": "email-address"}, "position": "top-center", "margin": [20, 0, 10, 0]},
          {"componentId": "input_password", "properties": {"label": "Password", "placeholder": "••••••••"}, "position": "center", "margin": [0, 0, 20, 0]},
          {"componentId": "button_primary", "properties": {"text": "Log In"}, "position": "bottom-center", "margin": [0, 0, 10, 0]},
          {"componentId": "text_link", "properties": {"text": "Forgot Password?"}, "position": "bottom-center", "margin": [0, 0, 20, 0]},
          {"componentId": "button_secondary", "properties": {"text": "Create New Account"}, "position": "bottom-center"}
        ],
        "notes": "Error states for invalid credentials should be clearly displayed below input fields."
      },
      {
        "id": "screen_signup",
        "name": "Sign Up Screen",
        "description": "Allows new users to create an account.",
        "layout": [
          {"componentId": "header_main", "properties": {"title": "Create Account", "hasBackButton": true}},
          {"componentId": "input_text", "properties": {"label": "Full Name", "placeholder": "John Doe"}, "position": "top-center", "margin": [20, 0, 10, 0]},
          {"componentId": "input_text", "properties": {"label": "Email", "placeholder": "your@example.com", "keyboardType": "email-address"}, "position": "center", "margin": [0, 0, 10, 0]},
          {"componentId": "input_password", "properties": {"label": "Password", "placeholder": "••••••••"}, "position": "center", "margin": [0, 0, 10, 0]},
          {"componentId": "input_password", "id": "confirm_password_input", "properties": {"label": "Confirm Password", "placeholder": "••••••••"}, "position": "center", "margin": [0, 0, 20, 0]},
          {"componentId": "button_primary", "properties": {"text": "Sign Up"}, "position": "bottom-center"}
        ],
        "notes": "Password strength indicators and confirmation matching should be considered for future iterations."
      },
      {
        "id": "screen_home_feed",
        "name": "Home Feed Screen",
        "description": "Main feed after login, displaying content.",
        "layout": [
          {"componentId": "header_main", "properties": {"title": "Feed", "hasBackButton": false, "hasRightAction": true, "rightActionIcon": "settings"}},
          {"type": "ScrollableArea", "id": "feed_list", "layout": [
            {"componentId": "list_item_generic", "properties": {"title": "New Post by User A", "subtitle": "Lorem ipsum dolor sit amet...", "hasChevron": false}},
            {"componentId": "list_item_generic", "properties": {"title": "Important Update", "subtitle": "Consectetur adipiscing elit.", "hasChevron": false}},
            {"componentId": "list_item_generic", "properties": {"title": "Event Reminder", "subtitle": "Sed do eiusmod tempor incididunt.", "hasChevron": false}}
          ]},
          {"componentId": "tab_bar", "properties": {"activeTab": "Home"}}
        ],
        "notes": "Content should be dynamically loaded. Pull-to-refresh interaction is expected."
      },
      {
        "id": "screen_profile",
        "name": "Profile Screen",
        "description": "User's personal profile and settings.",
        "layout": [
          {"componentId": "header_main", "properties": {"title": "Profile", "hasBackButton": false, "hasRightAction": true, "rightActionIcon": "edit"}},
          {"type": "Image", "properties": {"source": "user_avatar.png", "alt": "User Avatar", "borderRadius": "50%", "size": 80}, "position": "top-center", "margin": [20, 0, 10, 0]},
          {"type": "Text", "properties": {"text": "John Doe", "fontSize": 22, "fontWeight": "bold"}, "position": "center", "margin": [0, 0, 5, 0]},
          {"type": "Text", "properties": {"text": "john.doe@example.com", "fontSize": 16, "textColor": "#666666"}, "position": "center", "margin": [0, 0, 20, 0]},
          {"componentId": "list_item_generic", "properties": {"title": "Account Settings", "subtitle": "Manage your account details"}},
          {"componentId": "list_item_generic", "properties": {"title": "Privacy", "subtitle": "Review privacy settings"}},
          {"componentId": "list_item_generic", "properties": {"title": "Logout", "subtitle": null, "hasChevron": false, "textColor": "#D32F2F"}},
          {"componentId": "tab_bar", "properties": {"activeTab": "Profile"}}
        ],
        "notes": "Editable fields for profile details should be handled on a separate 'Edit Profile' screen."
      }
    ],
    "flows": [
      {
        "id": "flow_auth",
        "name": "Authentication Flow",
        "description": "User journey for login, signup, and password recovery.",
        "steps": [
          {"from": "screen_splash", "to": "screen_login", "trigger": "auto", "delayMs": 2500, "transition": "fade"},
          {"from": "screen_login", "to": "screen_home_feed", "trigger": "button_primary.onTap (Log In)", "condition": "valid_credentials", "transition": "push_left"},
          {"from": "screen_login", "to": "screen_signup", "trigger": "button_secondary.onTap (Create New Account)", "transition": "push_left"},
          {"from": "screen_login", "to": "screen_forgot_password", "trigger": "text_link.onTap (Forgot Password?)", "transition": "modal_up"},
          {"from": "screen_signup", "to": "screen_home_feed", "trigger": "button_primary.onTap (Sign Up)", "condition": "valid_registration", "transition": "push_left"},
          {"from": "screen_home_feed", "to": "screen_profile", "trigger":
gemini Output

Mobile App Wireframe Kit: Complete Specification

Project: [Your App Name/Project Title]

Document Version: 1.0

Date: October 26, 2023


1. Introduction

This document serves as a comprehensive wireframe specification for the [Your App Name] mobile application. It details the core user experience, screen layouts, interactive components, and navigational flows at a foundational level.

The purpose of this kit is to:

  • Clearly define the application's structure and functionality.
  • Provide a blueprint for the visual design phase.
  • Offer a common understanding for all stakeholders, including product owners, designers, and developers.
  • Facilitate early feedback and iteration on user flows and information architecture.

This specification focuses on the "what" and "how" of user interaction, laying the groundwork before detailed visual aesthetics and branding are applied.


2. Wireframe Overview & Interpretation Guide

Wireframes are low-fidelity representations of an application's interface. They prioritize functionality, content arrangement, and user interaction over visual design elements such as colors, typography, and imagery.

Key Characteristics of these Wireframes:

  • Grayscale Palette: Used to focus on structure and hierarchy without visual distractions.
  • Placeholder Text & Images: Generic text (e.g., "Lorem Ipsum") and simple shapes represent actual content.
  • Basic Iconography: Simple symbols illustrate functionality (e.g., a gear for settings).
  • Annotations: Explanations and notes accompany screens and components to clarify intent and behavior.

How to Interpret:

  • Focus on the arrangement of elements, the flow between screens, and the intended user actions.
  • Do not interpret the absence of specific visual details (like colors or specific fonts) as a final design decision. These will be addressed in subsequent UI/UX design phases.

Access to Wireframe Files:

  • All wireframes are available for interactive review at: [Placeholder for Link to Figma/Sketch/XD Prototype or PDF Export]
  • Individual screen files can be found in the shared project folder: [Placeholder for Link to Cloud Storage]

3. Core App Vision: [Your App Name]

[Your App Name] aims to revolutionize [briefly state the core problem it solves, e.g., "personal productivity by providing an intuitive and efficient platform for managing tasks and projects."]. The app focuses on simplicity, user-friendliness, and powerful organizational tools to help users achieve their goals with clarity and ease.


4. Screen Flows (User Journeys)

This section outlines the primary user journeys within the application, demonstrating how users navigate through different screens to accomplish key tasks.

4.1. User Onboarding & Account Creation

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

1. Splash Screen: Initial app launch.

2. Welcome/Onboarding Intro (3 screens): Highlighting key features with brief descriptions.

3. Sign Up / Log In: Options to create a new account or sign in.

4. Create Account (Form): Email, password, username input.

5. Profile Setup (Optional): Add profile picture, name, bio.

6. Permissions Request: Push notifications, location (if applicable).

7. Dashboard/Home: First view of the app's main content.

4.2. Task Creation & Management

  • Purpose: Allow users to efficiently add, view, edit, and mark tasks as complete.
  • Screens Involved:

1. Dashboard/Home: Displays current tasks, projects, and quick-add button.

2. New Task (Modal/Screen): Input for task title, description, due date, priority, project assignment.

3. Task Details: View full details of a selected task, with options to edit, mark complete, or delete.

4. Edit Task (Modal/Screen): Pre-filled form to modify task details.

5. Project List/Details: View tasks associated with a specific project.

4.3. Project Management

  • Purpose: Enable users to create, organize, and track progress for their projects.
  • Screens Involved:

1. Projects List: Overview of all projects, with creation button.

2. New Project (Modal/Screen): Input for project name, description, start/end dates, members.

3. Project Details: View project overview, associated tasks, progress, and activity feed.

4. Edit Project (Modal/Screen): Modify project details.

4.4. Settings & Profile Management

  • Purpose: Allow users to customize app preferences and manage their profile information.
  • Screens Involved:

1. Profile (from Dashboard/Navigation): Displays user profile, quick access to settings.

2. Settings: General app settings (notifications, theme, language).

3. Account Settings: Change password, email, delete account.

4. Privacy & Security: Data policy, permissions.


5. Component Library

This section details the reusable UI components used throughout the application, ensuring consistency and efficiency in design and development.

5.1. Navigation Components

  • Top Bar (Header):

* Purpose: Global navigation, branding, and contextual actions.

* Usage: App title/logo, back button, menu/hamburger icon, action icons (e.g., search, add).

  • Bottom Navigation Bar:

* Purpose: Primary navigation between major sections of the app.

* Usage: Icons + text labels for 3-5 main destinations (e.g., Home, Projects, Inbox, Profile).

  • Floating Action Button (FAB):

* Purpose: Prominent action for the current screen context.

* Usage: Typically for "Add New Task," "Create Project," etc., positioned at the bottom right.

  • Side Drawer (Hamburger Menu):

* Purpose: Secondary navigation and less frequently accessed options.

* Usage: User profile, settings, help, logout, sometimes primary navigation on smaller apps.

5.2. Input Components

  • Text Field:

* Purpose: Single-line or multi-line text input.

* Usage: Usernames, passwords, task titles, descriptions. Includes states for active, inactive, error, disabled.

  • Button:

* Purpose: Trigger an action.

* Types: Primary (filled), Secondary (outlined), Tertiary (text only). Includes states for normal, pressed, disabled, loading.

  • Checkbox:

* Purpose: Select one or more options from a list.

* Usage: Marking tasks complete, selecting preferences.

  • Radio Button:

* Purpose: Select only one option from a mutually exclusive list.

* Usage: Priority selection (High, Medium, Low).

  • Dropdown/Spinner:

* Purpose: Select an item from a predefined list.

* Usage: Project assignment, category selection.

  • Date Picker:

* Purpose: Select a specific date or date range.

* Usage: Due dates, project timelines.

5.3. Content Display Components

  • Card:

* Purpose: Group related information into a distinct, actionable unit.

* Usage: Individual task items, project summaries.

  • List Item:

* Purpose: Display rows of information, often for navigation or selection.

* Usage: Settings options, task lists within a project.

  • Modal/Dialog:

* Purpose: Overlay content to request user input or display important information, temporarily interrupting the main flow.

* Usage: Confirmations, quick task creation, error messages.

  • Toast/Snackbar:

* Purpose: Provide brief, non-intrusive feedback messages.

* Usage: "Task saved successfully," "Network error."

5.4. Icons

  • Purpose: Visual cues for actions, categories, and information.
  • Usage: Navigation, action buttons, status indicators.
  • Style: Consistent outline or filled style throughout the app.

6. Interaction Patterns

This section describes common interaction behaviors and user feedback mechanisms implemented throughout the application.

6.1. Navigation & Transitions

  • Tapping: Primary interaction for activating buttons, list items, and navigating.
  • Swiping:

* Horizontal: Used for navigating between tabs (e.g., "All Tasks," "Today," "Upcoming") or dismissing items (e.g., "Swipe to delete task").

* Vertical: Standard scrolling for content.

  • Back Button: Standard system back button behavior will apply, navigating to the previous screen in the stack.
  • Transitions:

* Screen-to-Screen: Typically a slide-in/slide-out animation (from right for forward, from left for back).

* Modal/Dialog: Fade-in and scale-up from center.

6.2. Data Input & Forms

  • Real-time Validation: Input fields will provide immediate feedback (e.g., red border, error message) for invalid entries (e.g., invalid email format, empty required fields).
  • Keyboard Management: Keyboard should appear automatically when an input field is focused and dismiss gracefully upon form submission or tapping outside the input area.
  • Form Submission:

* Loading States: Buttons will display a loading spinner or text while data is being processed.

* Success Feedback: Toast message or temporary success state on the screen.

* Error Feedback: Specific error messages related to the issue (e.g., "Invalid credentials," "Network connection failed").

6.3. Data Loading & Empty States

  • Loading Indicators: Spinners will be used for full-screen loading, while skeleton loaders or progress bars will be used for partial content loading.
  • Empty States: Screens with no content (e.g., "No tasks yet," "No projects created") will display illustrative graphics and clear calls-to-action to guide the user.

6.4. User Feedback & Alerts

  • Toasts/Snackbars: Used for transient, non-disruptive messages (e.g., "Task marked complete").
  • Alert Dialogs: Used for critical information or actions requiring user confirmation (e.g., "Are you sure you want to delete this task?").
  • Haptic Feedback: Subtle vibrations may be used for key interactions (e.g., long press, successful drag-and-drop).

7. Developer Handoff Notes

This section provides essential guidelines and specifications for the development team to ensure accurate implementation of the wireframe design.

7.1. General Implementation Guidelines

  • Responsiveness: While primarily designed for mobile portrait view, ensure layouts adapt gracefully to different screen sizes and aspect ratios within the mobile ecosystem.
  • Accessibility:

* Ensure all interactive elements have appropriate tap targets (minimum 44x44 dp).

* Implement proper semantic structure for screen readers (e.g., content descriptions for images/icons).

* Consider sufficient contrast for text (even in grayscale, implying future color choices).

  • Performance: Prioritize smooth animations, fast loading times, and efficient data handling. Implement lazy loading for lists and images where appropriate.
  • Error Handling: Implement robust error handling for all API calls and user inputs, displaying user-friendly messages as specified in the interaction patterns.
  • Empty States: Ensure all potential empty states are handled and display appropriate UI as designed in the wireframes.

7.2. Technical Specifications (Wireframe Level)

  • Target Platforms: iOS (Native/SwiftUI) and Android (Native/Jetpack Compose) / Cross-platform (React Native/Flutter).
  • Screen Dimensions:

* Base Resolution: Designed primarily for a common mobile screen width (e.g., 375pt / 414pt for iOS, 360dp for Android).

* Scaling: Layouts should be built using flexible units (e.g., dp, pt, percentages) to scale across devices.

  • Typography (Placeholder for Wireframes):

* Font Family: (To be defined in UI design phase, e.g., "Inter").

* Sizes (Relative):

* Heading 1: Large (e.g., 28-32pt/sp)

* Heading 2: Medium (e.g., 20-24pt/sp)

* Body Text: Standard (e.g., 14-16pt/sp)

* Caption/Small Text: Small (e.g., 12-13pt/sp)

  • Color Palette (Wireframe Representation):

* Primary Actions: Represented by a dark gray.

* Secondary Actions: Represented by a lighter gray or outline.

* Text: Dark gray for primary, lighter gray for secondary.

* Backgrounds: Light gray or white.

(Note: Actual brand colors will be introduced in the UI design phase.)*

  • Spacing & Grid:

*Base

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