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

This deliverable provides a comprehensive Mobile App Wireframe Specification, detailing screen flows, a reusable component library, interaction patterns, and critical developer handoff notes. The specifications are presented in a structured, machine-readable format (JSON), accompanied by illustrative code examples to facilitate seamless integration into development workflows.


Mobile App Wireframe Kit Specification

This document outlines the complete wireframe specification for a mobile application, providing a foundational blueprint for its user interface and interaction design. The goal is to deliver a clear, actionable guide for development, ensuring consistency and efficiency.


1. Executive Summary

This wireframe kit provides a detailed, structured specification for a mobile application, encompassing its core user flows, modular UI components, and interaction behaviors. The output is designed to be directly consumable by development teams, with structured data (JSON) for screens, components, and interactions, complemented by developer notes and illustrative code snippets. This approach aims to reduce ambiguity, accelerate development, and ensure a unified understanding of the application's front-end architecture.


2. Screen Flow Specification

The following JSON defines the structure and navigation paths for the primary screens of the mobile application. Each screen includes an ID, title, a list of components it contains, and potential navigation targets.

text • 240 chars
---

## 3. Component Library Specification

This JSON defines the atomic and molecular UI components used throughout the application. Each component has a unique ID, type, and a set of properties that dictate its appearance and behavior.

Sandboxed live preview

Step 1 of 3: gemini → plan_architecture - Detailed Study Plan for Mobile App Wireframe Kit Creation

As part of the "Mobile App Wireframe Kit" workflow, and specifically in the plan_architecture phase, this deliverable outlines a comprehensive study plan. While the plan_architecture step typically focuses on technical blueprints, the explicit instruction for this output is to "Create a detailed study plan." This plan is designed to equip a team or individual with the necessary knowledge and skills to effectively design, develop, and document a professional Mobile App Wireframe Kit, aligning with the overall workflow objective.


Detailed Study Plan: Mastering Mobile App Wireframe Kit Creation

This study plan is structured to guide learners through the essential principles, tools, and practices required to build a robust and usable Mobile App Wireframe Kit. The goal is to develop proficiency in creating screen flows, defining component libraries, implementing interaction patterns, and preparing clear developer handoff notes.

Target Audience: UI/UX Designers, Product Managers, Frontend Developers, or anyone aspiring to create comprehensive mobile app wireframe specifications.

Duration: 6 Weeks


1. Learning Objectives

Upon successful completion of this study plan, learners will be able to:

  • Understand Wireframing Principles: Articulate the purpose, benefits, and best practices of mobile app wireframing and prototyping.
  • Master Wireframing Tools: Proficiently use at least one industry-standard wireframing/prototyping tool (e.g., Figma, Sketch, Adobe XD) to create low-fidelity and mid-fidelity wireframes.
  • Design Screen Flows: Create clear and logical user flows and navigation maps that illustrate user journeys within a mobile application.
  • Develop Component Libraries: Design and organize a reusable library of UI components (buttons, input fields, navigation elements, etc.) adhering to atomic design principles.
  • Define Interaction Patterns: Specify common mobile interaction patterns (gestures, animations, transitions) and their application within wireframes.
  • Document Wireframe Specifications: Produce comprehensive documentation including annotations, user stories, and acceptance criteria for wireframes.
  • Prepare Developer Handoffs: Generate clear and actionable specifications and assets for developers, ensuring smooth implementation.
  • Apply Accessibility Principles: Integrate basic mobile accessibility considerations into wireframe design.
  • Conduct Basic Usability Testing: Understand methods for gathering feedback on wireframes and iterating designs.

2. Weekly Schedule

Each week is designed with a mix of theoretical learning, practical exercises, and project work. Aim for 10-15 hours of dedicated study per week.

Week 1: Fundamentals of Mobile Wireframing & UX Basics

  • Topics: Introduction to UI/UX design, the role of wireframes, types of wireframes (low-fidelity vs. mid-fidelity), mobile design principles, user research basics (personas, user stories).
  • Activities:

* Read foundational articles on wireframing and mobile UX.

* Analyze existing mobile apps for common UI patterns.

* Create 2-3 user personas and user stories for a hypothetical app idea.

* Begin exploring a chosen wireframing tool (e.g., Figma tutorials).

Week 2: Mastering Your Wireframing Tool & Basic UI Components

  • Topics: Deep dive into selected wireframing tool features (frames, layers, components, auto-layout), basic UI components (buttons, text fields, checkboxes, radio buttons), grid systems, typography basics for mobile.
  • Activities:

* Complete advanced tutorials for your chosen tool.

* Recreate common mobile UI components as reusable assets in your tool.

* Design a simple login/signup screen using low-fidelity wireframes.

Week 3: Screen Flows & Navigation Patterns

  • Topics: User flow mapping, information architecture (IA) for mobile, common mobile navigation patterns (tab bars, hamburger menus, breadcrumbs), onboarding flows, error states.
  • Activities:

* Map out a complete user flow for a core feature of your hypothetical app (e.g., "Add Item to Cart").

* Design wireframes for 3-5 key screens in this flow, including navigation.

* Experiment with different navigation patterns within your wireframes.

Week 4: Building a Reusable Component Library & Interaction Patterns

  • Topics: Atomic Design principles, creating nested components, variants, design systems thinking, common mobile interaction patterns (swipes, taps, long presses, pull-to-refresh), basic animation/transition concepts.
  • Activities:

* Refine and expand your component library from Week 2, applying Atomic Design principles.

* Create interactive prototypes for basic interactions (e.g., button clicks, form submissions).

* Document the intended behavior of 2-3 key interaction patterns.

Week 5: Wireframe Documentation & Annotation

  • Topics: Best practices for wireframe annotation, specifying states (empty, error, loading), writing clear user stories and acceptance criteria, accessibility considerations (contrast, touch targets, screen reader order).
  • Activities:

* Annotate all wireframes created so far with detailed descriptions for each UI element and interaction.

* Write user stories and acceptance criteria for 2-3 features.

* Review wireframes for basic accessibility compliance.

Week 6: Developer Handoff & Review

  • Topics: Preparing assets for developers (exporting, specifications), design system documentation, version control for design files, conducting peer reviews, gathering feedback on wireframes.
  • Activities:

* Organize your wireframe kit for a simulated developer handoff.

* Create a brief developer handoff document summarizing key aspects.

* Conduct a self-assessment and peer review of your complete wireframe kit.

* Iterate on designs based on feedback.


3. Recommended Resources

  • Books:

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

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

* "Atomic Design" by Brad Frost (Component Library/Design Systems)

* "Lean UX" by Jeff Gothelf & Josh Seiden (Agile Design Process)

  • Online Courses:

* Figma/Sketch/Adobe XD Masterclass: Search platforms like Udemy, Coursera, or LinkedIn Learning for comprehensive courses on your chosen tool.

* Google UX Design Professional Certificate (Coursera): Covers foundational UX principles, including wireframing.

* Interaction Design Foundation (IxDF): Offers numerous courses on UI design, mobile UX, and information architecture.

  • Tools:

* Figma: Industry-standard for collaborative design, wireframing, and prototyping. (Highly Recommended)

* Sketch: Popular for UI design, especially on macOS.

* Adobe XD: Part of the Adobe Creative Suite, good for prototyping.

* Miro / Mural: For collaborative whiteboarding, user flows, and brainstorming.

  • Websites/Articles:

* Nielsen Norman Group (NN/g): Research-backed articles on UX best practices.

* Smashing Magazine: In-depth articles on UI/UX design, front-end development.

* UX Planet / Medium UX Publications: Articles and case studies from designers.

* Material Design Guidelines (Google) / Human Interface Guidelines (Apple): Essential for understanding platform-specific mobile UI/UX.


4. Milestones

  • End of Week 2: Functional understanding of chosen wireframing tool; completed low-fidelity wireframes for a basic mobile app flow (e.g., login/onboarding).
  • End of Week 4: Comprehensive user flows mapped; mid-fidelity wireframes for core app features; initial reusable component library established with basic interactions.
  • End of Week 6: Complete Mobile App Wireframe Kit including:

* Detailed screen flows for a defined feature set.

* Organized and reusable component library.

* Annotated wireframes specifying interaction patterns and states.

* Developer handoff notes and basic accessibility considerations.


5. Assessment Strategies

  • Practical Application (70%):

* Weekly Exercises: Submission of wireframes, user flows, and component designs based on weekly tasks.

* Final Project: The culmination of the study plan will be a complete Mobile App Wireframe Kit for a chosen hypothetical or real-world mobile application. This project will be assessed on its completeness, clarity, adherence to best practices, and effective use of tools.

  • Conceptual Understanding (20%):

* Short Quizzes/Self-Assessments: Periodic self-checks on key terminology, principles, and best practices.

* Design Critiques: Participation in peer reviews, offering constructive feedback, and articulating design decisions.

  • Documentation & Communication (10%):

* Annotation Quality: Clarity and completeness of wireframe annotations.

* Handoff Document: Effectiveness of the developer handoff notes in conveying design intent.


This detailed study plan provides a structured path to mastering the creation of a professional Mobile App Wireframe Kit, directly supporting the overarching goal of this workflow.

json

// components.json

{

"components": [

{

"id": "CMP001_AppLogo",

"type": "Image",

"description": "Application logo.",

"props": {

"src": "/assets/logo.png",

"alt": "App Logo",

"size": {"type": "enum", "values": ["small", "medium", "large"], "default": "medium"}

},

"styles": {

"small": {"width": "50px", "height": "50px"},

"medium": {"width": "100px", "height": "100px"},

"large": {"width": "150px", "height": "150px"}

}

},

{

"id": "CMP002_LoadingIndicator",

"type": "Spinner",

"description": "Visual indicator for ongoing processes.",

"props": {

"type": {"type": "enum", "values": ["spinner", "progressBar"], "default": "spinner"},

"color": {"type": "string", "default": "#007AFF"}

}

},

{

"id": "CMP003_Carousel",

"type": "ScrollableContainer",

"description": "Displays multiple items in a horizontal, scrollable fashion.",

"props": {

"items": {"type": "array", "of": {"type": "object", "properties": {"image": "string", "title": "string", "description": "string"}}},

"autoplay": {"type": "boolean", "default": false},

"loop": {"type": "boolean", "default": false}

}

},

{

"id": "CMP004_Button",

"type": "Pressable",

"description": "Interactive element to trigger actions.",

"props": {

"text": {"type": "string", "required": true},

"variant": {"type": "enum", "values": ["primary", "secondary", "text", "outline"], "default": "primary"},

"size": {"type": "enum", "values": ["small", "medium", "large"], "default": "medium"},

"icon": {"type": "string", "optional": true, "description": "Name of an icon from the icon library"},

"fullWidth": {"type": "boolean", "default": false},

"disabled": {"type": "boolean", "default": false},

"alignment": {"type": "enum", "values": ["left", "center", "right"], "default": "center"}

},

"styles": {

"primary": {"backgroundColor": "#007AFF", "color": "#FFFFFF", "borderRadius": "8px"},

"secondary": {"backgroundColor": "#E0E0E0", "color": "#333333", "borderRadius": "8px"},

"text": {"backgroundColor": "transparent", "color": "#007AFF"},

"outline": {"backgroundColor": "transparent", "borderColor": "#007AFF", "borderWidth": "1px", "color": "#007AFF"}

}

},

{

"id": "CMP005_Header",

"type": "Container",

"description": "Top application bar for navigation and branding.",

"props": {

"title": {"type": "string", "optional": true},

"leftIcon": {"type": "string", "optional": true, "description": "Icon on the left (e.g., 'menu', 'back')"},

"rightIcon": {"type": "string", "optional": true, "description": "Icon on the right (e.g., 'search', 'settings')"},

"backgroundColor": {"type": "string", "default": "#FFFFFF"},

"hasShadow": {"type": "boolean", "default": true}

}

},

{

"id": "CMP006_Input",

"type": "TextInput",

"description": "Field for user text input.",

"props": {

"placeholder": {"type": "string", "optional": true},

"value": {"type": "string", "default": ""},

"type": {"type": "enum", "values": ["text", "email", "password", "number"], "default": "text"},

"label": {"type": "string", "optional": true},

"errorText": {"type": "string", "optional": true},

"disabled": {"type": "boolean", "default": false}

},

"styles": {

"default": {"borderColor": "#CCCCCC", "borderWidth": "1px", "borderRadius": "4px", "padding": "12px"}

}

},

{

"id": "CMP007_TabBar",

"type": "Navigation",

"description": "Bottom navigation bar for primary app sections.",

"props": {

"items": {"type": "array", "of": "string", "required": true, "description": "List of tab titles"},

"activeTab": {"type": "string", "required": true}

},

"styles": {

"backgroundColor": "#FFFFFF",

"shadow": "0px -2px 5px rgba(0,0,0,0.05)"

}

},

{

"id": "CMP008_FeedItem",

"type": "Card",

"description": "A single item in a content feed.",

"props": {

gemini Output

This document provides a comprehensive Mobile App Wireframe Specification, detailing the core structure, user flows, component library, interaction patterns, and essential notes for development teams. This deliverable serves as a foundational blueprint for the "TaskMaster: Smart Task Manager" mobile application, guiding its subsequent design and development phases.


1. Introduction: Mobile App Wireframe Specification

Project: Mobile App Wireframe Kit

Deliverable: Mobile App Wireframe Specification

Date: October 26, 2023

App Name: TaskMaster: Smart Task Manager

Purpose: This specification outlines the user experience (UX) and functional structure of the TaskMaster mobile application at a wireframe level. It details how users will navigate the app, interact with its elements, and what core components will be used across different screens. This document is intended to foster a shared understanding among stakeholders, designers, and developers, ensuring a consistent and intuitive user experience.

2. Overall App Vision: TaskMaster

TaskMaster is a modern, intuitive, and efficient mobile application designed to empower users to manage their daily tasks, projects, and reminders with ease. Its primary goal is to enhance productivity by providing a clear, organized, and accessible platform for task creation, prioritization, tracking, and completion, ultimately helping users achieve their goals and reduce stress.

Key Features:

  • Task creation with details (due dates, priorities, categories).
  • Intuitive task list management.
  • Quick task completion and editing.
  • Personalized categories and organization.
  • Simple and clear user interface.

3. Screen Flows (User Journeys)

This section details critical user journeys within the TaskMaster app, illustrating the sequence of screens and key actions involved.

3.1. User Onboarding & Account Creation

Goal: Allow new users to sign up or existing users to log in, and guide them through initial setup.

  1. Splash Screen: Displays app logo and name briefly.
  2. Welcome / Onboarding Screens (3-4 slides):

* Introduces core value propositions (e.g., "Organize Your Day," "Never Miss a Deadline," "Achieve Your Goals").

* Includes "Skip" or "Next" buttons.

  1. Sign Up / Log In Screen:

* Options for "Sign Up with Email," "Sign Up with Google," "Sign Up with Apple."

* "Log In" link for existing users.

  1. Create Account Form (if Sign Up with Email):

* Fields: Full Name, Email, Password (with "Show/Hide" toggle), Confirm Password.

* "Create Account" button.

  1. Email Verification (Optional):

* Prompt to check email for verification link.

  1. Profile Setup (Optional, initial preferences):

* Fields: Preferred Name, Timezone.

* "Continue" button.

  1. Home Screen (Task List): User lands on their main task list, potentially with a welcome message or sample task.

3.2. Creating a New Task

Goal: Enable users to quickly and easily add a new task with relevant details.

  1. Home Screen (Task List): Displays existing tasks.
  2. Tap "Add Task" Button: User taps the prominent floating action button (FAB) or a similar "+" icon.
  3. New Task Screen / Bottom Sheet:

* Input Field: "Task Title" (required).

* Text Area: "Description" (optional).

* Date Picker: "Due Date" (optional, with options like "Today," "Tomorrow," "Next Week," or custom date).

* Time Picker: "Due Time" (optional).

* Priority Selector: (e.g., "High," "Medium," "Low" - perhaps a segmented control or dropdown).

* Category Selector: (e.g., "Work," "Personal," "Shopping" - perhaps a dropdown or tag selector).

* Buttons: "Save Task," "Cancel."

  1. Save Task:

* If successful, screen dismisses.

* Home Screen (Task List): Updated with the new task, potentially with a "Task Saved!" toast notification.

* If validation error, error messages appear on fields.

3.3. Completing a Task

Goal: Allow users to mark a task as done and provide visual feedback.

  1. Home Screen (Task List): Displays tasks.
  2. Tap Checkbox / Swipe to Complete:

* User taps the checkbox next to a task item OR swipes the task item (e.g., right-to-left).

  1. Task Marked as Complete:

* Task text is visually struck through or faded.

* Task may move to a "Completed" section or disappear from the main view (depending on user settings).

* Toast Notification: "Task Completed!" with an "Undo" option.

  1. (Optional) Undo Action: If user taps "Undo" on the toast, the task reverts to its incomplete state.

3.4. Editing an Existing Task

Goal: Provide a way for users to modify task details after creation.

  1. Home Screen (Task List): Displays tasks.
  2. Tap on a Task Item: User taps anywhere on a task card/row (excluding the checkbox).
  3. Task Detail / Edit Screen:

* All fields (Title, Description, Due Date, Priority, Category) are pre-filled with the task's current information.

* Buttons: "Save Changes," "Delete Task," "Cancel."

  1. Make Changes: User modifies desired fields.
  2. Save Changes:

* If successful, screen dismisses.

* Home Screen (Task List): Updated task details displayed, with a "Task Updated!" toast notification.

* If validation error, error messages appear.

3.5. Navigating Settings

Goal: Allow users to access and modify app preferences and account settings.

  1. Home Screen (Task List):
  2. Tap "Profile" / "Menu" Icon: User taps an icon (e.g., top-left hamburger menu or bottom navigation "Profile" icon).
  3. Main Menu / Side Drawer / Profile Screen:

* List of navigation items: "Home," "Categories," "Calendar," "Settings," "Help," "Log Out."

  1. Tap "Settings":
  2. Settings Screen:

* Sections:

* Account: (e.g., "Change Password," "Update Email," "Delete Account").

* Notifications: (e.g., "Task Reminders," "Daily Summary" - with toggles).

* App Preferences: (e.g., "Default Priority," "Theme," "First Day of Week" - with selectors/toggles).

* About: (e.g., "Version," "Privacy Policy," "Terms of Service").

* Back Button: To return to the previous screen.

  1. Navigate within Sections: User taps on a setting item to access sub-screens or change values directly.

4. Component Library

This section outlines the common UI components used throughout the TaskMaster app, detailing their purpose, typical usage, and various states.

4.1. Buttons

  • Primary Button:

* Description: High-emphasis, filled background, prominent action.

* Usage: Main call-to-action (e.g., "Save Task," "Create Account," "Log In").

* States: Default, Pressed, Disabled, Loading (with spinner).

  • Secondary Button:

* Description: Medium-emphasis, outlined or text-only, less prominent than primary.

* Usage: Alternative actions (e.

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