User Onboarding Flow
Run ID: 69cacab4eff1ba2b79624d762026-03-30UX Design
PantheraHive BOS
BOS Dashboard

User Onboarding Flow: Design Requirements & Specifications

This document outlines the comprehensive design requirements and specifications for the "User Onboarding Flow." The goal is to create an intuitive, engaging, and efficient experience for new users, guiding them from initial sign-up to their first successful interaction with the product, thereby maximizing activation and retention.


1. Onboarding Philosophy & Goals

Our onboarding flow will be designed with the following core principles:

  • Value-Driven: Immediately showcase the core benefits and unique selling proposition of the product.
  • Progressive Disclosure: Introduce information and features incrementally, avoiding overwhelm.
  • Action-Oriented: Encourage users to take meaningful steps towards achieving their goals within the product.
  • Personalized: Offer opportunities for customization and tailoring the experience to individual user needs.
  • Frictionless: Minimize cognitive load, reduce unnecessary steps, and provide clear guidance.
  • Supportive: Offer help and guidance at critical junctures, preventing user frustration.

Key Goals:

  • Reduce Time-to-Value: Help users experience the product's core benefit as quickly as possible.
  • Increase Activation Rate: Convert sign-ups into active, engaged users.
  • Improve Feature Adoption: Introduce key functionalities relevant to user goals.
  • Gather Essential User Data: Collect necessary information for personalization and future communication.
  • Build Trust & Confidence: Establish a positive first impression and demonstrate product reliability.

2. Detailed Design Specifications

The onboarding flow will consist of several distinct stages, each with specific objectives and design elements.

2.1. Welcome & Value Proposition Screen(s) (Optional: Pre-Sign Up)

  • Objective: Greet the user, reiterate the product's primary value, and set expectations.
  • Content:

* Catchy headline summarizing the key benefit.

* Short, impactful bullet points or a concise paragraph explaining what the user can achieve.

* High-quality hero image or short animation/video demonstrating the product in action or illustrating the core benefit.

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

* (Optional) Secondary CTA: "Learn More," linking to a features page or FAQ.

* (Optional) Social proof elements: Testimonials, partner logos, user counts.

  • Functionality:

* Navigable to subsequent sign-up/login screens.

* Responsive design for various devices.

2.2. Sign-Up / Account Creation

  • Objective: Collect necessary information to create a user account.
  • Content:

* Clear form fields for:

* Email Address (required)

* Password (required, with strength indicator and "show password" toggle)

* (Optional) Full Name / Company Name

* "Terms of Service" and "Privacy Policy" links (required, clearly visible).

* (Optional) Checkbox for marketing communications (opt-in by default, but user can uncheck).

* "Sign Up" / "Create Account" CTA.

* (Optional) Social sign-up options (Google, Apple, Facebook, etc.).

* Link for "Already have an account? Log In."

  • Functionality:

* Real-time input validation (e.g., valid email format, password strength).

* Error messages for invalid inputs.

Password reset/forgot functionality link (even if not part of this* flow, it should be accessible).

* Secure password handling (hashing).

2.3. Profile Setup / Personalization

  • Objective: Gather additional information to personalize the user experience and tailor initial product views.
  • Content:

* Step 1: User Role / Goal Identification:

* "What brings you here?" or "How do you plan to use [Product Name]?"

* Multiple-choice options (e.g., "For personal projects," "For my team," "As a student," "To learn X").

* (Optional) "Other" with a text input field.

* Step 2: Basic Profile Information (Optional based on product):

* Profile Picture upload.

* Industry/Department.

* Company Size.

* Step 3: Preferences / Interests:

* "What are you interested in?" or "Which features are most important to you?"

* Checkbox selections.

* Progress indicator (e.g., "Step 1 of 3," "25% Complete").

* "Skip for now" option (prominently placed but not overriding the primary CTA).

* "Continue" / "Next" CTA.

  • Functionality:

* Data persistence for entered information.

* Conditional logic to show/hide fields based on previous selections.

* Option to skip steps without hindering core functionality.

2.4. Product Tour / Feature Introduction

  • Objective: Briefly introduce key product areas and core functionalities relevant to the user's identified goals.
  • Content:

* Interactive Walkthrough (Tooltips/Hotspots):

* Highlight 3-5 critical UI elements.

* Short, actionable descriptions for each element (e.g., "Click here to create your first project," "This is your dashboard for progress tracking").

* Clear "Next" and "Skip Tour" options.

* Carousel/Slideshow (for simpler products or initial overview):

* 3-4 slides, each with a headline, brief description, and screenshot/illustration of a key feature.

* Progress dots/indicators.

* "Next," "Back," and "Skip Tour" options.

* (Optional) Short, embedded introductory video (1-2 minutes).

  • Functionality:

* Non-intrusive overlays for tooltips.

* Ability to dismiss the tour at any point.

* Option to replay the tour later (e.g., from settings).

* Contextual tours based on user role/goals from the previous step.

2.5. First Task / "Aha!" Moment

  • Objective: Guide the user to complete their first meaningful action that demonstrates the product's value. This is crucial for activation.
  • Content:

* Clear, single-minded prompt: "Let's create your first [item]," "Start your first [action]," "Connect your first [integration]."

* Brief instructions (1-2 sentences).

* Input fields or selectors required to complete the task.

* "Complete [Task]" / "Create" CTA.

* (Optional) "Need help?" link to a specific help article or video.

  • Functionality:

* Direct navigation to the relevant product area.

* Pre-filled data where possible to reduce user effort.

* Immediate feedback upon successful completion.

2.6. Success & Next Steps

  • Objective: Celebrate the user's first success and guide them to continued engagement.
  • Content:

* Confirmation message: "Congratulations! You've created your first [item]!" or "Great job! Your profile is complete."

* Positive visual reinforcement (e.g., checkmark icon, celebratory animation).

* Suggestions for immediate next steps:

* "Invite your team."

* "Explore more features."

* "Download our mobile app."

* "Visit our help center."

* Primary CTA: "Go to Dashboard" or "Start Exploring."

* Secondary CTAs for suggested next steps.

  • Functionality:

* Redirect to the main dashboard or relevant product page.

* (Optional) Trigger a welcome email.


3. Wireframe Descriptions (High-Level)

Here are high-level descriptions for each screen's layout, assuming a desktop-first approach with responsive considerations.

3.1. Welcome & Value Proposition Screen

  • Layout: Full-width hero section.

* Top: Product Logo (left), "Log In" link (right).

* Center-Left (or Center): Large, inviting headline, 3-4 bullet points detailing benefits.

* Center-Right (or Center): Engaging hero image/video demonstrating product value.

* Bottom: Prominent "Get Started" button (primary CTA). Optional "Learn More" (secondary CTA).

* (Optional) Small footer with social proof (logos, testimonials).

  • Responsive: Hero content stacks vertically on smaller screens. Image may be background or smaller above text.

3.2. Sign-Up / Account Creation Screen

  • Layout: Centered card or modal on a blurred/simple background.

* Top: Product Logo, "Create Your Account" headline.

* Middle: Form fields (Email, Password) with clear labels and input fields. "Show Password" icon.

* Below Form: Checkbox for terms & privacy (with links), followed by "Sign Up" button (full width of card).

* Bottom: Social sign-up buttons (if applicable), "Already have an account? Log In" link.

  • Responsive: Card scales to fit screen width, maintains central position.

3.3. Profile Setup / Personalization Screens (Multi-step)

  • Layout: Centered card or full-width section with a progress bar/indicator at the top.

* Top: "Complete Your Profile" headline, progress indicator (e.g., "Step 1 of 3").

* Middle: Clear question/prompt, followed by relevant input fields (radio buttons, checkboxes, text fields, dropdowns).

* Bottom: "Next" / "Continue" button (primary CTA), "Skip for now" link (secondary CTA, often left-aligned).

  • Responsive: Card scales, input fields adjust width.

3.4. Product Tour / Feature Introduction (Overlay)

  • Layout: Main product UI visible in the background.

* Overlay: Semi-transparent overlay over the product UI.

* Tooltip/Hotspot: A small, distinct pop-up box pointing to a specific UI element.

* Headline, 1-2 sentences of explanation.

* "Next" button, "Skip Tour" button (or "End Tour").

* (Optional) Progress dots for the tour steps.

  • Responsive: Tooltips adjust position to remain visible and not obstruct critical elements.

3.5. First Task / "Aha!" Moment Screen

  • Layout: Can be integrated into the product's main dashboard or a dedicated, simplified screen.

* Top: Clear, actionable headline (e.g., "Let's Create Your First Project").

* Middle: Minimalistic form or input area specifically for the first task. Contextual guidance text.

* Bottom: Primary "Create" / "Submit" button. (Optional) "Go to Dashboard" to bypass.

  • Responsive: Form elements scale, maintaining usability.

3.6. Success & Next Steps Screen

  • Layout: Centered card or full-screen modal with celebratory visuals.

* Top: Large checkmark icon or subtle animation.

* Middle: "Success!" or "Congratulations!" headline, followed by a brief confirmation message.

* Below Message: Clear primary CTA: "Go to Dashboard."

* Bottom: (Optional) 2-3 secondary CTAs for further engagement (e.g., "Invite Team," "Explore Features").

  • Responsive: Card/modal scales, content remains centered.

4. Color Palettes

The color palette should align with the brand identity, evoke the desired emotions (e.g., trustworthy, innovative, friendly), and ensure accessibility.

4.1. Primary Brand Colors

  • Primary Color: #2E86C1 (A vibrant, professional blue - common for tech, trust, and clarity)

Usage:* Main CTAs, primary headlines, active states, branding elements.

  • Secondary Color: #5DADE2 (A lighter shade of blue, or a complementary color)

Usage:* Secondary buttons, accents, background for certain sections, progress bars.

4.2. Accent & Complementary Colors

  • Accent Color: #28B463 (A fresh, energetic green - often associated with success, growth, and positive actions)

Usage:* Success messages, "New" labels, celebratory animations, specific highlights.

  • Warning/Error Color: #E74C3C (Standard red for error states)

Usage:* Form validation errors, destructive actions.

  • Informational Color: #F39C12 (Amber/Orange for warnings or informational tips)

Usage:* Tips, non-critical alerts.

4.3. Neutral Colors

  • Dark Text / Background: #2C3E50 (Dark charcoal for primary text, strong contrast)
  • Light Text / Background: #ECF0F1 (Off-white for backgrounds, cards)
  • Medium Gray: #BDC3C7 (For secondary text, borders, inactive states)
  • Light Gray: #F8F8F8 (For subtle backgrounds, dividers)

4.4. Accessibility Considerations

  • Ensure sufficient contrast ratios (WCAG 2.1 AA or AAA) between text and background colors.
  • Use color in addition to other visual cues (e.g., icons, text labels) to convey meaning, especially for error states.
  • Test colorblind-friendliness where possible.

5. UX Recommendations

These recommendations aim to enhance usability, reduce friction, and create a positive user experience throughout the onboarding flow.

  • Clear Progress Indication:

* Use a visible progress bar or "Step X of Y" notation on multi-step forms. This manages user expectations and provides a sense of accomplishment.

  • Minimize Input Fields:

* Only ask for absolutely essential information during initial sign-up. Defer non-critical details to later profile setup or a "Getting Started" checklist within the app.

* Pre-fill fields where possible (e.g., country based on IP, if applicable).

  • In-line Validation & Error Handling:

* Provide immediate feedback for form inputs (e.g., green check for valid email, red text for invalid password requirements).

Clear, actionable error messages that explain what went wrong and how* to fix it.

  • "Skip for Now" Option:

* For non-critical profile setup or personalization steps, offer a "Skip for now" link. This allows users to get to the core product faster if they're in a hurry, reducing abandonment.

  • Contextual Help & Tooltips:

* Use concise tooltips or info icons (i) next to complex fields or unfamiliar terms to provide on-demand explanations.

* Ensure

gemini Output

User Onboarding Flow: Detailed Design Specifications

This document outlines comprehensive design specifications, wireframe descriptions, color palettes, and UX recommendations for your User Onboarding Flow. The goal is to create an engaging, intuitive, and efficient experience that guides new users through the initial setup, highlights the core value proposition, and encourages successful feature adoption.


1. Executive Summary & Onboarding Principles

Overall Goal: To successfully convert new sign-ups into active, engaged users by providing a clear, concise, and value-driven introduction to the platform.

Key Onboarding Principles:

  • Value-Driven: Immediately showcase the benefits and core functionality.
  • Progressive Disclosure: Introduce information and steps gradually to prevent overwhelm.
  • Action-Oriented: Guide users to perform key actions that unlock value.
  • Personalized: Tailor the experience where possible to individual user needs.
  • Efficient: Minimize friction and unnecessary steps.
  • Empathetic: Anticipate user questions and provide clear guidance.
  • Delightful: Incorporate subtle animations and positive feedback.

2. Design Specifications for Each Onboarding Step

The onboarding flow is broken down into distinct, sequential steps, each designed with a specific purpose.


2.1. Step 1: Welcome & Value Proposition

Screen Name: Welcome Screen / Introduction

Purpose: Greet the user, reiterate the primary value proposition, and set expectations for the onboarding journey.

Key Elements:

  • Logo: Prominently displayed at the top.
  • Catchy Headline: e.g., "Welcome to [Your Product Name]!" or "Unlock Your Potential with [Your Product Name]."
  • Sub-headline/Short Paragraph: Briefly explain the core benefit or what the user can achieve.
  • Illustrative Graphic/Animation: Engaging visual that represents the product's essence or a key benefit.
  • Primary Call-to-Action (CTA): "Get Started," "Create Account," or "Sign Up."
  • Secondary CTA (Optional): "Log In" (for existing users who landed here by mistake).
  • Progress Indicator (Optional): "1 of X steps" (if the flow is short, otherwise introduce later).

Interaction/User Action: User clicks the primary CTA to proceed.

Success Criteria: User initiates the onboarding process.

Error Handling: N/A (this is an introductory screen).

Navigation: Leads to Step 2: Account Creation.

Wireframe Description:

  • Top: Centered Logo.
  • Middle: Large, centered headline, followed by a smaller sub-headline. Below this, a prominent, engaging illustration or animation.
  • Bottom: Centered primary CTA button. Optionally, a smaller text link for "Log In" below the CTA.
  • Overall: Clean, spacious layout with a clear visual hierarchy.

2.2. Step 2: Account Creation / Sign-up

Screen Name: Account Creation / Sign-up

Purpose: Collect essential information to create a user account. Offer multiple sign-up options for convenience.

Key Elements:

  • Logo: Top center.
  • Headline: "Create Your Account" or "Join [Your Product Name]."
  • Input Fields:

* Email Address (required)

* Password (required, with "Show/Hide" toggle and strength indicator)

* Confirm Password (required)

  • Social Sign-up Options: Buttons for "Continue with Google," "Continue with Apple," "Continue with Facebook."
  • "Remember Me" Checkbox (Optional): For future convenience.
  • Terms & Privacy Link: "By signing up, you agree to our [Terms of Service] and [Privacy Policy]."
  • Primary CTA: "Create Account" or "Sign Up."
  • Secondary CTA: "Already have an account? Log In."
  • Progress Indicator: "2 of X steps."

Interaction/User Action: User enters details or selects a social sign-up option, then clicks the primary CTA.

Success Criteria: Valid account created.

Error Handling:

  • Real-time Validation: Indicate invalid email format, weak password, or mismatched passwords immediately.
  • Server-side Validation: If email already exists, prompt user to log in or reset password.
  • Clear Error Messages: Specific and actionable (e.g., "Email is already registered," "Password must be at least 8 characters").

Navigation: Leads to Step 3: Basic Profile Setup or Email Verification (if required).

Wireframe Description:

  • Top: Centered Logo, followed by Headline.
  • Middle: Stacked social sign-up buttons (e.g., Google, Apple). Below these, a "OR" divider. Then, stacked input fields for Email, Password, Confirm Password. Password field includes an eye icon.
  • Bottom: Checkbox for "Remember Me" (if applicable), followed by legal text with links. Primary CTA button. Below this, a text link for "Already have an account? Log In."
  • Overall: Form-centric layout, clear labels, minimal distractions.

2.3. Step 3: Basic Profile Setup (Optional/Progressive)

Screen Name: Profile Details / Personalize Your Experience

Purpose: Gather essential information to personalize the user's initial experience. Keep this brief.

Key Elements:

  • Logo: Top center.
  • Headline: "Tell Us About Yourself" or "Personalize Your Profile."
  • Input Fields (Select 1-3 critical fields only):

* Full Name / First Name & Last Name

* Avatar Upload (optional, with default placeholder)

* Role/Industry (dropdown or text input)

* Company Name (optional)

  • Primary CTA: "Continue" or "Next."
  • Secondary CTA (Optional): "Skip for now."
  • Progress Indicator: "3 of X steps."

Interaction/User Action: User enters details and clicks CTA, or skips.

Success Criteria: Essential profile data captured (or skipped).

Error Handling:

  • Input Validation: Ensure required fields are filled, correct data types.
  • Image Upload: Clear feedback on file size limits, accepted formats.

Navigation: Leads to Step 4: Interest/Preference Selection.

Wireframe Description:

  • Top: Centered Logo, Headline.
  • Middle: Avatar upload circle with an "upload" icon. Below, stacked input fields for Name, Role (dropdown), etc.
  • Bottom: Primary CTA button. Below this, a smaller "Skip for now" text link.
  • Overall: Clean form, clear labels.

2.4. Step 4: Interest/Preference Selection

Screen Name: Personalization / What are you interested in?

Purpose: Tailor the initial content or feature recommendations based on user preferences.

Key Elements:

  • Logo: Top center.
  • Headline: "What are you interested in?" or "Help us tailor your experience."
  • Description: Briefly explain why this step is beneficial (e.g., "We'll show you content relevant to your choices").
  • Selection Options:

* Tags/Pills: Clickable buttons representing categories, topics, or features. Allow multi-selection.

* Checkboxes/Radio Buttons: For more structured choices.

* Sliders (less common): For preference intensity.

  • Primary CTA: "Continue" or "Finish."
  • Secondary CTA (Optional): "Skip for now."
  • Progress Indicator: "4 of X steps."

Interaction/User Action: User selects interests/preferences, then clicks CTA.

Success Criteria: User preferences recorded (or skipped).

Error Handling: N/A (selection is always valid).

Navigation: Leads to Step 5: Core Feature Introduction / Tutorial or Onboarding Completion.

Wireframe Description:

  • Top: Centered Logo, Headline, short descriptive text.
  • Middle: Grid or flow layout of clickable tags/pills for interest selection. Selected tags visually highlighted.
  • Bottom: Primary CTA button. Below this, a smaller "Skip for now" text link.
  • Overall: Visually engaging with clear selection states.

2.5. Step 5: Core Feature Introduction / Mini-Tutorial (Optional)

Screen Name: Quick Tour / Discover Key Features

Purpose: Briefly introduce 1-3 core features or actions the user must understand to get value. This can be a short carousel or interactive walkthrough.

Key Elements:

  • Logo: Top center.
  • Headline: "Quick Tour: Get Started!" or "Discover [Key Feature Name]."
  • Feature Card (Carousel):

* Headline: Name of the feature.

* Short Description: Explain its benefit.

* Illustrative Screenshot/Animation: Show the feature in action.

* Micro-interaction (Optional): A subtle animation demonstrating the feature.

  • Carousel Navigation: Dots or arrows to move between feature cards.
  • Primary CTA: "Continue" or "Explore [Feature Name]" (if it's the last card).
  • Secondary CTA: "Skip Tour."
  • Progress Indicator: "5 of X steps" or "X of Y features."

Interaction/User Action: User swipes/clicks through the tour, then clicks CTA or skips.

Success Criteria: User views key feature introductions (or skips).

Error Handling: N/A.

Navigation: Leads to Step 6: Onboarding Completion.

Wireframe Description:

  • Top: Centered Logo, Headline.
  • Middle: Large central card displaying a feature screenshot/animation, a headline, and a short description. Below the card, small dots indicating carousel position.
  • Bottom: Primary CTA button. Below this, a smaller "Skip Tour" text link.
  • Overall: Visually appealing, focused on one feature at a time.

2.6. Step 6: Onboarding Completion & Dashboard Access

Screen Name: You're All Set! / Welcome to Your Dashboard

Purpose: Confirm successful onboarding, provide a sense of accomplishment, and direct the user to their main dashboard or a relevant starting point.

Key Elements:

  • Logo: Top center.
  • Headline: "You're All Set!" or "Welcome to [Your Product Name]!"
  • Celebratory Graphic/Animation: A checkmark, confetti, or other positive visual.
  • Short Encouraging Message: "Your journey starts now!" or "We're excited to have you onboard."
  • Primary CTA: "Go to Dashboard," "Start Using [Your Product Name]," or "Explore."
  • Secondary CTA (Optional): "Invite Friends," "View Tutorial Again," or "Set Up [Next Key Action]."

Interaction/User Action: User clicks the primary CTA to enter the application.

Success Criteria: User successfully lands on the main application interface.

Error Handling: N/A.

Navigation: Navigates to the main application dashboard or a designated landing page.

Wireframe Description:

  • Top: Centered Logo, Headline.
  • Middle: Large, celebratory illustration or animation (e.g., a green checkmark with subtle movement). Below this, a short, encouraging message.
  • Bottom: Prominent primary CTA button. Optionally, one or two smaller secondary CTAs below.
  • Overall: Positive, celebratory, and clear call to enter the product.

3. General UX Recommendations

  • Progress Indicators: Implement a clear visual progress bar or "X of Y steps" indicator at the top of each screen (from Step 2 onwards) to manage user expectations and reduce abandonment.
  • Skip Options: Provide a "Skip for now" option for non-critical steps (e.g., profile setup, interests, tutorials) to allow users to quickly access the core product. Ensure skipped steps can be easily revisited later.
  • Micro-interactions & Animations: Use subtle animations for button clicks, form validation, and screen transitions to provide delightful feedback and enhance perceived performance.
  • Clear Value Proposition: Continuously reinforce the "why" throughout the onboarding, especially in the welcome and personalization steps.
  • Mobile Responsiveness: Ensure the entire onboarding flow is fully optimized and intuitive across all device sizes (mobile, tablet, desktop).
  • Accessibility: Design with accessibility in mind:

* High contrast ratios for text and backgrounds.

* Keyboard navigation support for all interactive elements.

* Descriptive alt text for images.

* ARIA attributes for dynamic content and forms.

  • Contextual Help: Offer small, unobtrusive tooltips or information icons for complex fields or choices.
  • Consistency: Maintain a consistent visual language, terminology, and interaction patterns throughout the flow.
  • Email Verification (Optional but Recommended): If email verification is critical, integrate it after account creation but before the user can fully access the application. Provide clear instructions and a "Resend Email" option.

4. Color Palette

A cohesive color palette enhances brand recognition and user experience.

  • Primary Brand Color: #3498DB (A vibrant, trustworthy blue)

Usage:* Primary CTAs, progress indicators, active states, key branding elements.

  • Secondary Accent Color: #2ECC71 (A fresh, positive green)

Usage:* Success messages, positive feedback, secondary CTAs (if distinct from primary).

  • Neutral Text Color: #34495E (Dark charcoal grey)

Usage:* Body text, headlines, form labels for excellent readability.

  • Light Grey Text/Hint Color: #95A5A6 (Medium grey)

Usage:* Placeholder text, secondary information, disabled states.

  • Background Color: #ECF0F1 (Light grey/off-white)

Usage:* Main screen background, provides a clean canvas.

  • White: #FFFFFF

Usage:* Card backgrounds, input fields, prominent elements.

  • Error/Warning Color: #E74C3C (Red)

Usage:* Error messages, invalid input indicators.


5. Typography

A well-chosen typography system ensures readability and reinforces brand identity.

  • Primary Font Family: Inter (or a similar clean, modern sans-serif like Open Sans, Roboto)
  • Secondary Font Family (for emphasis/branding, optional): Montserrat (or Lato)

Font Weights:

  • Light (300)
  • Regular (400)
  • Medium (500)
  • Semi-bold (600)
  • Bold (700)

Sizing & Usage (Example, adjust for specific needs):

  • H1 (Page Title/Headline): 32px - 48px, Bold/Semi-bold, Primary Font.

Usage:* "Welcome to [Product Name]!", "Create Your Account."

  • H2 (Section Headline): 24px - 30px, Medium/Semi-bold, Primary Font.

Usage:* "Tell Us About Yourself," "What are you interested in?"

  • Body Text: 16px - 18
gemini Output

User Onboarding Flow: Finalized Design Assets

This document outlines the finalized design assets and specifications for the User Onboarding Flow, focusing on creating an intuitive, engaging, and efficient first-time user experience. Our goal is to guide new users seamlessly through the initial setup, highlight core value, and set them up for successful product engagement.


1. Introduction & Design Philosophy

The User Onboarding Flow is a critical touchpoint, shaping the user's perception of your product. Our design philosophy centers on:

  • Clarity & Simplicity: Minimize cognitive load with straightforward language and uncluttered interfaces.
  • Engagement & Value: Captivate users early by showcasing immediate benefits and "aha!" moments.
  • Efficiency & Progress: Guide users swiftly through necessary steps with clear progress indicators.
  • Brand Consistency: Maintain a cohesive visual and interactive experience aligned with the overall brand identity.
  • Accessibility: Ensure the flow is usable and understandable for all users, regardless of ability.

2. Overall Design Specifications

  • Target Audience: New users across various technical proficiencies, seeking quick understanding and setup.
  • Platform: Responsive design optimized for web (desktop, tablet) and mobile (iOS, Android).
  • Core Goal: Successfully onboard 90%+ of new users, leading them to their first meaningful interaction or "aha!" moment within the product.
  • Key Principles:

* Progressive Disclosure: Introduce information gradually to prevent overwhelm.

* Positive Reinforcement: Use encouraging language and visuals throughout the process.

* Action-Oriented: Each screen should have a clear primary call to action.

* Error Prevention & Recovery: Guide users away from errors and provide clear recovery paths.


3. Core Onboarding Screens & Wireframe Descriptions

The onboarding flow is segmented into key stages, each with a specific purpose and design considerations.

3.1. Screen 1: Welcome / Introduction

  • Purpose: Greet the user, set expectations, and articulate the primary value proposition of the product.
  • Key Elements:

* Brand Logo: Prominently displayed.

* Catchy Headline: Concise and benefit-oriented (e.g., "Unlock Your Productivity," "Connect & Collaborate").

* Short Description/Tagline: Elaborates on the headline's promise.

* Engaging Visual/Illustration: A high-quality, on-brand image or animation that visually represents the product's core benefit.

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

* Secondary CTA (Optional): "Log In" for returning users, positioned subtly.

  • Wireframe Description:

* Mobile: Full-screen layout. Logo at top, followed by headline, description. Centralized illustration. CTA button at the bottom, full-width. Login link below CTA.

* Desktop: Centered content block. Logo, headline, description on the left. Large illustration on the right, or a full-width banner with overlay text. CTA prominent below the description.

  • Interaction: Clicking the primary CTA transitions to the Sign-up screen.

3.2. Screen 2: Sign-up / Login

  • Purpose: Collect necessary user credentials or allow existing users to access their accounts.
  • Key Elements:

* Clear Title: "Create Your Account" or "Sign Up."

* Form Fields:

* Email Address (required)

* Password (required, with "show/hide" toggle and strength indicator)

* Confirm Password (if required)

* Optional: Full Name, Username (if applicable)

* Social Sign-up Options: "Continue with Google," "Continue with Apple," "Continue with Facebook" (as prominent secondary CTAs).

* "Forgot Password" Link: For login flow.

* Terms of Service/Privacy Policy Link: Discreetly placed.

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

* Toggle/Link: "Already have an account? Log In" or "Don't have an account? Sign Up."

  • Wireframe Description:

* Mobile: Vertically stacked form fields. Social sign-up buttons below the main form. Terms/Privacy at the bottom. Primary CTA full-width.

* Desktop: Centered form, potentially split into two columns if more fields are needed. Social sign-up options clearly visible.

  • Interaction: Form validation on submission. Successful submission leads to the next step (e.g., Profile Setup or Feature Tour).

3.3. Screen 3: Value Proposition / Feature Introduction (Onboarding Carousel/Tour)

  • Purpose: Showcase key features and benefits, reinforcing the value proposition and building excitement.
  • Key Elements:

* Progress Indicator: Dots or numerical steps (e.g., "1 of 3").

* Carousel Slides (3-5 recommended): Each slide features:

* Headline: Highlights a specific benefit or feature.

* Short Description: Explains the benefit concisely.

* Relevant Illustration/Screenshot: Visually demonstrates the feature in action.

* Navigation Controls: "Next" button, "Back" button (optional), "Skip" button.

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

  • Wireframe Description:

* Mobile: Full-screen carousel. Progress dots at the top or bottom. Content centered. Navigation buttons at the bottom.

* Desktop: Centered content block. Large illustration/screenshot. Text description. Navigation buttons below.

  • Interaction: Swiping/clicking "Next" advances the carousel. "Skip" bypasses the tour and takes the user directly to the dashboard.

3.4. Screen 4: Profile Setup / Personalization (Optional, but Recommended for Tailored Experience)

  • Purpose: Gather essential information to personalize the user's experience and configure initial settings.
  • Key Elements:

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

* Progress Indicator: (e.g., "Step 2 of 3").

* Form Fields/Selection Options:

* Name (if not collected during sign-up)

* Profile Picture Upload (optional)

* User Preferences (e.g., interests, role, industry, goals, notification preferences)

* Note: Use smart defaults and progressive disclosure (e.g., multi-select tags, radio buttons, dropdowns) to minimize typing.

* Primary CTA: "Continue," "Save & Continue."

* Secondary CTA: "Skip for now" (if the step isn't mandatory for basic functionality).

  • Wireframe Description:

* Mobile: Vertically stacked input fields/selection components. Clear labels. Primary CTA full-width at the bottom.

* Desktop: Centered content block. Fields organized logically. Visual cues for optional fields.

  • Interaction: Form validation. Submission leads to the final onboarding step or the dashboard.

3.5. Screen 5: Onboarding Completion / First Dashboard View

  • Purpose: Celebrate successful onboarding, provide a sense of accomplishment, and guide the user to their first meaningful action within the product.
  • Key Elements:

* Success Message: "You're All Set!" or "Welcome to [Product Name]!"

* Celebratory Visual/Animation: A small, delightful animation or illustration.

* Gentle Nudge/First Action CTA: "Explore Your Dashboard," "Create Your First Project," "Invite Your Team." This should lead to the product's core functionality.

* Small, Contextual Tooltips/Hotspots: Briefly highlight key UI elements on the dashboard (e.g., "This is your main navigation," "Click here to add new content"). These should be dismissible.

  • Wireframe Description:

* Mobile/Desktop: The actual dashboard interface with the success message/animation overlaid briefly, then fading to reveal subtle, dismissible tooltips on key elements. The primary CTA should be prominent within the dashboard itself or as a final onboarding step.

  • Interaction: Clicking the primary CTA or dismissing tooltips engages the user with the live product interface.

4. Visual Design Elements

4.1. Color Palette

  • Primary Brand Color: #007BFF (A vibrant, professional blue)

* Usage: Primary CTAs, key interactive elements, brand highlights, progress indicators.

  • Secondary Brand Color: #6C757D (A muted, sophisticated grey-blue)

* Usage: Secondary CTAs, subtle branding, background elements, inactive states.

  • Accent Color: #28A745 (A bright, encouraging green)

* Usage: Success messages, positive feedback, subtle highlights.

  • Neutral Colors:

* Background: #F8F9FA (Light grey)

* Text (Primary): #212529 (Dark grey for readability)

* Text (Secondary): #6C757D (Softer grey for supporting text)

* Borders/Dividers: #DEE2E6 (Light grey)

  • Semantic Colors:

* Success: #28A745 (Green)

* Error: #DC3545 (Red)

* Warning: #FFC107 (Amber)

* Info: #17A2B8 (Cyan)

4.2. Typography

  • Primary Font Family (Headings & UI): Inter (or similar modern sans-serif like Montserrat, Poppins)

* Usage: Headlines, subheadings, button text, navigation labels.

* Weights: Regular (400), Medium (500), Semi-Bold (600), Bold (700).

  • Secondary Font Family (Body Text): Open Sans (or similar highly readable sans-serif like Lato, Roboto)

* Usage: Body paragraphs, descriptions, form field labels, legal text.

* Weights: Regular (400), Semi-Bold (600).

  • Font Sizes (Responsive, base on 16px):

* H1 (Screen Title): 2.5rem (40px) Desktop, 2rem (32px) Mobile

* H2 (Section Title): 1.75rem (28px) Desktop, 1.5rem (24px) Mobile

* H3 (Subheading): 1.25rem (20px) Desktop, 1.125rem (18px) Mobile

* Body Text: 1rem (16px)

* Small Text/Caption: 0.875rem (14px)

* Button Text: 1rem (16px), Semi-Bold

  • Line Height: 1.5 for body text, 1.2 for headings.
  • Letter Spacing: Tightly controlled for headings (-0.02em), normal for body text.

4.3. Iconography

  • Style: Clean, line-based icons with a consistent stroke weight (e.g., 2px). Filled icons can be used for active states or small, illustrative purposes.
  • Consistency: All icons should adhere to a unified aesthetic, reflecting the brand's modern and approachable tone.
  • Usage:

* Accompanying text in lists or feature descriptions.

* Within buttons for clarity (e.g., a "Next" arrow).

* Progress indicators (e.g., checkmarks for completed steps).

* Error messages (e.g., exclamation mark).

4.4. Imagery & Illustrations

  • Style: Modern, flat, or slightly isometric illustrations with a limited color palette that complements the brand's primary and secondary colors. Avoid overly complex or realistic imagery.
  • Purpose:

* Engagement: Visual breaks on welcome screens and feature tours.

* Clarity: Helping to explain complex concepts visually.

* Brand Personality: Injecting warmth and approachability.

  • Consistency: All visual assets should share a common style, color usage,
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);}});}