User Onboarding Flow
Run ID: 69cc2a35fdffe128046c521b2026-03-31UX Design
PantheraHive BOS
BOS Dashboard

Project: User Onboarding Flow - Step 1/3: Research & Design Requirements

Deliverable Date: October 26, 2023


Executive Summary

This document outlines the comprehensive design requirements for the User Onboarding Flow. The primary goal is to create an intuitive, engaging, and efficient onboarding experience that seamlessly guides new users from their initial sign-up to becoming active and engaged users of our platform. By focusing on clarity, progressive disclosure, and value reinforcement, we aim to maximize user activation, reduce churn, and set a strong foundation for long-term user satisfaction. This deliverable includes detailed design specifications, wireframe descriptions for key screens, a proposed color palette, and critical User Experience (UX) recommendations.


1. Core Design Principles

The user onboarding flow will be designed around the following core principles:

  • Clarity & Simplicity: Each step must be easy to understand, with clear instructions and minimal cognitive load.
  • Value Reinforcement: Continuously highlight the benefits and value the user will gain by completing the onboarding process.
  • Progressive Disclosure: Introduce information and features gradually to avoid overwhelming the user.
  • Goal-Oriented: Guide users towards achieving their initial key objectives with the product as quickly as possible.
  • Engagement & Feedback: Provide positive reinforcement, clear progress indicators, and interactive elements to maintain user interest.
  • Flexibility: Allow users to skip non-essential steps and return to them later, respecting their time and preferences.
  • Accessibility: Ensure the flow is usable by individuals with diverse abilities, adhering to WCAG guidelines.

2. Detailed Design Specifications

2.1. Key Stages of Onboarding

The onboarding flow will be structured into the following logical stages:

  1. Welcome & Value Proposition: Greet the user, reiterate the product's core benefit, and set expectations.
  2. Account Creation/Sign-up: Secure and straightforward process for user registration.
  3. Basic Profile Setup: Collect essential information required for initial product usage.
  4. Personalization/Preferences: Tailor the user's experience based on their specific needs, goals, or interests.
  5. Core Feature Introduction (Optional Tour): Briefly showcase 1-3 critical features to help users get started immediately.
  6. Onboarding Completion & First Action: Guide the user to their dashboard or suggest a clear first step to gain value.

2.2. Information Collection Strategy

  • Minimalism: Only collect information absolutely necessary at each stage.
  • Progressive: Gradually ask for more details as the user invests more time.
  • Contextual: Explain why certain information is being requested (e.g., "We ask for your role to personalize your dashboard content").
  • Optionality: Clearly mark optional fields and allow users to skip sections if they prefer.
  • Security: Emphasize data privacy and security, especially during account creation.

2.3. Technical Considerations

  • Responsiveness: The entire onboarding flow must be fully responsive and optimized for desktop, tablet, and mobile devices.
  • Performance: Fast loading times and smooth transitions are crucial to prevent user drop-off.
  • Browser Compatibility: Ensure full functionality across major modern web browsers (Chrome, Firefox, Safari, Edge).
  • Backend Integration: Seamless integration with user authentication, profile management, and analytics systems.
  • Error Handling: Robust client-side and server-side validation with clear, actionable error messages.
  • Analytics Tracking: Implement comprehensive tracking for each step, drop-off points, and completion rates to facilitate optimization.
  • A/B Testing Readiness: Design components to be easily modifiable for A/B testing different onboarding variations.

3. Wireframe Descriptions

The following descriptions detail the layout and key interactive elements for the primary screens within the onboarding flow. These are conceptual outlines to guide the visual design process.

3.1. Screen 1: Welcome & Call to Action

  • Purpose: Greet the new user, reiterate the core value proposition, and encourage them to begin the onboarding process.
  • Layout:

* Header: Prominent product logo.

* Hero Section:

* Headline (H1): Engaging welcome message (e.g., "Welcome to [Product Name]! Unlock Your Potential").

* Sub-headline/Value Proposition: Concise statement of the primary benefit (e.g., "Streamline your workflow, collaborate effortlessly, and achieve more.").

* Visual Element: A compelling, high-quality image or short animation showcasing the product's benefit or a friendly illustration.

* Call to Action (CTA): Primary button (e.g., "Get Started," "Create Your Account").

* Secondary CTA (Optional): Link for existing users to log in (e.g., "Already have an account? Log in").

  • Interactive Elements:

* Primary "Get Started" button.

* "Log in" link.

3.2. Screen 2: Account Creation / Sign-up

  • Purpose: Collect necessary credentials to create a new user account.
  • Layout:

* Header: Product logo, "Create Your Account" title.

* Progress Indicator: Clearly visible progress bar (e.g., "Step 1 of 5").

* Form Fields:

* Email Address (input field)

* Password (input field with "show/hide" toggle)

* Confirm Password (input field)

* Password Requirements: Clear guidelines for strong passwords (e.g., "Min. 8 characters, 1 uppercase, 1 number").

* Social Sign-up (Optional): Buttons for "Sign up with Google," "Sign up with Apple," etc.

* Terms & Privacy: Checkbox for "I agree to the Terms of Service and Privacy Policy" with clickable links.

* Call to Action (CTA): Primary button (e.g., "Create Account," "Next").

* Secondary CTA: Link for "Already have an account? Log in."

  • Interactive Elements:

* Input fields with real-time validation feedback.

* "Show/hide" password toggle.

* Social sign-up buttons.

* Checkbox for terms.

* Primary "Create Account" button.

3.3. Screen 3: Basic Profile Setup

  • Purpose: Gather essential user details to personalize the experience.
  • Layout:

* Header: Product logo, "Tell Us About Yourself" title.

* Progress Indicator: Updated progress bar (e.g., "Step 2 of 5").

* Form Fields:

* First Name (input field)

* Last Name (input field)

* [Optional based on product] Company Name (input field)

* [Optional based on product] Role/Industry (dropdown or radio buttons)

* Contextual Help: Small text explaining the benefit of providing this info (e.g., "This helps us tailor your experience.").

* Call to Action (CTA): Primary button (e.g., "Continue," "Next").

* Secondary CTA: "Skip for now" link.

  • Interactive Elements:

* Input fields.

* Dropdown/radio button selections.

* Primary "Continue" button.

* "Skip for now" link.

3.4. Screen 4: Personalization / Preferences

  • Purpose: Allow users to customize their initial experience based on interests, goals, or how they plan to use the product.
  • Layout:

* Header: Product logo, "What Brings You Here?" or "Customize Your Experience" title.

* Progress Indicator: Updated progress bar (e.g., "Step 3 of 5").

* Selection Options:

* Multiple-choice questions (e.g., "What are your primary goals?").

* Tag/interest selectors (e.g., "Select topics that interest you").

* Radio buttons or checkboxes for specific preferences.

* Visual Reinforcement: Icons or small illustrations accompanying selection options.

* Call to Action (CTA): Primary button (e.g., "Save Preferences," "Next").

* Secondary CTA: "Skip for now" link.

  • Interactive Elements:

* Clickable selection cards/buttons.

* Primary "Save Preferences" button.

* "Skip for now" link.

3.5. Screen 5: Core Feature Introduction / Quick Tour (Optional)

  • Purpose: Briefly introduce 1-3 key features or the primary workflow to help users get started. This can be a guided tour or a simple overview.
  • Layout (Option A: Guided Tour):

* Header: Product logo, "Quick Tour" title.

* Progress Indicator: Updated progress bar (e.g., "Step 4 of 5").

* Carousel/Slideshow:

* Each slide showcases a single key feature with a screenshot/animation.

* Short, benefit-oriented description for each feature.

* Navigation dots/arrows for manual progression.

* Call to Action (CTA): Primary button (e.g., "Got It!", "Start Using [Feature Name]").

* Secondary CTA: "Skip Tour" link.

  • Layout (Option B: Overview):

* Header: Product logo, "Here's How to Get Started" title.

* Progress Indicator: Updated progress bar.

* Key Action Cards: 2-3 cards, each with:

* Icon

* Short title (e.g., "Create Your First Project")

* Brief description

* Button (e.g., "Go to Projects")

* Call to Action (CTA): Primary button (e.g., "Explore Dashboard").

* Secondary CTA: "Skip & Go to Dashboard" link.

  • Interactive Elements:

* Carousel navigation (if applicable).

* Feature action buttons.

* Primary "Continue" or "Explore" button.

* "Skip Tour/Overview" link.

3.6. Screen 6: Onboarding Completion & First Action

  • Purpose: Congratulate the user on completing onboarding and direct them to their dashboard or a clear first action.
  • Layout:

* Header: Product logo, "You're All Set!" or "Welcome Aboard!" title.

* Celebratory Visual: A confetti animation, checkmark, or engaging illustration.

* Reinforcement Message: Reiterate a key benefit or encourage immediate action (e.g., "Your personalized dashboard awaits!").

* Recommended First Action: A clear suggestion for what to do next (e.g., "Create your first project," "Invite your team," "Explore templates").

* Call to Action (CTA): Prominent primary button (e.g., "Go to Dashboard," "Start Your First Project").

* Secondary CTA (Optional): Link to help documentation or a quick tutorial video.

  • Interactive Elements:

* Primary "Go to Dashboard" button.

* Links to resources.


4. Proposed Color Palettes

A professional, clean, and trustworthy aesthetic is recommended.

4.1. Primary Brand Colors

These colors represent the core identity and will be used for prominent elements like headers, primary buttons, and key branding.

  • Primary Blue (Trust & Professionalism): #007BFF (RGB: 0, 123, 255)
  • Secondary Dark Blue (Depth & Stability): #0056B3 (RGB: 0, 86, 179)

4.2. Accent Colors

Used for Calls to Action (CTAs), highlights, and interactive elements to draw attention.

  • Vibrant Green (Success & Action): #28A745 (RGB: 40, 167, 69)
  • Subtle Orange (Alerts & Secondary Action): #FFC107 (RGB: 255, 193, 7)

4.3. Neutral Colors

Essential for backgrounds, text, borders, and subtle UI elements to ensure readability and a clean interface.

  • Dark Text (Readability): #343A40 (RGB: 52, 58, 64)
  • Light Grey (Backgrounds & Borders): #F8F9FA (RGB: 248, 249, 250)
  • Medium Grey (Secondary Text & Icons): #6C757D (RGB: 108, 117, 125)
  • White (Clean Canvas): #FFFFFF (RGB: 255, 255, 255)

4.4. Error & Success Colors

  • **Error Red (Alerts
gemini Output

Deliverable: User Onboarding Flow - Design Specifications

1. Executive Summary

This document outlines the comprehensive design specifications for the "User Onboarding Flow." The primary goal of this onboarding experience is to swiftly and effectively introduce new users to the core value proposition of our platform, guide them through essential setup, and empower them to achieve their first successful interaction. The design prioritizes clarity, efficiency, delight, and personalization to ensure high completion rates and immediate user engagement.

2. Design Philosophy & Core Principles

Our onboarding flow is built upon the following core design principles:

  • Clarity & Simplicity: Each step is designed with clear instructions, minimal cognitive load, and a single, focused objective.
  • Value-Driven: Reinforce the platform's benefits at key stages, demonstrating "what's in it for the user."
  • Efficiency: Minimize the number of steps and form fields, allowing users to get started quickly. Offer "skip" options where appropriate.
  • Personalization: Tailor the experience based on user input to make the platform feel relevant and useful from the outset.
  • Guidance & Support: Provide subtle hints, progress indicators, and easy access to help without being intrusive.
  • Delightful Experience: Incorporate subtle animations, positive reinforcement, and an inviting visual aesthetic to create a pleasant user journey.
  • Accessibility: Ensure the design is usable by individuals with diverse abilities, adhering to WCAG standards.

3. User Onboarding Flow: Step-by-Step Design Specifications

The onboarding flow consists of the following key stages:

3.1. Welcome Screen / Value Proposition

  • Purpose: Greet the user, reinforce the core value proposition, and set a positive tone.
  • Content & Copy:

* Headline: "Welcome to [Your Product Name]!" or "Unlock Your Potential with [Your Product Name]."

* Sub-headline: A concise statement of the primary benefit (e.g., "Streamline your workflows, boost productivity, and achieve your goals.").

* Key Benefits (3-4 bullet points or short paragraphs): Visually highlight 2-3 compelling features or outcomes.

* Call to Action (CTA): "Get Started" or "Create My Account."

* Optional: Link for "Already have an account? Sign In."

  • Interactive Elements:

* Primary CTA button.

* Secondary "Sign In" link.

* Optional: Animated background or subtle hero image illustrating product use.

  • Wireframe Description:

* Full-screen layout.

* Large, inviting header at the top.

* Centralized block of text for benefits, potentially with icons.

* Prominent primary CTA button at the bottom center.

* Secondary "Sign In" link subtly placed below the CTA or in the header/footer.

  • Error Handling: N/A (informational screen).
  • Success State/Next Action: Navigates to the "Account Creation" screen.

3.2. Account Creation (Sign Up)

  • Purpose: Collect essential user information to create an account.
  • Content & Copy:

* Headline: "Create Your Free Account" or "Join [Your Product Name]."

* Form Labels: "Full Name," "Email Address," "Password," "Confirm Password."

* Password Requirements: Clear guidelines (e.g., "Minimum 8 characters, 1 uppercase, 1 number").

* Terms & Privacy: Link to "Terms of Service" and "Privacy Policy" with a checkbox: "I agree to the [Product Name] Terms of Service and Privacy Policy."

* CTA: "Sign Up" or "Create Account."

* Optional: "Continue with Google/Apple/Microsoft" buttons for social sign-up.

  • Interactive Elements:

* Input fields with clear labels and placeholder text.

* "Show/Hide Password" toggle for password fields.

* Checkbox for terms agreement (must be checked to proceed).

* Primary CTA button.

* Social login buttons.

  • Wireframe Description:

* Centralized form within a card or modal, allowing for a clean focus.

* Clear header at the top of the form.

* Input fields stacked vertically with appropriate spacing.

* Password strength indicator (optional but recommended).

* Social login options prominently displayed above or below the form.

* Terms & Privacy checkbox and links below the form, above the primary CTA.

  • Error Handling:

* Inline Validation: Real-time feedback for invalid email format, weak password, mismatched passwords.

* Field-specific error messages: "Please enter a valid email," "Password must be at least 8 characters," "Passwords do not match."

* Server-side errors: "Email already registered," displayed clearly at the top of the form or near the email field.

* CTA disabled until all required fields are valid and terms are accepted.

  • Success State/Next Action: Navigates to "Email Verification" (if applicable) or "Profile Setup."

3.3. Email Verification (Optional)

  • Purpose: Confirm the user's email address for security and communication.
  • Content & Copy:

* Headline: "Verify Your Email Address"

* Instructions: "We've sent a verification link to [user's email]. Please check your inbox and click the link to activate your account."

* Optional: "Didn't receive the email? Resend" link.

* Optional: "Change Email" link.

  • Interactive Elements:

* "Resend Email" button/link.

* "Change Email" button/link.

  • Wireframe Description:

* Simple, focused screen.

* Clear headline and instructional text.

* Prominent display of the email address used.

* "Resend" and "Change Email" options below the main text.

* No primary CTA for progressing, as progression is via email link.

  • Error Handling:

* "Resend" button cooldown to prevent spamming.

* Clear message if email verification fails (e.g., link expired).

  • Success State/Next Action: User clicks link in email, redirected to "Profile Setup" or "Dashboard" with a success message.

3.4. Profile Setup / Personalization

  • Purpose: Gather initial preferences or essential profile details to tailor the user experience. This helps the user feel the product is built for them.
  • Content & Copy:

* Headline: "Tell Us About Yourself" or "Personalize Your Experience."

* Step Indicator: "Step 1 of 3: Your Profile"

* Input Fields (examples):

* "First Name," "Last Name" (if not collected during sign-up)

* "Profile Picture" (upload option)

* "Role/Industry" (dropdown or multi-select tags)

* "What are your primary goals with [Product Name]?" (checkboxes, multi-select, or short text)

* "How did you hear about us?" (optional, dropdown)

* CTA: "Continue" or "Next."

* Optional: "Skip for now" link.

  • Interactive Elements:

* Input fields, dropdowns, radio buttons, checkboxes.

* File uploader for profile picture (drag-and-drop or click-to-upload).

* Progress indicator (e.g., "1/3 steps complete").

* Primary CTA button.

* "Skip for now" link.

  • Wireframe Description:

* Multi-step form layout.

* Progress indicator prominently displayed at the top.

* Clear header for the current step.

* Form fields logically grouped, potentially in two columns for efficiency.

* "Skip" option subtly placed, often bottom-left.

* Primary CTA button at the bottom right.

  • Error Handling:

* Inline validation for required fields (e.g., first/last name).

* Clear feedback for file upload errors (e.g., "File too large," "Invalid file type").

  • Success State/Next Action: Navigates to "Core Feature Introduction" or "Dashboard."

3.5. Core Feature Introduction / First Action

  • Purpose: Guide the user to experience the core value of the product immediately by completing a simple, impactful first action.
  • Content & Copy:

* Headline: "Let's Get Started!" or "Your First Step to Success."

* Benefit Reinforcement: "Create your first [key entity, e.g., 'project', 'document', 'task'] to see how [Product Name] boosts your productivity."

* Simple Instructions: 1-2 clear steps for the first action.

* CTA: "Create My First [Key Entity]" or "Start Building."

* Optional: Short, animated GIF or video demonstrating the action.

* Optional: Link to a more comprehensive tutorial or documentation.

  • Interactive Elements:

* Primary CTA button.

* Optional: Interactive mini-tutorial or guided tour overlay (if the first action is complex).

* Optional: "Skip Tutorial" or "Explore on My Own" link.

  • Wireframe Description:

* Focused screen with a prominent headline and concise instructions.

* Visual element (image, GIF, video) demonstrating the action.

* Large, inviting CTA button.

* Subtle "Skip" or "Learn More" options.

  • Error Handling: N/A (focus on guided success).
  • Success State/Next Action: User is taken directly into the creation flow for the key entity, or to the dashboard with a "Success! Your first [entity] is ready." message.

3.6. Onboarding Completion / Dashboard

  • Purpose: Celebrate completion, provide a sense of accomplishment, and transition the user to the main application dashboard.
  • Content & Copy:

* Headline: "You're All Set!" or "Welcome Aboard!"

* Positive Reinforcement: "Your account is ready. Get ready to achieve great things with [Product Name]."

* Optional: Quick links to "Explore Features," "Invite Team Members," "View Dashboard."

* CTA: "Go to Dashboard."

  • Interactive Elements:

* Primary CTA button.

* Optional: Animated confetti or celebratory graphics.

* Quick action buttons/links.

  • Wireframe Description:

* Simple, celebratory screen.

* Large, positive headline.

* Brief encouraging message.

* Prominent "Go to Dashboard" button.

* Optional: Small section for "Next Steps" or "Quick Actions."

  • Error Handling: N/A.
  • Success State/Next Action: User lands on the fully functional application dashboard.

4. Color Palette

A consistent and appealing color palette is crucial for brand recognition and user experience.

  • Primary Brand Color: #4A90E2 (A vibrant, trustworthy blue - common for tech/SaaS)

Usage:* Primary CTA buttons, active states, progress indicators, key headings.

  • Secondary Accent Color: #50E3C2 (A fresh, energetic teal - for highlights and positive feedback)

Usage:* Success messages, small accent elements, hover states on secondary buttons.

  • Neutral Dark Text: #2C3E50 (Deep charcoal - for main body text, headers)

Usage:* All primary text, ensures high contrast and readability.

  • Neutral Light Text/Subtle Elements: #7F8C8D (Medium grey - for secondary text, labels, hints)

Usage:* Placeholder text, small print, inactive states, subtle icons.

  • Background Color: #F8F9FA (Very light grey/off-white)

Usage:* Main page background, provides a clean, breathable canvas.

  • Card/Container Background: #FFFFFF (Pure white)

Usage:* Background for forms, modals, content cards, creating visual separation.

  • Success Message Color: #27AE60 (Green)
  • Error Message Color: #E74C3C (Red)
  • Warning Message Color: #F39C12 (Orange)

5. Typography

Choosing the right fonts enhances readability and reflects brand personality.

  • Primary Font Family: Inter (or similar modern sans-serif like Roboto, Open Sans)

Rationale:* Highly readable, clean, professional, and optimized for screens.

  • Headings (H1, H2, H3): Inter Bold or Semi-Bold

* H1 (Welcome/Main Screen Titles): 36px - 48px

* H2 (Section Titles): 24px - 32px

* H3 (Sub-sections/Form Group Titles): 18px - 22px

  • Body Text: Inter Regular

* Paragraphs: 16px - 18px

* Labels/Small Text: 14px

  • Buttons: Inter Semi-Bold, 16px - 18px (matching body text size for readability)
  • Line Height: 1.5 for body text, 1.2 for headings, to ensure optimal readability.

6. Iconography

Icons provide visual cues, reduce cognitive load, and enhance the user interface.

  • Style: Line-based, minimalist, consistent stroke weight.

Rationale:* Clean, modern, and scales well across different sizes.

  • Examples:

* Checkmark (for success/completion)

* User/Profile icon

* Email icon

* Lock icon (for password fields)

* Arrow icons (for navigation/progress)

* Upload icon

* Info/Question mark icon (for help/tooltips)

  • Library Recommendation: Feather Icons, Font Awesome (Light/Regular), Material Icons (outlined). Ensure consistent set is used.

7. UX Recommendations

gemini Output

User Onboarding Flow: Final Design Assets Deliverable

This document outlines the finalized design specifications, wireframe descriptions, color palettes, and comprehensive UX recommendations for your User Onboarding Flow. The goal is to create an intuitive, engaging, and efficient onboarding experience that maximizes user activation and retention.


1. Overall Design Philosophy & Goals

The onboarding flow is designed with the following principles:

  • Clarity: Users should always understand where they are, what they need to do, and why it's beneficial.
  • Efficiency: Minimize steps and cognitive load, allowing users to reach value quickly.
  • Engagement: Utilize visual appeal, micro-interactions, and clear value propositions to keep users interested.
  • Personalization: Offer opportunities for users to tailor their experience, fostering a sense of ownership.
  • Guidance: Provide gentle nudges and clear paths to success, without overwhelming the user.

2. Detailed Design Specifications

These specifications apply across the entire onboarding flow to ensure consistency.

2.1. Typography

  • Primary Font: "Inter" (or similar modern sans-serif like "Roboto", "Open Sans")

* Purpose: Headings, body text, UI elements. Highly legible across devices.

  • Secondary Font: "Montserrat" (or similar geometric sans-serif for accents)

* Purpose: Used sparingly for distinct call-to-action buttons or specific feature titles to add visual flair.

  • Font Weights Used: Light (300), Regular (400), Medium (500), Semi-Bold (600), Bold (700)
  • Hierarchy & Sizing (Example Base Sizes for Desktop, adjust for mobile):

* H1 (Screen Title): 36px / Semi-Bold / Primary Color

* H2 (Section Title): 28px / Medium / Primary Color

* H3 (Card Title / Sub-heading): 20px / Medium / Primary Color

* Body Text (Paragraphs): 16px / Regular / Neutral Dark

* Labels / Small Text: 14px / Regular / Neutral Medium

* Button Text: 16px / Semi-Bold / White (for primary) or Primary Color (for secondary)

2.2. Iconography

  • Style: Line-based, consistent stroke weight (e.g., 2px). Rounded corners where appropriate.
  • Library: Material Design Icons, Font Awesome Pro, or a custom set.
  • Color: Inherit parent text color or Primary/Accent color for interactive elements.
  • Usage:

* Navigation: Back, Next, Skip, Close, Help

* Feature Description: Illustrative icons for key benefits.

* Input Fields: Clear, Password visibility, Error.

2.3. Buttons & Calls to Action (CTAs)

  • Primary Button:

* Background: Primary Brand Color

* Text: White

* Border-radius: 8px (slightly rounded)

* Padding: 16px vertical, 24px horizontal

* States:

* Default: Solid background, subtle shadow.

* Hover: Slightly darker background, increased shadow.

* Pressed: Deeper background, reduced shadow.

* Disabled: Neutral Light Gray background, Neutral Medium Gray text.

  • Secondary Button:

* Background: Transparent

* Text: Primary Brand Color

* Border: 1px Primary Brand Color

* States: Similar to primary, but affecting border/text color.

  • Tertiary/Text Button (e.g., "Skip", "Learn More"):

* Background: Transparent

* Text: Neutral Medium Gray (or Accent Color for specific actions)

* States: Underline on hover.

2.4. Input Fields

  • Style: Clean, minimal, with clear labels.
  • Border: 1px Neutral Light Gray, 8px border-radius.
  • Focus State: 1px Primary Brand Color border, subtle shadow.
  • Error State: 1px Error Color border, Error Color text for helper message.
  • Labels: Top-aligned or floating.

2.5. Imagery & Illustrations

  • Style: Custom, flat or semi-flat vector illustrations with a consistent aesthetic. Should complement the brand's personality (e.g., friendly, professional, innovative).
  • Color Palette: Utilize the brand's color palette with appropriate tints and shades.
  • Purpose:

* Hero Images: On welcome screens or feature introductions to convey core value.

* Spot Illustrations: To break up text, guide attention, or add delight.

  • Photography (if used): High-quality, authentic, diverse, and relevant to the user's context.

3. Wireframe Descriptions & Flow

The onboarding flow is structured into distinct, logical steps, designed for progressive disclosure.

3.1. Screen 1: Welcome & Value Proposition

  • Purpose: Greet the user, articulate the core value, and set expectations.
  • Layout:

* Top (20%): Brand Logo.

* Middle-Top (30%): Large, engaging hero illustration or animation that visually represents the primary benefit.

* Middle-Bottom (30%):

* H1: "Welcome to [Product Name]!"

Body Text: 1-2 concise sentences highlighting the main benefit* the user will gain. E.g., "Unlock your productivity with intelligent task management."

* Bottom (20%):

* Primary Button: "Get Started" or "Create My Account"

* Secondary/Text Button: "Log In" (if existing user)

  • UX Considerations:

* Keep text minimal and benefit-oriented.

* The illustration should be inviting and hint at the product's functionality.

* Clear primary CTA.

3.2. Screen 2: Sign-up / Account Creation

  • Purpose: Collect essential information to create a new user account.
  • Layout:

* Top (10%): Back button (optional, if user can go back to Welcome), Progress Indicator (e.g., "1 of 5").

* Middle (60%):

* H2: "Create Your Account"

* Input Fields:

* Email Address (required)

* Password (required, with "Show Password" toggle)

* Confirm Password (optional, or rely on strong password enforcement)

* Checkbox: "I agree to the Terms of Service and Privacy Policy" (links to policies).

* Bottom (30%):

* Primary Button: "Next" or "Sign Up"

* Text Link: "Already have an account? Log In"

  • UX Considerations:

* Use clear input labels and helpful error messages.

* Implement real-time validation for email format and password strength.

* Provide option for social logins (Google, Apple, Facebook) if applicable, as an alternative to email/password.

3.3. Screen 3: Personalization / Profile Setup (Progressive Disclosure)

  • Purpose: Gather initial preferences to tailor the user's experience. This is broken into smaller, digestible steps.
  • Layout (Example for "What brings you here?"):

* Top (10%): Back button, Progress Indicator.

* Middle (60%):

* H2: "Tell us a bit about yourself" / "What brings you to [Product Name]?"

* Selection Components:

* Option 1: Card/Button with icon and text (e.g., "For Work", "For Personal Use", "For Education").

* Option 2: Dropdown or multi-select tags for interests/roles.

* Option 3: Short text input for "Other" or specific goals.

* Bottom (30%):

* Primary Button: "Continue"

* Tertiary Button: "Skip for now" (if optional)

  • UX Considerations:

* Keep questions focused and relevant to immediate value.

* Use visual selectors (cards, tags) over plain text inputs where possible.

* Offer a "Skip" option for non-essential steps to prevent friction.

* Provide clear feedback on selected options.

3.4. Screen 4: Feature Introduction / Quick Tour (Optional but Recommended)

  • Purpose: Briefly highlight 2-3 key features or the primary workflow.
  • Layout (Carousel/Swipeable Cards):

* Top (10%): Back button, Progress Indicator, "Skip Tour" (text button).

* Middle (70%):

* H2: "Discover Key Features"

* Carousel of Cards: Each card features:

* Small Icon/Illustration: Representing the feature.

* H3: Feature Name (e.g., "Smart Task Prioritization")

Body Text: 1-2 sentences explaining the benefit* of the feature.

* Pagination Dots: At the bottom of the carousel.

* Bottom (20%):

* Primary Button: "Next" (changes to "Finish" on the last card)

  • UX Considerations:

* Focus on benefits, not just features.

* Keep it short – 2 to 3 slides maximum.

* Allow users to easily skip the tour.

* Use clear visuals to aid understanding.

3.5. Screen 5: First Action / Call to Value

  • Purpose: Guide the user to perform their first meaningful action, leading to immediate value.
  • Layout:

* Top (10%): No back button (this is the final step before dashboard).

* Middle (60%):

* H1: "Ready to get started?" or "Your Journey Begins!"

* Body Text: Reinforce a key benefit.

* Specific Instruction: "Let's create your first [core product entity, e.g., 'project', 'document', 'playlist']"

* Illustrative Graphic: Showing the outcome of the first action.

* Bottom (30%):

* Primary Button: "Create My First [Entity]" or "Go to Dashboard"

* Secondary Button (Optional): "Explore Examples"

  • UX Considerations:

* The primary CTA should lead directly to the core functionality.

* Provide a sense of accomplishment and clear direction.

* Avoid overwhelming the user with too many options.


4. Color Palette

The chosen color palette is designed for brand recognition, accessibility, and a pleasant user experience.

  • Primary Brand Color: #4A90E2 (A vibrant, trustworthy blue)

* Usage: Primary CTAs, active states, key headings, brand elements.

  • Secondary Brand Color: #50C878 (An inviting, fresh green)

* Usage: Success messages, secondary CTAs, positive indicators, complementary accents.

  • Accent Color: #FFC107 (A warm, engaging amber/yellow)

* Usage: Notifications, highlights, warnings, interactive elements requiring attention.

  • Neutral Dark (Text/Icons): #333333

* Usage: Body text, main headings, default icon color. Ensures high contrast.

  • Neutral Medium Gray (Secondary Text/Borders): #777777

* Usage: Placeholder text, secondary labels, disabled states, input field borders.

  • Neutral Light Gray (Backgrounds/Dividers): #F5F5F5

* Usage: Card backgrounds, subtle separators, light background for form elements.

  • White: #FFFFFF

* Usage: Main background, text on dark buttons.

  • Error Color: #E74C3C (A clear, recognizable red)

* Usage: Error messages, invalid input states.

Accessibility Note: Ensure sufficient contrast ratio (WCAG 2.1 AA compliant) between text and background colors, especially for primary text and interactive elements.


5. UX Recommendations

These recommendations enhance the user experience throughout the onboarding journey.

  1. Progress Indicator: Implement a clear visual progress bar or numbered steps (e.g., "Step 1 of 5") at the top of the screen. This manages expectations and provides a sense of progress.
  2. Clear Value Proposition: On the welcome screen and feature tour, always articulate the benefit to the user, not just the feature. Focus on "What's in it for me?"
  3. Minimalism & Focus: Each screen should have a single primary goal. Reduce clutter and unnecessary information to minimize cognitive load.
  4. Progressive Disclosure: Don't ask for all information upfront. Introduce more complex options or settings after the initial core setup, or within the app's settings.
  5. "Skip" Options: For non-critical personalization or tour steps, provide a "Skip for now" option. This respects user autonomy and prevents abandonment.
  6. Interactive Feedback: Provide immediate visual feedback for user actions (e.g., button presses, input validation, selection of options).
  7. Micro-interactions: Subtle animations on button hovers, form field focus, or successful actions can add delight and improve perceived responsiveness.
  8. Contextual Help: Offer small info icons or tooltips for complex fields or concepts, revealing more information on demand without cluttering the screen.
  9. Mobile Responsiveness: All designs must be fully responsive, ensuring a seamless experience across various screen sizes (mobile, tablet, desktop). Prioritize touch targets and readability for mobile.
  10. Error Prevention & Recovery:

* Prevention: Use clear labels, examples, and real-time validation.

user_onboarding_flow.md
Download as Markdown
Copy all content
Full output as text
Download ZIP
IDE-ready project ZIP
Copy share link
Permanent URL for this run
Get Embed Code
Embed this result on any website
Print / Save PDF
Use browser print dialog
\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);}});}