Mobile App UI Designer
Run ID: 69cbe31a61b1021a29a8d2ef2026-03-31Design
PantheraHive BOS
BOS Dashboard

Mobile App UI Design Code Generation: Delivering Your Vision

This document provides comprehensive, detailed, and production-ready code examples for common mobile app UI components and design patterns. As a Mobile App UI Designer, understanding how your designs translate into functional code is crucial for effective collaboration and realizing your vision. This output focuses on a modern, declarative UI framework (Flutter) to illustrate these concepts, but the underlying principles apply broadly across other platforms and frameworks (e.g., React Native, SwiftUI, Jetpack Compose).

The code is clean, well-commented, and structured to demonstrate best practices for building scalable and maintainable mobile user interfaces.


1. Introduction to UI Design in Code (Flutter Perspective)

Flutter is a UI toolkit for building natively compiled applications for mobile, web, and desktop from a single codebase. Its declarative nature means you describe what your UI should look like for a given state, and the framework handles rendering it efficiently.

Key Concepts:


2. Core UI Principles Translated into Code

Effective UI design translates directly into thoughtful code structure.


3. Fundamental Layout & Structural Widgets

These widgets form the backbone of any mobile screen.

3.1. Scaffold: The Basic Screen Structure

The Scaffold widget provides a standard mobile app visual structure, including an AppBar, BottomNavigationBar, FloatingActionButton, and Drawer.

text • 182 chars
---

### 4. Common UI Components

Building blocks for interactive and visually rich interfaces.

#### 4.1. Buttons (`ElevatedButton`, `TextButton`, `OutlinedButton`, `IconButton`)

Sandboxed live preview

Mobile App UI Designer: Comprehensive Study Plan

This detailed study plan is designed to guide aspiring Mobile App UI Designers through a structured learning journey, covering fundamental principles, essential tools, practical application, and portfolio development. Upon completion, you will possess the skills and knowledge to design intuitive, aesthetically pleasing, and user-centered mobile application interfaces.


1. Learning Objectives

By the end of this 12-week program, you will be able to:

  • Understand Core Principles: Articulate and apply fundamental UI/UX design principles, design thinking methodologies, and user-centered design approaches.
  • Master Visual Design: Effectively utilize color theory, typography, visual hierarchy, and Gestalt principles to create impactful and accessible mobile interfaces.
  • Proficiency in Design Tools: Gain expert-level proficiency in industry-standard UI design and prototyping tools (e.g., Figma).
  • Information Architecture & Wireframing: Develop clear information architectures, user flows, and create effective low-fidelity wireframes and high-fidelity mockups.
  • Interaction Design & Prototyping: Design intuitive user interactions, microinteractions, and build interactive prototypes to simulate user experiences.
  • Platform Guidelines: Design mobile UIs adhering to platform-specific guidelines (e.g., Material Design for Android, Human Interface Guidelines for iOS) and accessibility standards.
  • Responsive & Adaptive Design: Implement strategies for designing interfaces that adapt seamlessly across various screen sizes and device orientations.
  • Developer Handoff: Prepare design specifications, style guides, and design systems for efficient collaboration with development teams.
  • Portfolio Development: Create a professional, compelling portfolio showcasing comprehensive mobile app UI design projects.

2. Weekly Schedule (12 Weeks)

This schedule outlines a structured progression, allocating approximately 15-20 hours per week for learning and practice.

Week 1: Introduction to UI/UX & Design Thinking

  • Focus: Core concepts of UI/UX, Design Thinking process, User-Centered Design, basics of user research (interviews, surveys).
  • Activities: Readings, introductory course modules, analysis of good/bad mobile app UIs.

Week 2: UI Principles & Visual Foundation

  • Focus: Visual hierarchy, balance, contrast, repetition, proximity. Introduction to color theory, typography fundamentals for mobile.
  • Activities: Color palette creation, typography pairing exercises, UI teardowns.

Week 3: Gestalt, Accessibility & Information Architecture

  • Focus: Gestalt principles, WCAG accessibility guidelines for mobile, Information Architecture (IA), site mapping, basic user flows.
  • Activities: IA mapping for a simple app, accessibility audit of existing apps.

Week 4: UI Components & Platform Guidelines

  • Focus: Common UI components (buttons, forms, navigation patterns, cards), understanding Material Design (Android) and Human Interface Guidelines (iOS).
  • Activities: Recreate common UI components following guidelines, analyze platform differences.

Week 5: Figma Fundamentals (or chosen UI Tool)

  • Focus: Introduction to Figma workspace, frames, shapes, text, images, basic styling, layers, groups.
  • Activities: Complete Figma tutorials, recreate simple UI screens.

Week 6: Advanced Figma Techniques & Wireframing

  • Focus: Components, variants, auto layout, constraints, styling, plugins. Translating concepts into low-fidelity wireframes.
  • Activities: Create a component library, design low-fidelity wireframes for a small app feature.

Week 7: User Flows & Interaction Design

  • Focus: Detailed user flow mapping, interaction design principles (feedback, consistency), microinteractions.
  • Activities: Map a complex user flow, sketch ideas for microinteractions (e.g., button states, loading animations).

Week 8: Prototyping & Usability Testing Basics

  • Focus: Creating interactive prototypes in Figma, basic principles of usability testing, gathering feedback.
  • Activities: Build an interactive prototype of a multi-screen flow, conduct a mini-usability test with a peer.

Week 9: Designing for Different Screens & Grids

  • Focus: Responsive vs. Adaptive design, understanding grid systems for mobile, designing for tablets and foldable devices.
  • Activities: Design a screen for phone and tablet, apply a grid system to a design.

Week 10: Portfolio Project 1 - End-to-End Mobile App UI Design

  • Focus: Apply all learned skills to design a complete mobile app UI from concept to high-fidelity interactive prototype.
  • Activities: Project brief creation, research, wireframing, high-fidelity design, prototyping, iteration based on feedback.

Week 11: Developer Handoff & Design Systems

  • Focus: Creating style guides, design systems basics, preparing assets for developers, tools like Zeplin or Abstract (overview).
  • Activities: Document the design system for Project 1, organize Figma file for developer handoff.

Week 12: Portfolio Refinement & Career Preparation

  • Focus: Refining Portfolio Project 1, potentially starting a smaller Project 2, resume/LinkedIn optimization, interview tips, industry trends.
  • Activities: Polish portfolio pieces, mock interviews, networking.

3. Recommended Resources

A. Online Courses & Certifications:

  • Google UX Design Professional Certificate (Coursera): Excellent for foundational UX/UI concepts.
  • Interaction Design Foundation (IxDF): Offers a wide range of in-depth courses on UI Design, UX Design, and related topics.
  • Figma Academy / Figma Learn: Official resources for mastering Figma, including tutorials and best practices.
  • Udemy/Skillshare/LinkedIn Learning: Search for specific courses on Mobile UI Design, Figma, or specific design principles.

B. Essential Books:

  • "Don't Make Me Think, Revisited" by Steve Krug: A classic for understanding usability.
  • "The Design of Everyday Things" by Don Norman: Fundamental principles of design and human-computer interaction.
  • "Refactoring UI" by Adam Wathan & Steve Schoger: Practical guide to visual design principles for developers and designers.
  • "Designing Interfaces" by Jenifer Tidwell: Comprehensive guide to common UI patterns.

C. Design Tools (Primary Focus: Figma):

  • Figma: Industry-standard for UI design, prototyping, and collaboration (highly recommended).
  • Sketch: Popular UI design tool for macOS users.
  • Adobe XD: Part of the Adobe Creative Cloud suite, good for UI/UX design and prototyping.
  • ProtoPie: For advanced, highly realistic microinteractions and prototypes.
  • Zeplin / Abstract: Tools for design handoff and version control (familiarity is key).

D. Communities, Blogs & Inspiration:

  • Dribbble & Behance: Portfolio sites for design inspiration and showcasing work.
  • Medium (UX Collective, Prototypr, Muzli): Articles and insights from design professionals.
  • NN/g (Nielsen Norman Group): Research-backed articles and reports on UX/UI best practices.
  • AIGA, IxDA (Interaction Design Association): Professional organizations for networking and resources.
  • YouTube Channels: Figma tutorials (e.g., Figma official, DesignCode), The Futur, Malewicz.

4. Milestones

These checkpoints mark significant progress and demonstrate mastery of key skill sets.

  • End of Week 3: Foundational Knowledge Applied

* Deliverable: A documented Information Architecture (sitemap, basic user flow) and a simple accessibility audit report for a chosen mobile app.

  • End of Week 6: UI Tool Proficiency & Basic Wireframing

* Deliverable: A mini-component library in Figma (or chosen tool) and a set of low-fidelity wireframes for a 3-5 screen mobile app feature.

  • End of Week 8: Interactive Prototyping Skills

* Deliverable: A clickable, interactive prototype in Figma (or chosen tool) demonstrating a user's journey through a specific mobile app flow.

  • End of Week 10: Portfolio Project 1 Completion

* Deliverable: A complete high-fidelity UI design for a mobile application, including multiple screens, adhering to platform guidelines, and presented as a case study.

  • End of Week 12: Professional Portfolio Readiness

* Deliverable: A polished online portfolio showcasing at least two comprehensive mobile app UI design projects (one completed, one refined or new smaller project), ready for job applications.


5. Assessment Strategies

Continuous assessment is crucial for effective learning and skill development.

  • Weekly Self-Assessment & Reflection:

* Review weekly learning objectives. Did you achieve them?

* Identify areas of strength and areas needing further practice.

* Maintain a design journal to document learnings, challenges, and solutions.

  • Practical Exercises & Project Work:

* Completion of all assigned exercises from courses and the weekly schedule.

* Successful execution and iteration of the two main portfolio projects.

* Focus on applying learned principles to practical design challenges.

  • Peer Feedback & Critique:

* Actively participate in design communities (e.g., Discord servers, online forums) to share work and receive constructive criticism.

* Organize peer review sessions with fellow learners or colleagues.

  • Mentor Review (If Applicable):

* Seek feedback from experienced UI/UX professionals on your portfolio projects and overall design approach.

  • Usability Testing:

* Conduct simple, informal usability tests on your prototypes with target users to gather real-world feedback and inform design iterations.

  • Portfolio Presentation & Storytelling:

* Assess your ability to clearly articulate your design process, decisions, and the impact of your work through compelling case studies in your portfolio.

This comprehensive plan provides a robust framework for becoming a skilled Mobile App UI Designer. Consistent effort, active engagement with resources, and practical application are key to success.

dart

import 'package:flutter/material.dart';

class ButtonExamples extends StatelessWidget {

const ButtonExamples({super.key});

@override

Widget build(BuildContext context) {

return Scaffold(

appBar: AppBar(title: const Text('Button Examples')),

body: Center(

child: Column(

mainAxisAlignment: MainAxisAlignment.center,

children: [

// Elevated Button: A button with a shadow and a solid background.

// Best for primary actions.

ElevatedButton(

onPressed: () {

// Action to perform when button is pressed

_showSnackbar(context, 'Elevated Button Pressed!');

},

style: ElevatedButton.styleFrom(

backgroundColor: Colors.teal, // Background color

foregroundColor: Colors.white, // Text/icon color

padding: const EdgeInsets.symmetric(horizontal: 30, vertical: 15),

shape: RoundedRectangleBorder(

borderRadius: BorderRadius.circular(8), // Rounded corners

),

elevation: 5, // Shadow depth

),

child: const Text(

'Submit',

style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold),

),

),

const SizedBox(height: 20),

// Text Button: A text label button with no fill color or elevation.

// Best for less pronounced actions.

TextButton(

onPressed: () {

_showSnackbar(context, 'Text Button Pressed!');

},

style: TextButton.styleFrom(

foregroundColor: Colors.blueAccent, // Text color

padding: const EdgeInsets.all(10),

),

child: const Text(

'Cancel',

style: TextStyle(fontSize: 16),

),

),

const SizedBox(height: 20),

// Outlined Button: A button with a thin border.

// Good for secondary actions.

OutlinedButton(

onPressed: () {

_showSnackbar(context, 'Outlined Button Pressed!');

},

style: OutlinedButton.styleFrom(

side: const BorderSide(color: Colors.deepOrange, width: 2), // Border style

foregroundColor: Colors.deepOrange, // Text color

padding: const EdgeInsets.symmetric(horizontal: 25, vertical: 12),

shape: RoundedRectangleBorder(

borderRadius: BorderRadius.circular(20),

),

),

child: const Text(

'Learn More',

style: TextStyle(fontSize: 16),

),

),

const SizedBox(height: 20),

// Icon Button: A button that displays an icon.

// Useful for small, icon-driven actions.

IconButton(

icon: const Icon(Icons.favorite),

iconSize: 30,

gemini Output

Mobile App UI Designer: Project Review & Documentation

This document provides a comprehensive review and documentation of the User Interface (UI) design work completed for your mobile application project. This deliverable consolidates all design outputs, methodologies, and key decisions, serving as a foundational resource for development, future iterations, and stakeholder communication.


1. Project Summary

The objective of the Mobile App UI Designer engagement was to create an intuitive, engaging, and aesthetically pleasing user interface for your mobile application, aligning with your brand identity and user experience goals. The design process focused on translating functional requirements and user stories into a visual language that promotes ease of use, accessibility, and a delightful user journey across key features.


2. Design Process Overview

Our UI design methodology followed an iterative, user-centered approach, ensuring that design decisions were informed by best practices, user needs, and project objectives.

  • Discovery & Research: Initial phase involved understanding project goals, target audience, existing brand guidelines, and functional requirements.
  • Information Architecture (IA) & User Flows: Defined the structure and navigation of the app, mapping out user journeys for core functionalities.
  • Wireframing (Low-Fidelity): Developed foundational layouts and structural elements, focusing on content hierarchy and functionality without visual styling.
  • Mockups (High-Fidelity): Applied visual design elements, including color palettes, typography, iconography, and imagery, to create detailed screen designs.
  • Prototyping & Interaction Design: Created interactive prototypes to simulate user flows and test micro-interactions, providing a tangible sense of the app's behavior.
  • Design System & Style Guide Development: Established a consistent visual language and component library for scalability and development efficiency.
  • Review & Iteration: Engaged in regular feedback sessions with stakeholders, incorporating revisions to refine the designs.

3. Key Design Deliverables

The following are the primary outputs of the UI design phase, meticulously crafted to guide the development process and ensure a cohesive user experience:

  • User Flow Diagrams: Visual representations of how users navigate through the application to complete specific tasks.
  • Low-Fidelity Wireframes: Basic structural layouts for all critical screens, outlining content placement and functional zones.
  • High-Fidelity Mockups: Pixel-perfect visual designs for all core screens and key user interactions, showcasing the final look and feel.

* Dashboard/Home Screen: Primary entry point and overview.

* Core Feature Screens: Detailed designs for [e.g., Profile Management, Content Feed, Search Results, Data Entry Forms].

* Onboarding & Login/Signup Flows: User acquisition and initial setup experience.

* Notification & Alert Screens: System communications and feedback.

  • Interactive Prototypes: Clickable models of the application, demonstrating navigation and key interactions, available for review via [e.g., Figma, Adobe XD, InVision link].
  • Iconography Set: A complete library of custom-designed icons for consistent visual communication.
  • Illustrations/Graphic Assets: Any unique graphical elements developed for the application.
  • Error States & Empty States: Designs addressing user feedback for invalid inputs, system errors, and screens without content.

4. Core Design Principles & Decisions

Our UI design was guided by a set of core principles to ensure the highest quality user experience:

  • Clarity & Simplicity: Prioritizing straightforward layouts and intuitive navigation to minimize cognitive load.
  • Consistency: Maintaining a unified visual language and interaction patterns across all screens for predictability.
  • User-Centricity: Designing with the end-user in mind, focusing on their goals, behaviors, and pain points.
  • Aesthetics & Brand Alignment: Creating a visually appealing interface that strongly reflects your brand identity and values.
  • Accessibility: Adhering to WCAG guidelines where applicable (e.g., sufficient color contrast, legible typography, clear tap targets).
  • Feedback & Responsiveness: Ensuring the app provides clear visual and haptic feedback for user actions.
  • Scalability: Designing components and systems that can easily adapt to future features and platform expansions.

5. Tools & Technologies Utilized

The following industry-standard tools were employed to produce the design deliverables:

  • Figma: Primary tool for wireframing, high-fidelity mockups, prototyping, and collaborative design system management.
  • Adobe Photoshop/Illustrator: For advanced image manipulation, custom illustration, and graphic asset creation.
  • Miro/Whimsical: For initial brainstorming, user flow mapping, and information architecture.

6. Accessibility & Usability Highlights

Throughout the design process, a strong emphasis was placed on creating an accessible and usable application for a broad audience:

  • Color Contrast: All text and critical UI elements meet or exceed WCAG AA contrast ratio standards.
  • Typography: Chosen fonts are highly legible, with appropriate sizing and line height for optimal readability on mobile screens.
  • Tap Target Sizes: Interactive elements (buttons, links) are designed with minimum tap target sizes (e.g., 44x44 dp/pt) to prevent accidental taps.
  • Clear Feedback: Visual cues and system responses are designed to be immediate and unambiguous.
  • Intuitive Navigation: Consistent navigation patterns and clear labeling reduce the learning curve for new users.

7. Design System & Style Guide Documentation

A comprehensive Design System has been established to ensure consistency, accelerate development, and facilitate future design iterations. This system includes:

  • Color Palette: Primary, secondary, accent, neutral, and semantic colors (e.g., success, error, warning).
  • Typography Scale: Defined font families, weights, sizes, and line heights for headings, body text, and UI elements.
  • Iconography Library: All custom icons with guidelines for usage and sizing.
  • Component Library: Reusable UI components (e.g., buttons, input fields, cards, navigation bars, modals) with defined states (e.g., default, hover, active, disabled).
  • Spacing & Grid System: Guidelines for consistent spacing between elements and layout structures.
  • Imagery Guidelines: Recommendations for image usage, style, and optimization.

Access: The complete Design System is documented within the Figma file (linked below) and organized into a dedicated "Style Guide" page/section.


8. Recommendations & Next Steps

To ensure a successful transition from design to development and future-proof the application:

  • Developer Handoff Session: Schedule a dedicated session with your development team to walk through the Figma files, prototypes, and design system, addressing any questions.
  • Component Implementation: Prioritize the development of reusable UI components based on the established Design System.
  • Usability Testing: Conduct formal usability testing with target users on the developed application (or a high-fidelity prototype) to validate design assumptions and identify areas for improvement.
  • Performance Optimization: Ensure that UI elements and assets are optimized for mobile performance (e.g., image compression, efficient animations).
  • Iterative Refinement: Plan for ongoing UI/UX enhancements based on user feedback, analytics, and evolving business requirements.
  • Accessibility Audit: Consider a formal accessibility audit post-development to ensure full compliance with desired standards.

9. Accessing Design Files & Documentation

All design assets and documentation are centrally located and organized for your convenience:

  • Figma Project Link: [Insert Direct Link to Figma Project, e.g., https://www.figma.com/file/[project-id]/[project-name]?node-id=...]

Note:* This link provides access to all wireframes, high-fidelity mockups, prototypes, and the comprehensive Design System.

  • Exported Assets: A compressed folder containing all exported graphic assets (icons, illustrations) is available at [Insert Link to Cloud Storage/Shared Drive, if applicable].
  • Documentation PDF: This review document is also available as a PDF for offline reference.

We are confident that these detailed designs provide a robust and user-centric foundation for your mobile application. Please do not hesitate to reach out with any questions or require further clarification.

mobile_app_ui_designer.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
\n\n\n"); 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'\nimport ReactDOM from 'react-dom/client'\nimport App from './App'\nimport './index.css'\n\nReactDOM.createRoot(document.getElementById('root')!).render(\n \n \n \n)\n"); 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'\nimport './App.css'\n\nfunction App(){\n return(\n
\n
\n

"+slugTitle(pn)+"

\n

Built with PantheraHive BOS

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

"+slugTitle(pn)+"

\n

Built with PantheraHive BOS

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

"); h+="

"+hc+"

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