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

As part of the "Mobile App Wireframe Kit" workflow, this deliverable provides a comprehensive, structured specification for your mobile application's wireframes. This document outlines the core user flows, defines reusable UI components, details interaction patterns, and includes essential notes for developers.

This output is designed to be a "production-ready" blueprint, using a structured markdown format that can be easily consumed, versioned, and interpreted by design and development teams.


Mobile App Wireframe Specification: [Your App Name]

Version: 1.0.0

Date: 2023-10-27

Author: PantheraHive AI

Purpose: To define the structural layout, information hierarchy, and functional behavior of the mobile application through detailed wireframes, screen flows, and component specifications, facilitating a seamless transition to UI design and development.


1. Introduction & Scope

This document serves as the foundational wireframe specification for the [Your App Name] mobile application. It focuses on the core user experience, outlining the essential screens, their logical connections, and the interactive elements within them. This specification is intentionally devoid of visual styling (colors, fonts, detailed graphics) to concentrate purely on functionality, usability, and content organization.

Key Objectives:

Scope: This specification covers the primary features and user flows identified for the initial release of [Your App Name]. Future iterations or secondary features will be documented in subsequent versions.


2. Core Application Flows

This section details the critical user journeys within the application, illustrating the sequence of screens and key decision points.

2.1. Flow 1: User Onboarding & Account Creation

Description: Guides new users through the initial setup process, including welcome screens, sign-up/login, and initial profile setup.

text • 3,890 chars
**Screen Sequence & Key Actions:**

*   **Home Dashboard:**
    *   `Action: Tap Search Bar` -> Navigates to Search Results Screen (with keyboard active).
    *   `Action: Tap Category Card` -> Navigates to Category Listing Screen (not detailed here).
*   **Search Results Screen:**
    *   `Input: Search Bar (pre-filled if from Home)` -> Updates results dynamically.
    *   `Action: Tap Filter Icon` -> Opens Filter/Sort Options Modal.
    *   `Action: Tap Sort Icon` -> Opens Filter/Sort Options Modal.
    *   `Action: Tap Item Card` -> Navigates to Item Detail Screen.
*   **Filter/Sort Options Modal:**
    *   `Input: Checkboxes, Radio Buttons, Sliders`.
    *   `Action: "Apply Filters"` -> Closes modal, updates Search Results Screen.
    *   `Action: "Clear All"` -> Resets filters, updates modal.
*   **Item Detail Screen:**
    *   `Action: Tap "Add to Favorites" button` -> Toggles favorite status, shows confirmation (Toast).
    *   `Action: Tap "Share" icon` -> Triggers OS native share sheet.
    *   `Action: Tap Back Button` -> Navigates back to Search Results Screen.

---

## 3. Screen Specifications

This section provides detailed outlines for key screens, listing their primary components and content areas.

### 3.1. Screen: Home Dashboard

**Purpose:** Provides an overview and quick access to main features and personalized content.

**Key Elements:**

*   **Header:**
    *   `Left:` Hamburger Menu Icon (opens Navigation Drawer).
    *   `Center:` App Logo/Title.
    *   `Right:` Notification Bell Icon (indicates unread notifications).
*   **Search Bar:**
    *   Placeholder: "Search for items..."
    *   `Interaction:` Tapping opens Search Results Screen.
*   **Content Sections (Scrollable Vertical List):**
    *   **"Welcome Back, [User Name]!"** (Personalized Greeting)
    *   **"Quick Actions" Card Carousel:**
        *   `Card 1:` "Browse Categories"
        *   `Card 2:` "View Favorites"
        *   `Card 3:` "Recent Activity"
    *   **"Recommended Items" Section:**
        *   Horizontal scrollable list of `Item Card` components.
        *   `Action: "View All"` (link) -> Navigates to a full recommendation list.
    *   **"Latest Updates" Section:**
        *   Vertical list of `News Feed Item` components.
*   **Bottom Navigation Bar:**
    *   `Icon 1:` Home (Active)
    *   `Icon 2:` Search
    *   `Icon 3:` Favorites
    *   `Icon 4:` Profile

### 3.2. Screen: Item Detail Screen

**Purpose:** Displays comprehensive information about a selected item.

**Key Elements:**

*   **Header:**
    *   `Left:` Back Arrow Icon.
    *   `Center:` "Item Details" Title.
    *   `Right:` Share Icon, Favorite Icon (toggle state).
*   **Item Image Carousel:**
    *   Horizontal scrollable images of the item.
    *   Pagination dots below.
*   **Item Information Section:**
    *   `Item Name` (Large, Bold Text).
    *   `Price` (Prominent Text).
    *   `Rating Component` (Star rating, e.g., 4.5/5).
    *   `Short Description` (Concise text).
    *   `"Add to Cart"` / `"Buy Now"` Button (Primary action).
*   **Detailed Description Section (Collapsible):**
    *   `"Description"` Header.
    *   Full item description text.
    *   `"Read More/Less"` Toggle.
*   **Specifications/Features Section (Collapsible):**
    *   `"Specifications"` Header.
    *   Key features/specs in a list or table format.
*   **Reviews Section:**
    *   `"Customer Reviews"` Header.
    *   Summary of reviews (e.g., "4.5 stars from 120 reviews").
    *   List of `Review Card` components.
    *   `Action: "See All Reviews"` (link).
*   **"You Might Also Like" Section:**
    *   Horizontal scrollable list of `Item Card` components.

---

## 4. Component Library

This section defines reusable UI components, their properties, states, and common usage patterns. This serves as a "code-like" specification for UI elements.

### 4.1. Button Component

Sandboxed live preview

This document outlines a comprehensive study plan designed to equip you with the knowledge and practical skills required to create a professional Mobile App Wireframe Kit. This plan integrates theoretical understanding with hands-on application, covering all essential aspects from foundational principles to developer handoff.


Mobile App Wireframe Kit: Detailed Study Plan

1. Introduction & Overall Goal

A Mobile App Wireframe Kit is a crucial deliverable in the product design process, serving as the blueprint for an application's structure, layout, content hierarchy, and basic functionality. It facilitates early validation, efficient communication between design, product, and development teams, and ensures a user-centered approach.

Overall Goal: To develop a robust understanding and practical proficiency in creating a complete mobile app wireframe specification, including screen flows, a comprehensive component library, defined interaction patterns, and clear developer handoff notes.

2. Weekly Schedule

This 6-week study plan is structured to provide a progressive learning path. Each week builds upon the previous, culminating in the ability to produce a complete wireframe kit.

| Week | Theme | Key Activities

* What are wireframes and why are they important?

* The role of wireframes in the product development lifecycle.

* Types of wireframes (low, mid, high-fidelity) and their appropriate use cases.

* Introduction to core UX principles relevant to wireframing (e.g., usability, consistency, feedback).

* Overview of popular wireframing tools (e.g., Figma, Sketch, Adobe XD) and selecting one for the course.

* Setting up your chosen wireframing tool and understanding its basic interface.

  • Week 2: Component Library & Atomic Design

* Understanding the concept of a component library and its benefits for efficiency and consistency.

* Introduction to Atomic Design principles (atoms, molecules, organisms, templates, pages) and how they apply to wireframing.

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

* Hands-on: Creating a basic set of reusable, low-fidelity components within your chosen tool.

* Organizing components into a logical structure.

  • Week 3: Screen Flows & User Journeys

* Understanding user journeys and task flows as the foundation for screen design.

* Techniques for mapping user flows (e.g., flowcharts, swimlanes).

* Translating user flows into distinct screens.

* Designing essential mobile app screens (e.g., Onboarding, Login/Signup, Home/Dashboard, Profile, Detail View, Settings).

* Connecting screens to illustrate the complete user journey and flow through the application.

* Hands-on: Creating a simple app's core screen flows.

  • Week 4: Interaction Patterns & Prototyping

* Exploring common mobile interaction patterns (e.g., tap, swipe, long press, drag-and-drop, pull-to-refresh).

* Understanding navigation patterns (e.g., tab bars, hamburger menus, breadcrumbs).

* Adding basic interactivity and transitions to wireframes using the prototyping features of your chosen tool.

json

{

"name": "Card",

"description": "A container for related pieces of information, often tappable.",

"types": [

"Basic",

"Image Top",

"Icon Left"

],

"properties": {

"title": { "type": "String", "required": true },

"subtitle": { "type": "String", "optional": true },

"description": { "type": "String", "optional": true },

"imageURL": { "type": "String", "optional": true, "description": "URL for image if 'Image Top' type" },

"iconName": {

gemini Output

Mobile App Wireframe Specification: [App Name Placeholder]

Date: October 26, 2023

Version: 1.0

Prepared For: [Customer Name Placeholder]

Prepared By: PantheraHive


1. Executive Summary

This document outlines the complete wireframe specification for the proposed "[App Name Placeholder]" mobile application. It serves as a foundational blueprint, detailing the core user experience, screen flows, a comprehensive component library, key interaction patterns, and essential notes for the development team.

The primary goal of this specification is to provide a clear, structured understanding of the application's functionality and user journey at a low-fidelity stage. This ensures alignment on the app's structure and behavior before proceeding to high-fidelity design and development.

This deliverable enables stakeholders to visualize the app's core functionalities, validate user flows, and prepare for the subsequent UI/UX design and technical implementation phases.

2. App Vision & Goals (Brief)

  • App Name: [App Name Placeholder]
  • Core Purpose: To [briefly state the app's main purpose, e.g., "connect users with local services," "facilitate personal finance management," "provide a platform for learning new skills"].
  • Target Audience: [e.g., "Young professionals aged 25-45," "Small business owners," "Students and educators"].
  • Key Value Proposition: [e.g., "Simplify task management," "Provide personalized recommendations," "Streamline communication"].

3. Key Features Overview

The application will primarily support the following core features:

  • User Onboarding & Profile Management: Account creation, login, profile editing, password recovery.
  • [Main Feature 1]: [e.g., "Browse and search for services/products"].
  • [Main Feature 2]: [e.g., "View detailed item/service information"].
  • [Main Feature 3]: [e.g., "Initiate a transaction/booking"].
  • [Main Feature 4]: [e.g., "Manage notifications and communication"].
  • Settings & Preferences: Customizing app behavior, privacy settings.

4. Screen Flow Diagrams (Conceptual)

This section describes the primary user journeys within the application. These are conceptual flows demonstrating the sequence of screens a user will navigate to complete specific tasks.

4.1. Flow 1: User Onboarding & Account Creation

  1. Splash Screen: App logo, brief loading animation.
  2. Welcome/Intro Screens (Optional - 2-3 screens): High-level app benefits, call to action (Sign Up / Log In).
  3. Sign Up Screen: Fields for Email, Password, Confirm Password. Options for social login (Google, Apple).
  4. Profile Setup (Optional - 1-2 screens): Request basic user info (Name, Avatar, Interests).
  5. Permissions Request (Optional): Location, Notifications, Camera access.
  6. Home/Dashboard Screen: First view after successful onboarding.

4.2. Flow 2: [Main Feature 1 - e.g., Browsing & Searching]

  1. Home/Dashboard Screen: Entry point.
  2. Search Screen (or Search Bar on Home): User inputs search query.
  3. Search Results Screen: Displays a list of relevant items/services.
  4. Filter/Sort Options (Modal/Sheet): Allows refining results based on criteria.
  5. [Item/Service] Detail Screen: Tapping on a result leads here.
  6. Back to Search Results / Home: Navigation options.

4.3. Flow 3: [Main Feature 2 - e.g., Completing a Transaction/Booking]

  1. [Item/Service] Detail Screen: User decides to proceed.
  2. Configuration/Options Screen (if applicable): Selecting variants, quantity, date/time.
  3. Summary/Review Screen: Displays all selected items, total cost, payment method selection.
  4. Payment Screen: Input payment details (credit card, digital wallet).
  5. Confirmation Screen: Success message, order/booking ID, next steps (e.g., "View Orders").
  6. Back to Home/Order History: Navigation.

4.4. Flow 4: Profile Management

  1. Home/Dashboard Screen: Access Profile via navigation (e.g., bottom tab bar, hamburger menu).
  2. Profile Screen: Displays user info, options to edit, view orders, settings.
  3. Edit Profile Screen: Fields for Name, Email, Phone, Address, Profile Picture.
  4. Change Password Screen: Current password, New password, Confirm new password.
  5. Settings Screen: General app settings (notifications, privacy, language, logout).

5. Wireframe Specification - Core Screens

This section provides a high-level description of the layout and key elements for essential screens.

5.1. Splash Screen

  • Purpose: Initial app launch screen for branding and loading.
  • Elements: Centered app logo, optional app name, potential loading indicator.
  • Duration: Brief (1-3 seconds).

5.2. Welcome / Onboarding Screens (x3)

  • Purpose: Introduce app benefits and guide new users.
  • Elements: Large hero image/illustration, catchy headline, descriptive text, pagination dots, "Skip" button (top right), "Next" / "Get Started" button (bottom).

5.3. Sign Up / Log In Screen

  • Purpose: Allow users to create an account or access an existing one.
  • Elements: App logo, "Sign Up" / "Log In" toggle/tabs, Email input, Password input, "Forgot Password" link, "Sign Up" / "Log In" button, Social login buttons (Google, Apple, Facebook), "Don't have an account?" / "Already have an account?" link.

5.4. Home / Dashboard Screen

  • Purpose: Primary entry point post-login, providing an overview and quick access to core features.
  • Elements:

* Top Bar: App logo/name, Search icon, Notification icon.

* Main Content Area:

* Personalized welcome message (e.g., "Hi [User Name]").

* Horizontal scrollable carousel for featured items/promotions.

* Quick access buttons/cards for key actions (e.g., "Browse Categories," "View Orders").

* Vertical list/grid of [e.g., "Recommended Items," "Latest Updates"].

* Bottom Navigation Bar: Icons for Home, [Main Feature 1], [Main Feature 2], Profile/Settings.

5.5. Search Results Screen

  • Purpose: Display findings based on user's search query.
  • Elements:

* Top Bar: Back button, Search input (pre-filled with query), Filter icon, Sort icon.

* Content Area:

* "X results for 'query'" text.

* List or grid of search results, each displaying: Image, Title, Short description, Price/Status.

* "Load More" button or infinite scroll.

* Optional: "No results found" state with suggestions.

5.6. [Item/Service] Detail Screen

  • Purpose: Provide comprehensive information about a specific item or service.
  • Elements:

* Top Bar: Back button, Share icon, Favorite icon.

* Main Content:

* Large image gallery/carousel.

* Title, Price/Cost, Rating (stars, count), Availability status.

* Detailed description (collapsible).

* Seller/Provider information (with link to profile).

* "Add to Cart" / "Book Now" / "Contact" button (sticky at bottom).

* "Related Items" / "Similar Services" section.

5.7. Profile Screen

  • Purpose: Allow users to view and manage their personal information and app-related data.
  • Elements:

* Top Bar: Back button, Edit Profile icon.

* User Info: Avatar, User Name, Email.

* Sections (List Items): My Orders/Bookings, My Favorites, Payment Methods, Addresses, Notifications, Settings, Help & Support, Log Out.

5.8. Settings Screen

  • Purpose: Configure app preferences and access legal information.
  • Elements:

* Top Bar: Back button, "Settings" title.

* Sections (List Items):

* Account: Edit Profile, Change Password, Delete Account.

* App Preferences: Notifications toggle, Language selection, Dark Mode toggle.

* Legal: Privacy Policy, Terms of Service, About Us.

* Support: Contact Us, FAQ.

* Action: Log Out button.


6. Component Library

This section defines reusable UI components that will be consistently used throughout the application. Each component should have a consistent appearance and behavior.

6.1. Navigation Components

  • Top App Bar (Header):

* Elements: Back button, Title, Optional action icons (e.g., Search, Notification, Share, Menu/Hamburger).

* States: Default, With title, With action icons.

  • Bottom Navigation Bar:

* Elements: 3-5 primary navigation icons with optional text labels.

* States: Active (selected) item, Inactive item.

  • Tabs:

* Elements: Horizontal list of clickable tabs to switch content views.

* States: Selected tab (highlighted), Unselected tab.

  • Floating Action Button (FAB):

* Elements: Circular button with an icon, typically for a primary action.

* States: Default, Pressed.

6.2. Input Components

  • Text Field:

* Elements: Label, Placeholder text, Input area.

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

* Variants: Single line, Multi-line (Textarea), Password (masked), Search (with clear button).

  • Buttons:

* Primary Button: Main call to action.

* Secondary Button: Less prominent action.

* Tertiary/Text Button: Minimal styling, for less critical actions or links.

* States (for all): Default, Hover (if applicable), Pressed, Disabled, Loading (with spinner).

  • Checkboxes:

* Elements: Square box, label.

* States: Unchecked, Checked, Disabled.

  • Radio Buttons:

* Elements: Circular button, label (for single selection from a group).

* States: Unselected, Selected, Disabled.

  • Toggle Switch:

* Elements: Slider switch, label (for on/off functionality).

* States: Off, On, Disabled.

  • Dropdown/Spinner:

* Elements: Label, selected value, down arrow icon.

* States: Default, Open (showing options list).

  • Date/Time Picker:

* Elements: Input field that triggers a calendar/time selection modal.

6.3. Display Components

  • Cards:

* Elements: Container for related content (image, title, description, actions).

* Usage: Item listings, news feeds, recommendations.

  • Images:

* Variants: Avatar (circular), Thumbnail (square/rectangular), Hero (full width).

* States: Loading placeholder, Loaded, Error.

  • Avatars:

* Elements: Circular image representing a user or entity.

* Variants: Small, Medium, Large.

  • Badges/Tags:

* Elements: Small label for categories, status, or counts.

  • Progress Indicators:

* Linear Progress Bar: For determinate progress.

* Circular Progress Indicator (Spinner): For indeterminate loading.

  • Alerts / Toasts:

* Elements: Temporary, non-disruptive message banner.

* Variants: Success, Error, Warning, Info.

6.4. Overlay Components

  • Modals / Dialogs:

* Elements: Overlay content (title, message, actions) that requires user interaction.

* Usage: Confirmations, critical alerts, detailed forms.

  • Action Sheets:

* Elements: List of actions presented from the bottom of the screen.

* Usage: Contextual actions, sharing options.


7. Interaction Patterns

This section describes common interaction paradigms and user feedback mechanisms within the application.

7.1. Navigation

  • Tap: Primary interaction for activating buttons, selecting items, navigating.
  • Swipe:

* Horizontal: For carousels, image galleries, tab switching (if applicable).

* Vertical: For scrolling through lists and content.

* Edge Swipe (Back): Standard iOS gesture for navigating back.

  • Pull-to-Refresh: Pulling down on a list/feed to fetch new content.
  • Bottom Sheet: Swiping up from the bottom to reveal contextual information or actions.

7.2. Data Entry & Forms

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