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

We are pleased to present the detailed design requirements for your "User Onboarding Flow," marking the completion of Step 1 of 3 in our workflow. This document outlines the foundational research and design specifications that will guide the development of an intuitive, engaging, and effective onboarding experience for your users.


User Onboarding Flow: Design Requirements & Specifications

1. Introduction & Project Goals

This document serves as a comprehensive blueprint for the design phase of your User Onboarding Flow. Our primary objective is to create an onboarding experience that not only guides new users efficiently through initial setup but also educates them on the product's core value proposition, fosters early engagement, and reduces churn.

Key Goals of the Onboarding Flow:

  • Reduce Time-to-Value (TTV): Help users quickly understand and experience the core benefits of the product.
  • Increase Activation Rate: Encourage users to complete essential setup steps and perform their first meaningful action.
  • Improve User Retention: Set users up for long-term success and continued engagement.
  • Educate & Delight: Inform users about key features and create a positive first impression.
  • Gather Essential User Data: Collect necessary information to personalize the experience (where appropriate and consented).

2. Target Audience Analysis

Understanding your users is paramount. While a detailed user persona workshop will further refine this, our initial research suggests the target audience generally exhibits the following characteristics:

  • Demographics: (To be specified based on product, e.g., tech-savvy professionals, small business owners, casual users, etc.)
  • Technical Proficiency: Varies, but the flow must cater to both novice and experienced users. Assume a baseline level of digital literacy.
  • Motivation: Seeking efficiency, problem-solving, connection, entertainment, information (specific to product).
  • Potential Pain Points During Onboarding:

* Overwhelm from too much information.

* Unclear value proposition.

* Lengthy sign-up processes.

* Lack of guidance on "what to do next."

* Fear of making mistakes.

* Privacy concerns.

3. Core Design Principles

Our design approach will be guided by these fundamental principles:

  • Simplicity & Clarity: Minimize cognitive load. Use clear, concise language and intuitive visual cues.
  • Progressive Disclosure: Introduce information and features gradually, only when relevant, to prevent overwhelm.
  • Value-Driven: Highlight the benefits of each step and feature, demonstrating immediate value.
  • Action-Oriented: Encourage users to take meaningful actions early in their journey.
  • Personalization: Where possible and appropriate, tailor the experience based on user input or inferred needs.
  • Feedback & Guidance: Provide clear feedback on progress, success, and errors.
  • Accessibility: Design for all users, including those with disabilities, adhering to WCAG 2.1 AA standards.

4. User Flow Mapping (High-Level Conceptual)

The onboarding process will generally follow these stages, with potential variations based on user choices:

  1. Welcome & Value Proposition:

* Initial greeting, brief introduction to the product's core benefit.

* Option to Sign Up / Log In.

  1. Account Creation / Authentication:

* Standard sign-up fields (email, password, etc.).

* Social login options.

* Password strength indicators.

* Verification (email/SMS, if required).

  1. Initial Profile Setup / Personalization (Optional/Progressive):

* Collect essential data (e.g., name, role, primary goal).

* Preferences (e.g., notification settings, initial interests).

Crucially: Only collect what is immediately necessary.*

  1. Core Feature Introduction / Product Tour:

* Interactive walkthroughs, tooltips, or short video tutorials.

* Focus on 1-3 key features that deliver immediate value.

* "Learn by doing" approach.

  1. First Meaningful Action (FMA) / "Aha!" Moment:

* Guide users to complete their first core task (e.g., create a project, send a message, upload a file).

* Celebrate success.

  1. Ongoing Engagement & Nurturing:

* Post-onboarding resources (help center, community).

* In-app prompts for deeper feature exploration.

* Email drip campaigns.

5. Wireframe Descriptions (Conceptual - Key Screens)

These descriptions outline the essential elements and layout for critical onboarding screens. Visual wireframes will be developed in the next phase.

5.1. Welcome Screen / Initial Landing

  • Layout: Full-screen hero section.
  • Elements:

* Prominent Headline: Catchy, value-driven statement (e.g., "Unlock Your Potential," "Streamline Your Workflow").

* Concise Sub-headline: Further elaborates on the core benefit.

* Hero Image/Video: High-quality, relevant visual that evokes emotion or demonstrates product use.

* Primary Call-to-Action (CTA): "Get Started," "Sign Up Free," "Create Account."

* Secondary CTA (Optional): "Learn More," "Watch Demo."

* Social Proof (Optional): Small, subtle display of user testimonials or trusted logos.

* "Already have an account?" Link: Clear link to log in.

5.2. Sign-Up / Registration Screen

  • Layout: Clean, focused form, potentially with a sidebar illustrating benefits.
  • Elements:

* Clear Title: "Create Your Account."

* Input Fields: Email, Password (with "show password" toggle), Confirm Password.

* Password Strength Indicator: Visual feedback (e.g., "Weak," "Good," "Strong").

* Social Login Buttons: "Continue with Google," "Continue with Apple," etc.

* Terms & Privacy Checkbox: Required, with links to policies.

* Primary CTA: "Create Account."

* "Already have an account?" Link: Prominent.

* Progress Indicator (Optional): If multi-step.

5.3. Profile Setup / Personalization Screen(s)

  • Layout: Step-by-step form, clear progress bar.
  • Elements:

* Progress Indicator: "Step X of Y."

* Clear Heading: "Tell Us About Yourself," "Personalize Your Experience."

* Input Fields: Name, Company/Organization (optional), Role (optional), Primary Goal (dropdown/radio buttons).

Benefit-Oriented Micro-copy: Explain why* this information is being requested.

* "Skip for now" / "I'll do this later" Option: Crucial for user control.

* Primary CTA: "Continue," "Next."

5.4. Feature Introduction / Interactive Tour (First Feature)

  • Layout: Overlay or dedicated screen, highlighting a specific UI element.
  • Elements:

* Spotlight/Overlay: Directs user attention to a specific feature or button.

* Concise Explanatory Text: "This is where you [action/benefit]."

* Interactive Prompt: "Click here to try it!" or "Next" button.

* Progress Indicator: "X/Y steps completed."

* "End Tour" / "Skip Tour" Option: Always available.

5.5. First Meaningful Action (FMA) / Success Screen

  • Layout: Encouraging and celebratory.
  • Elements:

* Celebratory Message: "Congratulations! You've created your first [item]!"

* Visual Reinforcement: Confetti animation, checkmark icon.

* Call-to-Action: "Go to Dashboard," "Explore More Features," "Invite Teammates."

* Suggested Next Steps: Gentle nudges for continued engagement.

6. Color Palette Recommendations

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

  • Primary Brand Color (e.g., Deep Ocean Blue - #0047AB):

* Used for primary CTAs, main headings, key interactive elements.

* Conveys trust, stability, professionalism.

  • Secondary Brand Color (e.g., Vibrant Teal - #00BCD4):

* Used for secondary CTAs, highlights, progress indicators, interactive accents.

* Adds a sense of freshness, innovation, and approachability.

  • Accent Color (e.g., Bright Orange/Yellow - #FFB300):

* Used sparingly for notifications, warnings, or to draw attention to specific, high-priority elements.

* Creates contrast and urgency where needed.

  • Neutral Palette (Grays & Whites):

* Backgrounds: Light Gray (#F5F5F5), Off-White (#FFFFFF).

* Text: Dark Gray (#333333) for main body, Lighter Gray (#666666) for secondary text/labels.

* Ensures readability and a clean aesthetic.

  • Semantic Colors:

* Success: Green (#4CAF50)

* Warning: Yellow/Orange (#FFC107)

* Error: Red (#F44336)

  • Accessibility: All color combinations will be rigorously tested to meet WCAG 2.1 AA contrast ratios for text and interactive elements.

7. Typography Recommendations

Readability and visual hierarchy are paramount.

  • Primary Font (Headings & Key Information):

* Family: Sans-serif (e.g., Montserrat, Lato, Open Sans).

* Characteristics: Clean, modern, highly legible.

* Usage: H1, H2, H3, prominent labels, primary CTAs.

  • Secondary Font (Body Text & UI Elements):

* Family: Sans-serif (e.g., Roboto, Noto Sans, inter). Can be the same as primary for consistency.

* Characteristics: Optimized for long-form reading and small sizes.

* Usage: Paragraphs, form field labels, tooltips, secondary navigation.

  • Font Sizing & Hierarchy:

* Consistent scaling (e.g., H1: 32px, H2: 24px, Body: 16px, Small: 12px).

* Responsive adjustments for mobile devices.

  • Line Height & Letter Spacing: Optimized for readability across all text sizes.

8. Iconography Style

  • Style: Modern, flat or subtly outlined, consistent stroke weight.
  • Clarity: Icons should be immediately recognizable and convey their meaning without ambiguity.
  • Consistency: All icons will adhere to a unified visual language (e.g., all filled, all outlined, consistent corner radius).
  • Scalability: SVG format for crisp rendering at any size.

9. User Experience (UX) Recommendations

9.1. Progressive Onboarding & Disclosure

  • Phased Information Gathering: Only ask for essential information upfront. Defer less critical data collection until it's relevant or the user has experienced value.
  • Feature Gating: Introduce core features first. Advanced features can be revealed as the user becomes more proficient.

9.2. Clear Progress Indicators

  • Visual Bars: Use a progress bar for multi-step forms or tours (e.g., "Step 2 of 5").
  • Checkmarks/Highlights: Visually indicate completed steps.
  • Motivational Micro-copy: "You're almost there!" or "Just one more step!"

9.3. Microinteractions & Delight

  • Button States: Hover, active, disabled states.
  • Form Validation: Real-time feedback for valid/invalid input.
  • Success Animations: Subtle animations (e.g., checkmark, confetti) upon completing a task.
  • Loading States: Skeleton screens or subtle loaders to indicate processing.

9.4. Skip & Opt-Out Options

  • "Skip for now" / "I'll do this later": For non-critical profile setup or feature tours, allowing users to control their pace.
  • "End Tour": Always provide an option to exit interactive tours.

9.5. Contextual Help & Tooltips

  • "i" Icons: Provide brief explanations for complex fields or features.
  • Empty States: Design engaging empty states for new users (e.g., "You don't have any projects yet. Click here to create your first one!").

9.6. Mobile Responsiveness

  • Fluid Layouts: All designs will adapt seamlessly to various screen sizes (desktop, tablet, mobile).
  • Touch-Friendly Elements: Ample tap targets for buttons and interactive elements.
  • Optimized Input: Mobile-specific keyboards for number, email, etc.

9.7. Accessibility (WCAG 2.1 AA)

  • Semantic HTML: Proper use of headings, labels, and ARIA attributes.
  • Keyboard Navigation: All interactive elements accessible via keyboard.
  • Focus States: Clear visual focus indicators for keyboard users.
  • Screen Reader Compatibility: Ensure all content is understandable by screen readers.
  • Color Contrast: Adherence to contrast guidelines for text and UI elements.

9.8. Feedback Mechanisms

  • In-App Surveys (Post-Onboarding): Gather qualitative feedback on the onboarding experience.
  • Analytics Integration: Track key metrics (completion rates, drop-off points, time-to-FMA) to identify areas for optimization.

10. Next Steps

With these comprehensive design requirements established, the next phase will involve:

  1. Wireframing & Prototyping: Developing low-fidelity wireframes and interactive prototypes for key onboarding screens.
  2. User Flow Refinement: Mapping out detailed user journeys based on the defined stages.
  3. Visual Design & UI Kit Development: Translating these requirements into high-fidelity mockups and establishing a consistent UI component library.
  4. Usability Testing (Optional but Recommended): Conducting tests with target users to validate the design and identify any friction points before development.

We look forward to collaborating with you on bringing this vision to life!

gemini Output

User Onboarding Flow - Detailed Design Specifications

This document outlines the comprehensive design specifications for the "User Onboarding Flow," aimed at providing a seamless, engaging, and effective introduction for new users to the platform. The goal is to maximize user activation, feature adoption, and long-term retention by guiding users through key functionalities and demonstrating immediate value.


1. Executive Summary

The User Onboarding Flow is a critical sequence of interactions designed to welcome new users, gather essential preferences, introduce core features, and guide them towards their first successful interaction or "Aha! Moment." This detailed specification covers the structure, visual elements, interaction patterns, and user experience best practices to ensure a professional, intuitive, and highly effective onboarding experience.

2. Overall Onboarding Goal

Primary Goal: To successfully activate new users by guiding them to complete their profile, understand the platform's core value proposition, and perform their first meaningful action within the system.

Secondary Goals:

  • Reduce time-to-value for new users.
  • Increase feature adoption rates.
  • Minimize early-stage user churn.
  • Collect essential user preferences for personalization.
  • Establish a positive first impression and build user confidence.

3. Target User Persona (Assumed)

For these specifications, we assume a user who is tech-literate, seeking efficiency/solutions in a specific domain (e.g., project management, creative design, data analysis), and values clear guidance and a straightforward path to achieving their goals. They are likely busy professionals who appreciate a concise yet informative onboarding experience.

4. Onboarding Flow Stages & Objectives

The onboarding flow is broken down into five distinct stages, each with a specific objective:

  • Stage 1: Welcome & Value Proposition

* Objective: Greet the user, reiterate the core value, and set expectations for the onboarding journey.

  • Stage 2: Personalization & Preferences

* Objective: Gather essential information and preferences to tailor the user's experience and demonstrate early personalization.

  • Stage 3: Core Feature Introduction (Product Tour)

* Objective: Briefly introduce key functionalities and their benefits, highlighting how they address user needs.

  • Stage 4: First Action / "Aha!" Moment

* Objective: Guide the user to complete a simple, impactful task that showcases immediate value and builds momentum.

  • Stage 5: Onboarding Completion & Dashboard Access

* Objective: Celebrate completion, provide a clear path to the main application, and offer continued support.

5. Detailed Design Specifications per Stage

5.1. Stage 1: Welcome & Value Proposition

  • Wireframe Description:

* Layout: Full-screen modal or dedicated onboarding page with a clean, inviting layout.

* Header: Prominent "Welcome to [Platform Name]!" message.

* Imagery: Engaging, high-quality illustration or animation that visually represents the platform's core benefit or a friendly greeting.

* Body Content: Concise paragraph reiterating the platform's primary benefit and what the user can achieve. Example: "Get ready to streamline your [domain] workflow and achieve your goals faster."

* Progress Indicator: Visible "1 of 5" or similar progress bar/dots at the top or bottom.

* Call to Action (CTA): Primary button: "Let's Get Started" or "Begin Onboarding." Secondary (optional): "Skip Onboarding" (with clear implications).

  • Interaction Design:

* Entry: Smooth fade-in or subtle slide-up animation for the welcome screen.

* Button Hover: Subtle visual feedback (e.g., slight color change, lift effect).

* Click "Let's Get Started": Transition smoothly to Stage 2.

  • Content Strategy:

* Tone: Friendly, enthusiastic, encouraging.

* Messaging: Focus on the user's benefit. Avoid jargon.

* CTA Text: Clear, action-oriented.

5.2. Stage 2: Personalization & Preferences

  • Wireframe Description:

* Layout: Multi-step form within a modal or dedicated page, maintaining the consistent progress indicator.

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

* Questions/Inputs:

* Purpose/Role: Dropdown or radio buttons (e.g., "What brings you to [Platform Name]?", "What is your role?").

* Goals: Checkboxes for common goals (e.g., "What do you hope to achieve?").

* Team Size (optional): Slider or radio buttons.

* Industry (optional): Dropdown.

* Input Fields: Clear labels, placeholder text, and helpful tooltips where necessary.

* Progress Indicator: Updates to "2 of 5."

* Call to Action (CTA): Primary button: "Continue." Secondary: "Back" (if multiple questions on one screen).

  • Interaction Design:

* Input Validation: Real-time feedback for required fields.

* Question Progression: Each question or set of related questions can be on its own screen for simplicity, or grouped logically.

* Animations: Subtle transitions between questions/screens.

  • Content Strategy:

* Tone: Helpful, inquisitive, respectful of user's time.

Messaging: Explain why* the information is being collected (e.g., "This helps us tailor your experience").

* CTA Text: "Next," "Continue."

5.3. Stage 3: Core Feature Introduction (Product Tour)

  • Wireframe Description:

* Layout: Overlay-based tour (spotlights specific UI elements) or a series of concise informational slides.

* Header: "Quick Tour of Key Features" or "Discover [Platform Name]'s Power."

* Content:

* Feature Card/Tooltip: Each step focuses on one core feature.

* Headline: Feature Name (e.g., "Project Dashboard," "Task Management").

* Description: 1-2 sentences explaining its purpose and benefit.

* Visual: Screenshot, GIF, or short animation demonstrating the feature in action.

* Call to Action (CTA): "Next" or "Got It."

* Progress Indicator: Updates to "3 of 5."

  • Interaction Design:

* Navigation: Clear "Next" and "Previous" buttons.

* Skipping: Option to "Skip Tour" or "End Tour."

* Highlighting: Use of overlays to highlight the specific UI element being discussed (if an in-context tour).

* Micro-animations: Subtle animations to draw attention to the highlighted feature.

  • Content Strategy:

* Tone: Informative, empowering, concise.

Messaging: Focus on "what it does" and "how it helps you*." Use action verbs.

* CTA Text: "Next," "Got It," "Explore Feature" (if applicable).

5.4. Stage 4: First Action / "Aha!" Moment

  • Wireframe Description:

* Layout: Guided interactive element within a modal or directly on a simplified version of the main UI.

* Header: "Your First Step: [Specific Action]" (e.g., "Create Your First Project," "Invite a Team Member").

* Guidance: Clear, step-by-step instructions (numbered list or short paragraphs).

* Interactive Element: A simplified form or direct access to the relevant UI component needed to complete the action.

* Call to Action (CTA): Primary button to complete the action (e.g., "Create Project," "Send Invite").

* Progress Indicator: Updates to "4 of 5."

  • Interaction Design:

* Live Interaction: The user directly interacts with the platform's UI or a close simulation.

* Success Feedback: Upon completion, display a celebratory message (e.g., "Success! Your project has been created.") with a subtle animation.

* Error Handling: Clear, non-intrusive error messages if the action fails.

  • Content Strategy:

* Tone: Encouraging, empowering, celebratory.

* Messaging: Emphasize the ease of the action and its immediate benefit.

* CTA Text: Specific to the action (e.g., "Create Project," "Add Task").

5.5. Stage 5: Onboarding Completion & Dashboard Access

  • Wireframe Description:

* Layout: Full-screen modal or dedicated completion page.

* Header: "Congratulations! You're All Set." or "Welcome to Your Dashboard!"

* Celebration: Engaging illustration, animation, or confetti effect.

* Summary/Next Steps: Brief message reinforcing the value proposition and suggesting next logical steps (e.g., "Explore your dashboard," "Invite more team members," "Check out our tutorials").

* Call to Action (CTA): Primary button: "Go to Dashboard" or "Start Using [Platform Name]."

* Secondary CTAs (optional): Links to help center, community, or premium features.

* Progress Indicator: Updates to "5 of 5" or disappears.

  • Interaction Design:

* Completion Animation: Subtle celebratory animation.

* Button Click: Directs the user to their personalized dashboard.

  • Content Strategy:

* Tone: Celebratory, helpful, inviting.

* Messaging: Reinforce accomplishment, offer continued support.

* CTA Text: Clear path to the main application.

6. Visual Design Guidelines

6.1. Color Palette

  • Primary Brand Color: [#4A90E2] (A vibrant, professional blue - example, replace with actual brand color)

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

  • Secondary Brand Color: [#50E3C2] (A refreshing teal/mint - example)

Usage:* Accent elements, progress indicators, secondary CTAs, illustrations.

  • Accent Color: [#F5A623] (A warm orange/yellow - example)

Usage:* Highlights, warnings, celebratory elements.

  • Neutral Palette:

* Dark Grey (Text): [#333333] (Main body text, strong contrast)

* Medium Grey (Subtext/Borders): [#666666] (Secondary text, inactive states)

* Light Grey (Backgrounds/Dividers): [#F5F5F5] (Subtle backgrounds, dividers)

* White: [#FFFFFF] (Card backgrounds, main content areas)

  • Semantic Colors:

* Success: [#7ED321] (Green for successful actions)

* Warning: [#F8E71C] (Yellow for warnings)

* Error: [#D0021B] (Red for errors)

6.2. Typography

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

Rationale:* Highly readable, professional, and versatile across digital platforms.

  • Headings (H1, H2, H3):

* Font Weight: Bold (700) or Semi-Bold (600).

* Sizes: H1 (32-48px), H2 (24-32px), H3 (18-24px) – scalable for responsiveness.

* Color: Dark Grey (#333333).

  • Body Text:

* Font Weight: Regular (400).

* Sizes: 16-18px for primary body, 14px for secondary/caption.

* Color: Dark Grey (#333333) or Medium Grey (#666666).

  • CTAs/Buttons:

* Font Weight: Semi-Bold (600).

* Size: 16-18px.

* Letter Spacing: Slightly increased (0.5-1px) for readability.

6.3. Iconography

  • Style: Line icons with a consistent stroke weight (e.g., 2px).
  • Filled vs. Outline: Primarily outline for general use, filled for active states or specific emphasis.
  • Consistency: All icons should belong to the same family and maintain a unified visual language (e.g., rounded corners, sharp edges).
  • Purpose: Used to visually aid understanding, reduce cognitive load, and enhance aesthetics.

6.4. Imagery & Illustrations

  • Style: Modern, friendly, and consistent with the brand's overall aesthetic. Can be flat, isometric, or hand-drawn, but maintain a unified look.
  • Purpose: Used to break up text, convey emotions, simplify complex ideas, and add visual appeal (e.g., welcome screen, completion screen, feature highlights).
  • Relevance: Images should directly relate to the content and enhance the user's understanding.

7. User Experience (UX) Recommendations

  • Progress Indicators: Always visible and clearly communicate the user's current position within the onboarding flow (e.g., "Step X of Y," percentage bar).
  • Skipping Options: Provide a clear "Skip Onboarding" option (or "Skip Step") where appropriate, especially for experienced users or those in a hurry. However, ensure the user understands what they might miss.
  • Contextual Help: Offer subtle tooltips or "Learn More" links for complex preferences or features, appearing only when relevant.
  • Micro-interactions & Animations: Use subtle animations (e.g., button hovers, screen transitions, success feedback) to make the experience more engaging and provide clear feedback without being distracting.
  • Error Handling: Implement clear, concise, and helpful error messages for form validation. Guide users on how to correct issues.
  • Mobile Responsiveness: Ensure the entire onboarding flow is fully responsive and optimized for various screen sizes, providing an equally smooth experience on mobile devices.
  • Performance: Optimize images, animations, and scripts to ensure fast loading times and a fluid experience. Delays can lead to abandonment.
  • Positive Reinforcement: Use encouraging language and celebratory visuals upon completing steps or the entire flow.
  • Limited Cognitive Load: Present information in digestible chunks. Avoid overwhelming users with too much text or too many choices at once.
  • Personalization: Leverage collected preferences to tailor subsequent parts of the
gemini Output

This deliverable outlines the finalized design assets and specifications for your User Onboarding Flow. Our goal is to create an intuitive, engaging, and efficient experience that welcomes new users and guides them seamlessly towards their "Aha!" moment. This document provides the blueprint for visual design, interaction patterns, and user experience principles to be implemented.


User Onboarding Flow: Finalized Design Assets & Specifications

1. Overview & Design Philosophy

The User Onboarding Flow is a critical first impression, designed to convert new sign-ups into active, engaged users. Our design philosophy centers on:

  • Clarity & Simplicity: Minimize cognitive load, present information clearly and concisely.
  • Engagement & Delight: Use visuals, micro-interactions, and positive reinforcement to make the process enjoyable.
  • Guidance & Progress: Provide clear indicators of where the user is in the process and what's next.
  • Value Proposition: Continuously reinforce the core benefits of your product/service.
  • User Control: Offer options to skip, learn more, or customize the experience.

2. Key Onboarding Screens & User Journey

The onboarding flow will typically consist of the following key screens, designed to guide the user from initial interaction to core product engagement:

  1. Welcome Screen: Initial greeting, setting the tone.
  2. Value Proposition / Feature Showcase: Highlighting key benefits and functionalities.
  3. Account Creation / Sign-Up: Secure and streamlined registration.
  4. Personalization / Preferences: Tailoring the experience to individual user needs (if applicable).
  5. "Aha!" Moment / First Steps: Guiding users to perform their first key action within the product.
  6. Onboarding Completion / Dashboard Entry: Smooth transition to the main application interface.

3. Detailed Design Specifications

3.1 Typography

  • Primary Font Family: [e.g., 'Inter' or 'Roboto'] - Chosen for modern aesthetics, readability, and versatility across devices.
  • Secondary Font Family (Optional, for accents/headers): [e.g., 'Montserrat' or 'Open Sans'] - To add visual distinction without compromising readability.

Usage Guidelines:

  • Headings (H1, H2, H3):

* H1: [e.g., 32px] Bold, [Primary Font], for main screen titles.

* H2: [e.g., 24px] Semibold, [Primary Font], for section titles.

* H3: [e.g., 18px] Medium, [Primary Font], for sub-headings.

  • Body Text: [e.g., 16px] Regular, [Primary Font], for descriptions, paragraphs.
  • Small Text / Captions: [e.g., 12-14px] Regular, [Primary Font], for hints, legal text.
  • Buttons / CTAs: [e.g., 16px] Semibold, [Primary Font], ensuring prominence.
  • Line Height: [e.g., 1.5] for body text, [e.g., 1.2] for headings, to optimize readability.

3.2 Color Palette

The chosen color palette is designed to be vibrant, trustworthy, and accessible, aligning with modern UI/UX principles.

  • Primary Brand Color: [e.g., #4A90E2] - Used for primary CTAs, active states, key branding elements.
  • Secondary Accent Color: [e.g., #50E3C2] - Used for secondary CTAs, highlights, progress indicators.
  • Neutral Colors:

* Dark Text: [e.g., #2C3E50] - For main body text, headings.

* Light Grey (Backgrounds/Borders): [e.g., #F8F9FA] - For subtle backgrounds, dividers.

* Medium Grey (Secondary Text/Icons): [e.g., #8D9BA8] - For less prominent text, disabled states.

  • Semantic Colors:

* Success: [e.g., #28A745] - For positive feedback, completion.

* Warning: [e.g., #FFC107] - For cautionary messages.

* Error: [e.g., #DC3545] - For invalid inputs, error states.

Accessibility Note: All color combinations will be checked against WCAG 2.1 AA standards for contrast ratio to ensure readability for users with visual impairments.

3.3 Iconography

  • Style: [e.g., Line-based / Filled / Duotone] - Consistent style across all icons.
  • Purpose: To visually represent concepts, enhance navigation, and reduce cognitive load.
  • Size & Spacing: Icons will be appropriately sized and spaced relative to text and other elements for clarity.
  • Color: Typically [Medium Grey] for inactive, [Primary Brand Color] for active/hover states.

3.4 Imagery & Illustrations

  • Style: [e.g., Flat 2D / Abstract / Custom Vector Illustrations] - Will be consistent throughout the onboarding flow.
  • Purpose: To create visual interest, explain concepts, evoke emotion, and reinforce branding.
  • Placement: Used strategically on Welcome screens, Value Proposition screens, and completion screens.
  • Content: Illustrations will be relevant to the product's value and user journey.

3.5 Interaction Design Elements

  • Buttons:

* Primary CTA: Solid fill [Primary Brand Color], white text.

* Secondary CTA: Outline [Primary Brand Color], [Primary Brand Color] text, or solid fill [Secondary Accent Color].

* Tertiary/Ghost Button: Transparent background, [Medium Grey] text/border.

* States: Hover, Active, Focus, Disabled (with appropriate visual feedback).

  • Input Fields: Clear labels, placeholder text, focus state [Primary Brand Color] border, error state [Error Color] border.
  • Progress Indicators: Visually distinct progress bar or dot indicators using [Secondary Accent Color] for active steps.
  • Modals/Tooltips: Clear, concise, and non-intrusive, styled consistently with the main UI.

4. Wireframe Descriptions (Conceptual Layouts)

These descriptions outline the structural and functional layout for each key onboarding screen.

4.1 Welcome Screen

  • Layout: Centered content, often with a full-width background image/illustration.
  • Elements:

* Hero Illustration/Image: Visually appealing graphic related to the product's core benefit.

* Headline (H1): Catchy, welcoming message (e.g., "Welcome to [Product Name]!").

* Sub-headline (Body Text): Briefly explains the product's main purpose or a compelling benefit.

* Primary CTA (Button): "Get Started" or "Create Account".

* Secondary CTA (Link/Button): "Log In" (for existing users).

* Progress Indicator (Optional): Subtle dots at the bottom.

4.2 Value Proposition / Feature Showcase Screen(s)

  • Layout: Often a multi-slide carousel or a single screen with stacked value propositions.
  • Elements (per slide/section):

* Feature Illustration/Icon: Visual representation of the feature/benefit.

* Headline (H2): Clear, benefit-oriented statement.

* Description (Body Text): Concise explanation of how the feature helps the user.

* Progress Indicator: Clear visual showing current step (e.g., "1 of 3").

* Navigation: "Next" / "Previous" buttons or swipe gestures.

* Skip Option: "Skip Tour" or "Skip Introduction" (top right or bottom left).

4.3 Account Creation / Sign-Up Screen

  • Layout: Form-based, typically centered or left-aligned on desktop, full-width on mobile.
  • Elements:

* Headline (H2): "Create Your Account" or "Sign Up".

* Input Fields: Email, Password, Confirm Password, Username (if applicable).

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

* "Show Password" Toggle: For user convenience.

* Social Sign-Up Options: Buttons for "Sign up with Google", "Sign up with Apple" (if applicable).

* Terms & Privacy Checkbox: With links to respective policies.

* Primary CTA (Button): "Create Account" or "Sign Up".

* Link to Login: "Already have an account? Log In".

* Error Messages: Clear, contextual messages for invalid inputs.

4.4 Personalization / Preferences Screen(s)

  • Layout: Flexible, depending on the type of input (e.g., checkboxes, radio buttons, sliders).
  • Elements:

* Headline (H2): "Tell us about yourself" or "Customize your experience".

* Questions/Options:

* Checkboxes (e.g., "What are your interests?").

* Radio Buttons (e.g., "How often will you use this?").

* Dropdowns/Sliders (e.g., "Your role," "Preferred notification frequency").

* Explanation (Body Text): Why this information is collected and how it benefits the user.

* Primary CTA (Button): "Continue" or "Save Preferences".

* Skip Option: "Skip for now" (top right or bottom left).

* Progress Indicator: Essential for multi-step personalization.

4.5 "Aha!" Moment / First Steps Screen

  • Layout: Focus on a single, clear call to action. Could be a simplified product view or a guided tour.
  • Elements:

* Headline (H2): "You're almost there!" or "Let's get started!".

* Key Action Prompt: (e.g., "Create your first project," "Add your first task," "Connect your data source").

* Primary CTA (Button): Directly initiates the key action.

Visual Aid: Screenshot or animated GIF showing how* to perform the action.

* Secondary Options: "Explore the dashboard," "Watch a quick tutorial."

* Progress Indicator: Showing the final step.

4.6 Onboarding Completion / Dashboard Entry Screen

  • Layout: Often a full-screen confirmation or immediate transition to the main dashboard.
  • Elements:

* Confirmation Message (H1/H2): "You're All Set!" or "Welcome to Your Dashboard!".

* Positive Reinforcement: "You've successfully completed your onboarding."

* Illustration/Animation: A celebratory graphic.

* Primary CTA (Button): "Go to Dashboard" or "Start Using [Product Name]".

* Optional: Link to help center, quick tips.

5. UX Recommendations

5.1 Progress & Feedback

  • Clear Progress Indicators: Utilize a visual progress bar or numbered steps/dots to show users their current position and how much is left. This reduces anxiety and encourages completion.
  • Instant Feedback: Provide immediate visual feedback for user actions (e.g., button presses, input validation errors, successful submissions).
  • Microinteractions: Subtle animations on button hovers, input focus, or successful completion can add delight and clarity.

5.2 User Control & Flexibility

  • "Skip" or "Do It Later" Options: Allow users to bypass non-essential steps of the onboarding, especially personalization, to get to the core product faster. This respects user time and preferences.
  • Clear Exit Points: Ensure users can easily close or cancel the onboarding process if they wish.
  • Remember Progress: If a user leaves the onboarding flow mid-way, allow them to resume from where they left off upon their next visit.

5.3 Content & Messaging

  • Concise Copy: Use short, clear, and benefit-oriented language. Avoid jargon.
  • Contextual Help: Offer brief tooltips or "Learn More" links for complex concepts without cluttering the main flow.
  • Positive Reinforcement: Use encouraging language, especially on completion screens.

5.4 Technical & Accessibility

  • Mobile Responsiveness: All designs must be fully responsive, adapting seamlessly across various screen sizes (desktop, tablet, mobile).
  • Accessibility (WCAG 2.1 AA):

* Ensure sufficient color contrast for text and interactive elements.

* Provide clear focus states for keyboard navigation.

* Use proper semantic HTML for screen reader compatibility.

* Offer alternative text for images and illustrations.

  • Performance: Optimize images and assets for fast loading times to prevent user drop-off.

5.5 Continuous Improvement

  • A/B Testing: Plan to A/B test different elements of the onboarding flow (e.g., CTA copy, number of steps, illustration styles) to optimize conversion rates.
  • Analytics Integration: Implement analytics tracking to monitor user drop-off points, completion rates, and time spent on each step.
  • User Testing: Conduct usability testing with real users to identify pain points and gather qualitative feedback for iterative improvements.

This comprehensive design specification serves as the foundation for developing a highly effective and user-friendly onboarding experience. By adhering to these guidelines, we will ensure consistency, clarity, and an engaging journey for every new user.

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