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

As part of the "User Onboarding Flow" workflow, this document outlines the comprehensive design requirements for a robust, engaging, and effective user onboarding experience. This foundational research and design specification will guide subsequent design and development phases, ensuring a user-centric approach focused on maximizing user activation and retention.


User Onboarding Flow: Design Requirements & Specifications

1. Introduction & Project Goals

The User Onboarding Flow is a critical component for new user activation, aiming to seamlessly introduce users to our product's value proposition and core functionalities. This document details the design specifications, conceptual wireframe descriptions, proposed color palettes, and key UX recommendations to achieve a superior onboarding experience.

Primary Goals of the User Onboarding Flow:

  • Reduce Time-to-Value (TTV): Enable users to quickly understand and experience the core benefits of the product.
  • Increase Feature Adoption: Guide users to discover and utilize key features relevant to their needs.
  • Improve User Retention: Set users up for long-term engagement by providing a clear path to success.
  • Gather User Preferences: Collect essential information to personalize the user experience from the outset.
  • Minimize Friction: Create a smooth, intuitive, and enjoyable initial interaction.
  • Establish Brand Identity: Reinforce our brand's voice, aesthetics, and values.

2. Target Audience & Persona Considerations

The onboarding flow must cater to a diverse user base, recognizing varying levels of technical proficiency and familiarity with similar products.

  • New Users: Individuals completely new to the product, requiring clear guidance and value articulation.
  • Migrating Users: Users transitioning from a competitor, potentially looking for specific feature parity or improvements.
  • Referral Users: Users who may have some prior context but still need a structured introduction.

Key Considerations:

  • Clarity & Simplicity: Avoid jargon, present information concisely.
  • Motivation: Emphasize benefits over features.
  • Patience: Allow users to explore at their own pace, with options to skip or revisit.
  • Feedback: Provide clear feedback for actions and progress.

3. Detailed Design Specifications

The onboarding flow will be structured into distinct, logical phases, each with specific objectives and design requirements.

3.1. Flow Phases & Objectives:

  1. Welcome & Value Proposition (Phase 1):

* Objective: Greet the user, articulate the primary benefits, and set expectations.

* Content: Engaging headline, compelling product benefits (1-3 key points), a clear call to action (CTA) to start.

* Interaction: Simple click to proceed.

  1. Personalization & Preferences (Phase 2):

* Objective: Collect essential user information to tailor the experience and content.

* Content: Short, relevant questions about user goals, roles, interests, or desired outcomes.

* Interaction: Multiple-choice selections, checkboxes, short text inputs. Allow "skip for now" option.

  1. Key Feature Introduction / Guided Tour (Phase 3):

* Objective: Highlight 2-3 core functionalities that deliver immediate value based on user preferences.

* Content: Brief, engaging descriptions of features, perhaps with visual cues (e.g., short animations, screenshots).

* Interaction: Step-by-step tour, interactive tooltips, or a concise carousel presentation. Each step should have a clear "Next" or "Got It" CTA.

  1. First Action & Goal Setting (Phase 4):

* Objective: Encourage the user to take their first meaningful action within the product, leading to an "aha!" moment.

* Content: Suggest a simple, impactful task (e.g., "Create your first project," "Invite a team member," "Set up your profile").

* Interaction: Direct link to the relevant feature area, clear CTA.

  1. Completion & Dashboard Transition (Phase 5):

* Objective: Affirm successful onboarding, provide a sense of accomplishment, and seamlessly transition to the main application dashboard.

* Content: Congratulatory message, quick access to common actions or resources (e.g., "Go to Dashboard," "Explore Tutorials").

* Interaction: Final CTA to enter the product.

3.2. General Design Requirements:

  • Progress Indication: A clear visual indicator (e.g., "Step X of Y," progress bar) must be present throughout the multi-step flow.
  • Skipping & Exiting: Users should have the option to "Skip" individual personalization steps or "Exit Onboarding" at any point. Skipped steps should be easily accessible later (e.g., via settings).
  • Back Navigation: A "Back" button should be available for users to review or change previous selections.
  • Mobile Responsiveness: The entire flow must be fully responsive and optimized for various screen sizes (desktop, tablet, mobile).
  • Accessibility: Adherence to WCAG 2.1 AA standards for color contrast, keyboard navigation, and screen reader compatibility.
  • Error Handling: Clear, user-friendly error messages for any input validation failures.
  • Data Collection: All user input must be securely collected and stored, informing subsequent personalization.
  • Analytics Integration: Each step, interaction, and completion event must be trackable for performance monitoring and A/B testing.

4. Wireframe Descriptions (Conceptual)

Below are conceptual descriptions for key screens within the onboarding flow. These descriptions outline the core elements and their intended layout, serving as a blueprint for visual wireframing.

4.1. Screen 1: Welcome & Value Proposition

  • Layout: Centered, clean, and visually appealing.
  • Elements:

* Header: Large, inviting headline (e.g., "Welcome to [Product Name]!").

* Sub-header: Concise, compelling tagline.

* Visual: Prominent, high-quality hero image or animation illustrating product benefit/use case.

* Value Points: 1-3 bullet points or short paragraphs highlighting key benefits (not features).

* Primary CTA: "Get Started" or "Let's Begin" (prominent button).

* Secondary CTA: "Log In" (if applicable, for existing users).

* Progress Indicator: (Optional for first screen, but useful if it's part of a multi-step welcome).

4.2. Screen 2: Personalization Questions (Example: User Goals)

  • Layout: Structured, easy-to-read, with clear question and answer options.
  • Elements:

* Progress Indicator: "Step 1 of X".

* Header: Clear question (e.g., "What brings you to [Product Name]?").

* Description: Optional, brief context for the question.

* Answer Options: Multiple-choice cards or radio buttons, each with an icon and short descriptive text.

* Primary CTA: "Continue" or "Next" (enabled once a selection is made).

* Secondary CTA: "Skip for now" (less prominent).

* Navigation: "Back" button.

4.3. Screen 3: Key Feature Introduction (Example: Interactive Tour Step)

  • Layout: Focus on a specific feature area with clear annotations.
  • Elements:

* Progress Indicator: "Step X of Y".

* Header: Feature name (e.g., "Effortless Project Management").

* Visual: Screenshot or live-like mock-up of the feature, with an animated tooltip pointing to the relevant UI element.

* Description: Short explanation of the feature's benefit and how to use it.

* Primary CTA: "Next Feature" or "Got It!"

* Secondary CTA: "Skip Tour" or "Explore Later".

* Navigation: "Back" button.

4.4. Screen 4: First Action & Goal Setting

  • Layout: Action-oriented, encouraging immediate engagement.
  • Elements:

* Progress Indicator: "Almost Done!".

* Header: Action-oriented headline (e.g., "Ready to get started?").

* Suggested Action: Clear, singular task presented as a button or prominent link (e.g., "Create Your First Dashboard").

* Optional Secondary Actions: (e.g., "Explore Templates," "Invite Team Members" - less prominent).

* Visual: Small, encouraging illustration or icon.

* Primary CTA: Button for the suggested action.

* Secondary CTA: "Go to Dashboard" (if the user wants to jump directly).

4.5. Screen 5: Completion & Dashboard Transition

  • Layout: Celebratory and welcoming.
  • Elements:

* Header: Congratulatory message (e.g., "You're All Set!").

* Sub-header: Reinforce readiness (e.g., "Welcome to your new [Product Name] experience.").

* Visual: Celebratory illustration or animation.

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

* Optional Resources: Links to help center, tutorials, or community.

5. Color Palettes

The color palette will reflect our brand identity, ensuring a professional, modern, and user-friendly aesthetic while maintaining accessibility.

  • Primary Brand Color:

* Usage: Key interactive elements (primary CTAs, progress indicators), branding elements.

* Example: #007bff (Vibrant Blue) - Represents trust, professionalism, and innovation.

  • Secondary Brand Color:

* Usage: Secondary CTAs, accent elements, background for specific sections.

* Example: #6c757d (Muted Grey/Slate) - Provides balance and sophistication, complements primary.

  • Accent Color:

* Usage: Highlighting important information, small interactive elements, error states if distinct from semantic.

* Example: #28a745 (Success Green) - Can be repurposed for success messages or a distinct highlight. Or #ffc107 (Warning Yellow) for a more general accent. Let's go with a more neutral accent for general use, and keep semantic colors separate.

* Example: #6f42c1 (Deep Purple) - Adds a touch of creativity and distinction, used sparingly.

  • Neutral Colors (Text & Backgrounds):

* Backgrounds:

* #ffffff (Pure White) - Main background.

* #f8f9fa (Light Grey) - Subtle background for cards or sections.

* Text:

* #212529 (Dark Charcoal) - Primary text.

* #495057 (Medium Grey) - Secondary text, labels.

* #6c757d (Light Grey) - Placeholder text, disabled states.

  • Semantic Colors:

* Success: #28a745 (Green) - For successful actions, completion.

* Warning: #ffc107 (Yellow/Orange) - For cautionary messages.

* Error: #dc3545 (Red) - For validation errors, critical alerts.

* Info: #17a2b8 (Cyan) - For informative messages.

Accessibility Note: All color combinations will be tested to ensure a minimum contrast ratio of 4.5:1 for normal text and 3:1 for large text, as per WCAG 2.1 AA guidelines.

6. UX Recommendations

These recommendations are designed to enhance usability, engagement, and overall user satisfaction during the onboarding process.

  • Progressive Disclosure: Present information gradually. Avoid overwhelming users with too much information at once. Break down complex steps into smaller, manageable chunks.
  • Clear Value Proposition: Continuously reinforce the "why" behind using the product and each feature. Connect actions to tangible benefits for the user.
  • Personalization & Adaptability: Utilize collected user preferences to dynamically adjust the content, feature highlights, and suggested first actions. This makes the experience feel tailored and relevant.
  • Microinteractions & Feedback: Implement subtle animations, hover states, and immediate visual feedback for user actions (e.g., button clicks, form submissions). This enhances responsiveness and delight.
  • Concise & Action-Oriented Copy: Use clear, direct, and encouraging language. Avoid jargon. Focus on verbs that prompt action and outcomes.
  • Visual Hierarchy: Use size, color, contrast, and spacing to guide the user's eye and highlight the most important elements (e.g., primary CTAs).
  • "Show, Don't Just Tell": Wherever possible, use short videos, GIFs, interactive demos, or annotated screenshots to explain features rather than lengthy text descriptions.
  • Empowerment & Control: Provide options to skip steps, go back, or exit the onboarding. Users should feel in control of their journey, not trapped.
  • Contextual Help: Integrate small "i" icons or tooltips for complex terms or optional information, accessible on demand.
  • Gamification (Optional Consideration): Explore light gamification elements like progress badges, small animations on completion, or encouraging messages to add delight and motivation.
  • A/B Testing Strategy: Design the flow with A/B testing in mind for key elements (e.g., CTA copy, number of personalization steps, order of feature highlights). This will allow for continuous optimization based on user behavior data.
  • Seamless Transition to Product: The final step should feel like a natural entry point into the main application, not an abrupt end. The dashboard should reflect the personalization choices made during onboarding.
  • Mobile-First Approach: Design for mobile devices first, then scale up to larger screens. This ensures a robust and accessible experience across all devices.

This detailed research and design requirements document provides a comprehensive foundation for the "User Onboarding Flow." The next steps will involve translating these specifications into detailed wireframes and high-fidelity mockups, followed by iterative development and testing.

gemini Output

Detailed Design Specifications: User Onboarding Flow

This document outlines the comprehensive design specifications for the User Onboarding Flow, focusing on creating an intuitive, engaging, and efficient experience for new users. The goal is to maximize user activation and retention by clearly communicating value and guiding users through initial setup with ease.


1. Overview and Core Objectives

The User Onboarding Flow is designed to smoothly transition a new user from their initial interaction with the platform to becoming an active, engaged user.

Core Objectives:

  • Educate: Clearly communicate the platform's value proposition and key features.
  • Engage: Encourage interaction and prompt necessary setup steps.
  • Simplify: Minimize friction and cognitive load for the user.
  • Personalize: Gather essential information to tailor the user experience.
  • Activate: Guide users to their "Aha! moment" quickly.

Key Principles:

  • Progressive Disclosure: Present information and tasks in small, manageable chunks.
  • Feedback & Guidance: Provide clear visual and textual cues throughout the process.
  • Optionality & Skipability: Allow users to skip non-essential steps and return later.
  • Mobile-First Approach: Ensure a seamless experience on all devices, prioritizing mobile.
  • Brand Consistency: Maintain a cohesive look and feel aligned with the overall brand identity.

2. Flow Breakdown & Screen Specifications

The onboarding flow is segmented into distinct, logical steps. Each step is designed to achieve a specific objective while maintaining a consistent user experience.

2.1. Welcome / Introduction Screen

  • Purpose: Greet the user, introduce the platform, and set a positive tone.
  • Wireframe Description:

* Hero Image/Illustration: A high-quality, engaging visual that embodies the platform's core offering or brand personality.

* Headline: A concise, benefit-driven statement (e.g., "Welcome to [Platform Name]! Unlock Your Potential").

* Sub-headline/Short Description: 1-2 sentences explaining what the platform helps users achieve.

* Call-to-Action (CTA) Button: Prominently displayed, e.g., "Get Started," "Create Account."

* Secondary Link: For existing users, e.g., "Already have an account? Log In."

* Privacy Policy/Terms Link: Discreetly placed in the footer.

  • User Interaction/Actions:

* Tap "Get Started" to proceed.

* Tap "Log In" to navigate to the login screen.

  • Success Criteria: User understands the basic premise and proceeds to the next step.

2.2. Value Proposition / Feature Showcase Screens (Onboarding Carousel)

  • Purpose: Highlight 2-4 key benefits or features of the platform, building anticipation and demonstrating value.
  • Wireframe Description (Per Screen):

* Progress Indicator: Dots or a progress bar at the bottom to show current step (e.g., 1 of 3).

* Illustration/Icon: A distinct, professional visual representing the feature/benefit.

* Feature Title: A clear, concise title for the feature (e.g., "Streamline Your Workflow").

* Feature Description: 1-2 sentences explaining the benefit or how the feature helps the user.

* Navigation: "Skip" link (top right), "Previous" (left arrow), "Next" (right arrow/button), "Continue" (on final screen).

  • User Interaction/Actions:

* Swipe left/right or tap "Next"/"Previous" to navigate between screens.

* Tap "Skip" to bypass the tour and proceed to Sign Up/Log In.

* Tap "Continue" on the last screen to proceed.

  • Success Criteria: User gains a basic understanding of the platform's core offerings.

2.3. Sign Up / Log In Screen

  • Purpose: Allow new users to create an account or existing users to log in.
  • Wireframe Description:

* Tabbed Interface: "Sign Up" and "Log In" tabs at the top, allowing easy switching.

* Sign Up Form:

* Email input field.

* Password input field (with "Show/Hide" toggle).

* "Confirm Password" input field (optional, depending on security requirements).

* "I agree to the Terms & Conditions and Privacy Policy" checkbox (with links).

* Primary CTA: "Create Account."

* Log In Form:

* Email input field.

* Password input field (with "Show/Hide" toggle).

* "Forgot Password?" link.

* Primary CTA: "Log In."

* Social Sign-Up/Log-In Options: Buttons for "Continue with Google," "Continue with Apple," etc. (clearly separated by "Or").

  • User Interaction/Actions:

* Fill out form fields.

* Tap "Create Account" or "Log In."

* Tap social login buttons.

* Tap "Forgot Password?" or T&C links.

  • Error Handling:

* Inline validation for email format, password strength, and matching passwords.

* Clear, concise error messages (e.g., "Invalid email format," "Password must be at least 8 characters").

* Server-side error messages for existing email or incorrect credentials.

  • Success Criteria: User successfully creates an account or logs in.

2.4. Basic Profile Setup (Optional/Conditional)

  • Purpose: Gather essential information required for initial platform functionality or personalization.
  • Wireframe Description:

* Progress Indicator: Clearly show progress within the setup phase.

* Headline: "Just a few more details..." or "Tell us about yourself."

* Input Fields:

* Full Name (First Name, Last Name).

* Profile Picture Upload (with camera/gallery option, or default avatar).

* Optional: Role/Industry dropdown, Company Name.

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

* Secondary Link: "Skip for now" (with clear indication that it can be completed later).

  • User Interaction/Actions:

* Fill out input fields.

* Upload profile picture.

* Tap "Continue" or "Skip for now."

  • Error Handling:

* Required field validation.

* Image upload size/type restrictions.

  • Success Criteria: User provides basic profile information or chooses to skip.

2.5. Personalization / Preferences (Tailoring the Experience)

  • Purpose: Gather data to customize the user's initial experience and content.
  • Wireframe Description:

* Headline: "How will you use [Platform Name]?" or "What are your interests?"

* Multiple Choice/Tag Selection:

* Clear categories or tags (e.g., "Personal Use," "Team Collaboration," "Project Management," "Learning," "Networking").

* Visually appealing, tappable cards or checkboxes for selection.

* Option for "Other" with a text input field.

* CTA Button: "Continue," "Finish Setup."

* Secondary Link: "Skip for now."

  • User Interaction/Actions:

* Select relevant options.

* Tap "Continue" or "Skip for now."

  • Success Criteria: User provides preference data, enabling a more tailored experience.

2.6. Permissions Request (Notifications, Location - if applicable)

  • Purpose: Request necessary device permissions in context, explaining why they are needed.
  • Wireframe Description:

* Headline: "Stay informed with notifications" or "Enable location for relevant content."

* Explanation: 1-2 sentences explaining the benefit of enabling the permission (e.g., "We'll send you important updates and reminders so you never miss a beat.").

* Illustration/Icon: Related to notifications or location.

* Primary CTA: "Enable Notifications," "Allow Location Access."

* Secondary CTA: "Not now," "Maybe later."

  • User Interaction/Actions:

* Tap "Enable..." to trigger the native device permission prompt.

* Tap "Not now" to decline (can be re-prompted later).

  • Success Criteria: User understands the value and makes an informed decision regarding permissions.

2.7. First Task / Guided Tour / Empty State Guidance

  • Purpose: Guide the user to their first "Aha! moment" or demonstrate core functionality immediately upon entering the app.
  • Wireframe Description:

* Option A: Interactive Tour (Tooltips):

* Overlay with translucent background.

* Highlighted element (e.g., a button or menu item).

* Tooltip with short explanation and "Next" / "Got It" buttons.

* Option B: Empty State with Action:

* On the main dashboard/first feature screen.

* Central illustration or icon.

* Headline: "Your journey starts here!" or "No projects yet."

* Sub-headline: "Create your first [item] to get started."

* Primary CTA: "Create [Item]," "Add Your First Task."

* Option C: Short Video Tutorial:

* Embedded, auto-playing (muted) short video demonstrating a core action.

* Overlay with "Skip Tutorial" and "Watch Again" options.

  • User Interaction/Actions:

* Follow the interactive tour.

* Tap the CTA on the empty state.

* Watch/skip the video.

  • Success Criteria: User successfully completes their first meaningful action or understands how to.

2.8. Onboarding Complete / Dashboard Access

  • Purpose: Signal the end of the onboarding process and smoothly transition to the main application.
  • Wireframe Description:

* Celebratory Visual: A simple animation or illustration (e.g., a checkmark, confetti).

* Headline: "You're all set!" or "Welcome to [Platform Name]!"

* Sub-headline: "Let's get started on your journey."

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

  • User Interaction/Actions:

* Tap "Go to Dashboard" to navigate to the main application interface.

  • Success Criteria: User seamlessly enters the application, ready to use its features.

3. General UX Recommendations

  • Clear Progress Indication: Use progress bars or step indicators on multi-step forms to manage user expectations.
  • Visual Hierarchy: Use size, color, and placement to guide the user's eye to the most important elements (CTAs, headlines).
  • Minimalist Design: Avoid clutter. Focus on one primary action per screen.
  • Microinteractions: Subtle animations and feedback (e.g., button presses, successful form submission) enhance engagement.
  • Accessibility: Design for all users, including those with disabilities (see Section 9).
  • Fast Loading Times: Optimize images and assets to ensure quick screen transitions.
  • Responsive Design: Ensure the experience is optimal on various screen sizes (mobile, tablet, desktop).
  • Contextual Help: Provide small "?" icons or info tooltips for complex fields or concepts.
  • User Testing: Conduct early and frequent user testing to identify friction points.

4. Color Palette

A professional, modern, and inviting color palette will be used to ensure brand consistency and a pleasant user experience.

  • Primary Brand Color:

* Hex: #3498DB (A vibrant, trustworthy blue, often associated with technology, reliability, and professionalism).

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

  • Secondary Accent Color:

* Hex: #2ECC71 (A fresh, optimistic green, suggesting growth, success, and positive actions).

* Usage: Success messages, secondary CTAs, positive affirmations, highlights.

  • Neutral Palette (Backgrounds & Text):

* Dark Text: #2C3E50 (A deep, professional charcoal for main body text and headlines, ensuring readability).

* Light Grey (Subtle Backgrounds): #ECF0F1 (A very light, almost white grey for subtle background variations, card backgrounds).

* Medium Grey (Secondary Text/Borders): #BDC3C7 (For secondary text, disabled states, borders, and subtle dividers).

* White: #FFFFFF (Clean backgrounds, card elements, primary content areas).

  • Error/Warning Color:

* Hex: #E74C3C (A clear, impactful red for error messages and warnings).


5. Typography

Choosing the right fonts ensures readability and reinforces the brand's personality.

  • Primary Font (Headlines & CTAs):

* Font Family: Inter (or a similar modern, sans-serif font like Montserrat, Lato).

* Characteristics: Clean, highly readable, versatile, and suitable for digital interfaces.

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

* Usage: All headlines (H1-H4), primary call-to-action buttons.

  • Secondary Font (Body Text & UI Elements):

* Font Family: Inter (or a similar clean, sans-serif font like Open Sans, Roboto).

* Characteristics: Excellent readability at small sizes, neutral and professional.

* Weights: Regular (400), Light (300).

* Usage: Body text, form labels, input text, small descriptive text, navigation links.

Font Sizing (Example - Responsive):

  • H1 (Screen Title): 28px (Mobile) - 36px (Desktop)
  • H2 (Section Title): 22px (Mobile) - 28px (Desktop)
  • Body Text: 16px (Mobile) - 18px (Desktop)
  • Small Text/Captions: 12px - 14px
  • CTA Button Text: 16px - 18px (Semi-Bold)

6. Iconography

  • Style: Line-based, minimalist, and consistent. Icons should be easily recognizable and complement the overall design aesthetic.
  • Set: Use a single, comprehensive icon library (e.g., Font Awesome, Material Icons, or custom SVG set) to maintain consistency in style, stroke weight, and corner radius.
  • Color: Primarily use the Dark Text color (#2C3E50) for icons, with the Primary Brand Color (#3498DB) for active or highlighted states.

7. Imagery & Illustrations

  • Style: Modern, friendly, and professional. Illustrations should be custom-designed or sourced from a high-quality library that matches the brand's aesthetic.
  • Purpose: Used to convey concepts, add visual appeal, and break up text-heavy sections (e.g., on Welcome and Value Proposition screens).
  • Tone: Should evoke a sense of clarity, empowerment, and ease of use. Avoid overly complex or cartoonish styles.
  • Photography (if used): High-quality, authentic, and diverse imagery that reflects the target audience and platform's use cases.

8. Accessibility Considerations (WCAG 2.1 AA Compliance)

Ensuring the onboarding flow is accessible to all users is

gemini Output

This document outlines the finalized design assets for the User Onboarding Flow, providing comprehensive specifications, wireframe descriptions, color palettes, and UX recommendations. These guidelines are designed to create an engaging, intuitive, and efficient onboarding experience for new users, ensuring a strong first impression and successful adoption of the product.


Finalized Design Assets: User Onboarding Flow

1. Introduction

The user onboarding flow is a critical touchpoint for new users, setting the tone for their entire experience with our product. This deliverable provides a detailed blueprint for the visual and interactive design of the onboarding journey, focusing on clarity, engagement, and user success. Our goal is to minimize friction, highlight key value propositions, and guide users seamlessly to their first successful interaction with the core features.

2. Design Specifications

2.1. Typography

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

* Rationale: Excellent readability across various screen sizes, clean, professional, and widely supported.

  • Font Weights Used: Light (300), Regular (400), Medium (500), Semi-bold (600), Bold (700)
  • Hierarchy & Sizing (Example for Mobile, scale proportionally for larger screens):

* H1 (Page Titles/Hero Text): 32px Bold - Used for main screen titles (e.g., "Welcome to [App Name]!")

* H2 (Section Headers): 24px Semi-bold - Used for sub-sections or key feature highlights.

* Body Text (Paragraphs): 16px Regular - Standard content, descriptions.

* Call-to-Action (CTA) Text: 18px Medium - Prominent buttons.

* Small Text/Captions: 12-14px Regular - Footnotes, legal text, hints.

* Input Labels: 14px Medium

* Placeholder Text: 14px Regular

2.2. Iconography

  • Style: Line-based, consistent stroke weight (e.g., 2px), rounded corners.
  • Source: Material Design Icons, Feather Icons, or custom-designed set for brand consistency.
  • Usage:

* Support visual communication (e.g., "Next" arrow, "Skip" icon, "Help" icon).

* Enhance feature explanations (e.g., icons for benefits on welcome screens).

* Accompany input fields (e.g., password visibility toggle).

  • Size: Standardized at 24x24px for interactive elements, scalable for larger illustrative purposes.

2.3. Imagery & Illustrations

  • Style: Modern, friendly, and abstract illustrations. Avoid overly complex or realistic photography unless it directly supports the brand identity.
  • Purpose:

* Hero Imagery: Engaging visuals on welcome screens to convey product essence.

* Feature Spotlights: Illustrations accompanying explanations of key features during onboarding.

* Empty States: Illustrations to make empty data screens more inviting.

  • Consistency: Maintain a consistent artistic style, color palette, and level of detail across all illustrations.

2.4. Spacing & Layout

  • Grid System: 8pt baseline grid system for all spacing, padding, and margins to ensure visual harmony and consistency.
  • Margins:

* Screen Edges: 16-24px horizontal padding on mobile, increasing for tablet/desktop.

* Section Spacing: 24-48px between major content blocks.

  • Padding: Consistent padding within components (e.g., 12-16px vertical/horizontal for buttons).
  • Alignment: Left-aligned text for readability, center-aligned for hero content or standalone components.
  • Responsiveness: All layouts are designed with a mobile-first approach, scaling gracefully to tablet and desktop breakpoints. Flexible grids and fluid typography will be employed.

2.5. Interactive Elements

  • Buttons:

* Primary CTA: Solid fill with brand primary color, white text. Rounded corners (e.g., 8px radius).

* Secondary CTA: Outline button with primary brand color border and text, transparent background.

* Tertiary/Text Link: Plain text with primary brand color.

* States: Default, Hover, Active/Pressed, Disabled (reduced opacity, desaturated color).

  • Input Fields:

* Default: Light gray border, white background.

* Focus: Primary brand color border.

* Error: Red border, optional error message below.

* Success: Green border (less common for inputs, but for validation).

  • Progress Indicators: Linear progress bars or dots for multi-step flows.

2.6. Accessibility Considerations

  • Color Contrast: All text and interactive elements meet WCAG 2.1 AA standards for contrast ratios (min 4.5:1 for small text, 3:1 for large text).
  • Font Sizes: Minimum 16px for body text to ensure readability.
  • Keyboard Navigation: All interactive elements are reachable and operable via keyboard.
  • Screen Reader Compatibility: Proper semantic HTML and ARIA attributes will be used to enhance screen reader experiences.
  • Tap Targets: Minimum 44x44px for touch targets on mobile.

3. Wireframe Descriptions (Key Screens)

This section details the structure and content of essential screens within the User Onboarding Flow.

3.1. Welcome / Introduction Screens (Carousel)

  • Purpose: Engage the user, introduce the product's core value proposition, and set expectations.
  • Elements:

* Header (Optional): App Logo (top left).

* Hero Illustration/Image: Large, engaging visual representing the screen's message (e.g., "Simplifying your workflow").

* Headline (H1): Catchy, benefit-oriented statement (e.g., "Unlock Your Potential," "Connect & Collaborate").

* Body Text (1-2 sentences): Elaboration on the headline, explaining the value proposition.

* Progress Indicator: Dot pagination (e.g., ● ○ ○) to show position in the walkthrough.

* Primary CTA: "Get Started" or "Next" (if multiple screens).

* Secondary CTA (Optional): "Skip" or "Log In" (if user already has an account).

  • Flow: Typically 2-4 screens, each highlighting a distinct benefit or feature.

3.2. Sign-up / Registration Screen

  • Purpose: Allow new users to create an account.
  • Elements:

* Header: "Create Your Account" (H1).

* Input Fields:

* Email Address

* Password (with "Show/Hide" toggle)

* Confirm Password (optional, for security)

* Name (First, Last - optional, or single "Full Name")

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

* Social Sign-up Options: "Continue with Google," "Continue with Apple," "Continue with Facebook" (prominently displayed).

* Terms & Privacy Checkbox: "By signing up, you agree to our [Terms of Service] and [Privacy Policy]." (Links to legal documents).

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

* Secondary CTA: "Already have an account? [Log In]" (Link).

* Error Messages: Clearly displayed below relevant input fields.

3.3. Profile Setup / Personalization Screen

  • Purpose: Collect essential user preferences or profile details to tailor the initial experience. (Example: "Tell us about yourself")
  • Elements:

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

* Progress Indicator: Linear progress bar or "Step X of Y."

* Input Fields / Selection Options: (Examples)

* Industry/Role: Dropdown or multi-select chips.

* Interests/Goals: Checkbox list or tag input.

* Profile Picture Upload (Optional): Avatar placeholder with upload button.

* Company Name (Optional): Text input.

Benefit Statement: Briefly explain why* this information is being collected (e.g., "This helps us tailor your feed").

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

* Secondary CTA: "Skip for now" (prominently displayed).

3.4. Core Feature Introduction / Quick Tour

  • Purpose: Briefly introduce users to 1-3 core features or actions they can take immediately.
  • Elements:

* Header: "Quick Tour" or "Get Started with [Key Feature]" (H1).

* Feature Card/Panel (Repeated for each feature):

* Icon/Illustration: Representing the feature.

* Feature Name (H2): (e.g., "Create Your First Project").

* Short Description: Explains what the feature does and its benefit.

* Mini-CTA (Optional): "Learn More" or "Go to [Feature Name]."

* Primary CTA: "Explore the App" or "Go to Dashboard."

* Secondary CTA: "Skip Tour."

3.5. Onboarding Completion / Dashboard Entry

  • Purpose: Congratulate the user and transition them smoothly into the main application.
  • Elements:

* Header: "You're All Set!" or "Welcome to [App Name]!" (H1).

* Confirmation Message: "Your account is ready. Let's get started!"

* Engaging Illustration: A celebratory or welcoming visual.

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

* Optional Secondary CTAs:

* "Invite Teammates"

* "Explore Tutorials"

* "Set Up Notifications" (if not done previously)

* Small encouragement: "We're excited to have you!"

4. Color Palettes

A consistent and thoughtfully chosen color palette enhances brand recognition and guides user attention.

4.1. Primary Palette

  • Primary Brand Color: #007AFF (Blue) - Used for primary CTAs, active states, key branding elements.
  • Secondary Brand Color: #34C759 (Green) - Used for success messages, positive affirmations, secondary actions.
  • Accent Color: #FF9500 (Orange) - Used sparingly for highlights, warnings, or notifications requiring immediate attention.

4.2. Neutral Palette (Grayscale)

  • Dark Text/Headings: #1C1C1E (Dark Charcoal) - Main body text, high contrast.
  • Medium Gray Text/Icons: #8E8E93 (Medium Gray) - Secondary text, helper text, disabled states, borders.
  • Light Gray Backgrounds: #F2F2F7 (Light Gray) - Subtle background shades, dividers.
  • White: #FFFFFF - Primary background for cards, modals, and main content areas.

4.3. Semantic Colors

  • Success: #34C759 (Green) - Confirmation messages, successful actions.
  • Error: #FF3B30 (Red) - Error messages, critical warnings.
  • Warning: #FF9500 (Orange) - Cautionary messages, non-critical warnings.
  • Information: #007AFF (Blue) - Informational tips, hints.

4.4. Color Usage Guidelines

  • Balance: Use the primary brand color strategically to highlight important actions without overwhelming the user.
  • Hierarchy: Use darker neutrals for primary text and lighter neutrals for secondary text and backgrounds.
  • Accessibility: Ensure sufficient contrast between text and background colors, and between interactive elements and their surroundings.

5. UX Recommendations

5.1. Progressive Disclosure

  • Recommendation: Avoid overwhelming users with too much information or too many steps upfront. Introduce information and options gradually as the user progresses through the flow.
  • Actionable: Break down complex registration forms into smaller, manageable steps. Allow users to skip optional profile details and complete them later.

5.2. Clear Value Proposition

  • Recommendation: Continuously reinforce the product's core value. Users should always understand why they are going through the onboarding process.
  • Actionable: Use benefit-oriented headlines and concise descriptions on welcome screens and feature introductions
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);}});}