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

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

Project: User Onboarding Flow

Deliverable: Detailed Design Specifications, Wireframe Descriptions, Color Palettes, and UX Recommendations


1. Introduction & Project Overview

This document outlines the comprehensive research and design requirements for the "User Onboarding Flow." The primary objective is to create an intuitive, engaging, and effective onboarding experience that swiftly guides new users to understand the core value proposition, set up their initial preferences, and successfully complete their first key action within the product. A well-designed onboarding flow is crucial for improving user retention, reducing time-to-value, and enhancing overall user satisfaction.

This deliverable serves as the foundational design brief, providing detailed specifications and recommendations for subsequent design and development phases.

2. Detailed Design Specifications

The onboarding flow will be designed to be flexible, allowing users to progress at their own pace while ensuring critical information is conveyed.

2.1. Functional Requirements

  • Welcome & Value Proposition Screens:

* Clearly articulate 2-3 key benefits of the product.

* Visually engaging content (illustrations, animations, or concise video).

* Call-to-Action (CTA) to "Get Started" or "Sign Up/Log In."

  • Account Creation/Login (if applicable):

* Streamlined registration form (email, password, name).

* Social login options (Google, Apple, Facebook, etc.).

* "Forgot Password" and "Terms & Privacy Policy" links.

* Option to skip if user is already authenticated (e.g., via SSO).

  • Personalization/Preferences Setup:

* Allow users to select interests, roles, goals, or industry relevant to the product.

* Use clear, concise questions and intuitive input methods (e.g., checkboxes, dropdowns, sliders).

* This step should be optional but encouraged for a tailored experience.

  • Core Feature Introduction/Tutorial:

* Provide a concise, interactive walkthrough of essential functionalities.

* This can be an overlay tour with tooltips, a short introductory video, or a series of guided steps.

* Highlight the most critical features that deliver immediate value.

* Option to "Skip Tour" or "End Tour" at any point.

  • First Task Prompt / Empty State:

* Guide the user to complete their first meaningful action within the application.

* Present a clear CTA and explain the benefit of completing the task.

* Provide examples or templates to simplify the initial interaction.

  • Progress Indicators:

* Visual representation of the user's progress through the onboarding flow (e.g., "Step X of Y," progress bar).

  • Skip & Exit Options:

* Provide clear "Skip" options for non-essential steps to prevent user frustration.

* Allow users to exit the onboarding flow at any point and return to it later (e.g., via a "Help" section or "Settings").

  • Help & Support Access:

* Easily accessible links to FAQs, support documentation, or contact support during the onboarding process.

2.2. Non-Functional Requirements

  • Performance: The onboarding flow must load quickly and operate smoothly on all supported devices and browsers.
  • Responsiveness: Fully responsive design, optimized for desktop, tablet, and mobile devices.
  • Accessibility: Adherence to WCAG 2.1 AA standards (e.g., sufficient color contrast, keyboard navigation, screen reader compatibility).
  • Analytics Integration: Implement tracking for onboarding completion rates, drop-off points, and user engagement metrics at each step.
  • Localization Ready: Design and content structure should support future localization into multiple languages.
  • Error Handling: Clear and helpful error messages for form submissions or connectivity issues.

3. Wireframe Descriptions (Conceptual Layouts)

The following descriptions outline the key screens and their essential elements within the onboarding flow. These are conceptual layouts to guide the visual design process.

3.1. Screen 1: Welcome & Value Proposition

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

* Header: Product Logo.

* Main Visual: Large, high-quality illustration or animation showcasing the product's primary benefit.

* Headline: Catchy, benefit-oriented statement (e.g., "Unlock Your Productivity," "Simplify Your Workflow").

* Sub-headline/Body: 2-3 concise bullet points or a short paragraph elaborating on core value propositions.

* Primary CTA: Prominent button (e.g., "Get Started," "Sign Up Free").

* Secondary CTA (Optional): Link for existing users (e.g., "Log In").

* Navigation: "Skip" link (if applicable).

* Progress Indicator: "Step 1 of X."

3.2. Screen 2: Account Creation / Login

  • Layout: Centered form or two-column layout (left: brand messaging/visual, right: form).
  • Elements:

* Header: Product Logo, "Create Your Account" or "Welcome Back."

* Form Fields (Sign Up): Email, Password (with "Show Password" toggle), Confirm Password, Name (optional).

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

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

* Secondary Links: "Already have an account? Log In," "Forgot Password."

* Legal Links: Checkbox for "I agree to the Terms & Privacy Policy" with links.

* Navigation: "Back" button, "Skip" link (if user can proceed without account).

* Progress Indicator: "Step 2 of X."

3.3. Screen 3: Personalization / Preferences

  • Layout: Clean, card-based or list-based selection.
  • Elements:

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

* Description: Short explanation of why this step is beneficial.

* Input Options:

* Checkboxes/Radio Buttons: For selecting interests, roles (e.g., "Student," "Professional," "Hobbyist").

* Dropdowns: For industry, experience level.

* Sliders: For frequency of use or preference intensity.

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

* Secondary CTA: "Skip for now."

* Navigation: "Back" button.

* Progress Indicator: "Step 3 of X."

3.4. Screen 4: Core Feature Introduction (Interactive Tour Example)

  • Layout: Overlay on top of a simulated or actual application screen.
  • Elements:

* Overlay Mask: Dims the background content slightly.

* Highlight Box/Tooltip: Points to a specific UI element (e.g., a button, a navigation item).

* Tooltip Content: Short, descriptive text explaining the feature's function and benefit.

* Navigation: "Next" button, "Back" button, "Skip Tour" button.

* Progress Indicator: Small dots or numbers indicating tour steps (e.g., "1/5").

(Alternative: A modal dialog with a short video and "Play Video," "Next," "Skip" buttons).*

3.5. Screen 5: First Task Prompt / Empty State

  • Layout: Main content area with a clear central focus.
  • Elements:

* Header: "Ready to Get Started?" or "Your First Step."

* Illustration/Icon: Relevant to the first task.

* Instructional Text: Clear, concise guidance on what to do.

* Benefit Statement: Reiterate the value of completing this task.

* Primary CTA: Prominent button to initiate the first task (e.g., "Create Your First Project," "Add Your First Item").

* Secondary CTA (Optional): "Explore Dashboard," "Learn More."

* Contextual Help: Small info icon or link to a relevant help article.

* Navigation: "Back" button (if applicable to return to previous onboarding step).

4. Color Palettes

The chosen color palette should evoke the desired brand personality while ensuring readability and accessibility. Two options are provided, with the recommendation to align with an existing brand guide if available.

4.1. Option 1: Professional & Trustworthy

This palette emphasizes reliability, professionalism, and clarity, suitable for business, finance, or productivity tools.

  • Primary Brand Color:

* Deep Blue: #0047AB (RGB: 0, 71, 171) - Represents trust, stability, and intelligence.

  • Secondary Brand Color:

* Teal: #008080 (RGB: 0, 128, 128) - Adds a touch of modernity, growth, and calm.

  • Accent Color (CTA/Highlight):

* Vibrant Orange: #FFA500 (RGB: 255, 165, 0) - For calls to action, important alerts, and interactive elements; provides energy and visibility.

  • Neutral Colors:

* Backgrounds: #F8F8FF (Ghost White) - Clean, light background.

* Text (Dark): #333333 (Dark Gray) - Main body text for readability.

* Text (Light): #666666 (Medium Gray) - Secondary text, descriptions.

* Borders/Dividers: #D3D3D3 (Light Gray) - Subtle separation.

* White: #FFFFFF - For cards, modals, and contrast.

4.2. Option 2: Modern & Energetic

This palette is more vibrant and dynamic, suitable for creative, lifestyle, or consumer-facing applications.

  • Primary Brand Color:

* Royal Purple: #6A0DAD (RGB: 106, 13, 173) - Conveys creativity, innovation, and sophistication.

  • Secondary Brand Color:

* Aqua/Cyan: #00FFFF (RGB: 0, 255, 255) - Adds a fresh, tech-forward, and energetic feel.

  • Accent Color (CTA/Highlight):

* Bright Pink/Magenta: #FF007F (RGB: 255, 0, 127) - For calls to action and interactive elements; lively and engaging.

  • Neutral Colors:

* Backgrounds: #F0F8FF (Alice Blue) - Soft, inviting background.

* Text (Dark): #2C3E50 (Dark Navy) - Main body text.

* Text (Light): #7F8C8D (Asbestos) - Secondary text, descriptions.

* Borders/Dividers: #BDC3C7 (Silver) - Gentle separation.

* White: #FFFFFF - For cards, modals, and contrast.

General Color Considerations:

  • Accessibility: Ensure sufficient contrast ratios for text and interactive elements (WCAG AA standard at minimum).
  • Brand Alignment: The chosen palette should complement existing brand guidelines and evoke the desired emotional response.
  • Micro-interactions: Consider how colors will be used for hover states, active states, and focus indicators.

5. UX Recommendations

These recommendations focus on optimizing the user experience to maximize engagement and successful onboarding completion.

  • Clarity & Simplicity:

* Concise Copy: Use short, benefit-driven headlines and body text. Avoid jargon.

* Single Focus: Each screen should have one primary objective and call to action.

* Visual Hierarchy: Use typography, spacing, and color to guide the user's eye to important elements.

  • Progress & Feedback:

* Clear Progress Indicators: Visually show users where they are in the flow (e.g., "Step 2 of 4").

* Instant Feedback:

gemini Output

This document outlines the comprehensive design specifications for the "User Onboarding Flow," serving as a detailed deliverable for the customer. It provides a blueprint for the visual and interactive elements, ensuring a smooth, engaging, and effective introduction to the product.


1. Introduction & Onboarding Philosophy

The user onboarding flow is a critical first impression, designed to swiftly introduce new users to the core value proposition of our product, guide them through essential setup, and empower them to achieve their initial "aha!" moment. Our philosophy centers on:

  • Clarity & Simplicity: Each step should be easy to understand with minimal cognitive load.
  • Value-Driven: Highlight benefits early and often, connecting features to user needs.
  • Engagement: Utilize visual appeal, clear calls to action, and optional personalization to create an inviting experience.
  • Efficiency: Minimize friction and unnecessary steps, allowing users to reach the core functionality quickly.
  • Guidance & Support: Offer clear instructions and a sense of progression.

This document details the design specifications, wireframe descriptions, color palettes, and UX recommendations to achieve these goals.

2. Detailed Design Specifications & Wireframe Descriptions

The onboarding flow is broken down into a series of screens, each with a specific purpose.

2.1 Screen 1: Welcome & Brand Introduction

  • Purpose: Greet the user, introduce the brand, and set an inviting tone.
  • Key Elements:

* Brand Logo: Prominently displayed at the top.

* Catchy Headline: A warm welcome message (e.g., "Welcome to [App Name]!").

* Brief Tagline/Description: A concise statement about the app's core purpose or benefit.

* Illustrative Graphic/Animation: A high-quality, brand-aligned visual that conveys the app's essence or a sense of excitement.

* Primary Call-to-Action (CTA): "Get Started" or "Continue" button.

* Optional Secondary CTA: "Sign In" (for returning users, less prominent).

  • Wireframe Description:

* Top: Centered Brand Logo.

* Middle (Dominant): Large, engaging illustration/animation. Below it, a large, friendly headline, followed by a short, descriptive tagline.

* Bottom: Centered, prominent "Get Started" button (primary color). Below it, a smaller, text-based "Sign In" link.

* Navigation: No back button. Progress indicator (e.g., dots) may start here or on the next screen.

2.2 Screens 2-4: Value Proposition & Feature Showcase (Onboarding Tour)

  • Purpose: Highlight 2-3 key benefits or features, demonstrating how the app solves user problems or enhances their experience. Each screen focuses on one core message.
  • Key Elements (per screen):

* Feature-Specific Headline: Clear, benefit-oriented title (e.g., "Organize Your Projects Effortlessly").

* Descriptive Text: 1-2 sentences explaining the feature's value.

* High-Quality Visual: Screenshot, custom illustration, or short animation demonstrating the feature in action.

* Progress Indicator: Visual representation of current position within the tour (e.g., o ● o).

* Navigation: "Skip" button (top right), "Next" button (bottom right), "Back" button (bottom left, after the first tour screen).

  • Wireframe Description (repeated for 2-3 screens):

* Top Right: "Skip" text link.

* Middle (Dominant): Feature illustration/screenshot. Below it, a bold headline, followed by a concise body text.

* Bottom: Centered progress indicator (e.g., 3-4 dots). "Back" button (left, if applicable). Prominent "Next" button (right, primary color).

2.3 Screen 5: Sign-Up / Log-In

  • Purpose: Allow new users to create an account or existing users to log in.
  • Key Elements:

* Clear Headline: "Create Your Account" or "Sign In."

* Sign-Up Options:

* Email/Password fields (with "Show Password" toggle).

* Social login options (e.g., "Continue with Google," "Continue with Apple").

* "Forgot Password?" link: For returning users.

* Terms of Service/Privacy Policy Link: Important for trust and legal compliance.

* Primary CTA: "Sign Up" or "Log In" button.

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

  • Wireframe Description:

* Top: Headline.

* Middle: Social login buttons (prominent). Separator text "OR." Email and password input fields. "Forgot Password?" link. Checkbox for "Remember Me" (optional).

* Bottom: "Sign Up" / "Log In" button (primary color). Below it, a small text link to switch between sign-up/log-in forms. Below that, links to Terms of Service and Privacy Policy.

* Navigation: Back button (top left). No progress indicator on this screen.

2.4 Screen 6: Personalization / Profile Setup

  • Purpose: Gather initial preferences or essential profile information to tailor the user experience. This makes the app immediately relevant.
  • Key Elements:

* Headline: "Tell us about yourself" or "What are your interests?"

Descriptive Text: Explain why* this information is needed (e.g., "This helps us personalize your feed").

* Input Fields/Selection Options:

* Name (optional).

* Role/Profession (dropdown/text input).

* Interests/Categories (multi-select tags/buttons).

* Goals (checkboxes).

* Avatar upload (optional).

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

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

  • Wireframe Description:

* Top: Headline and brief explanatory text.

* Middle: Dynamic content area with various input types (e.g., large buttons for categories, text fields for names, dropdowns).

* Bottom: Progress indicator. "Skip for now" link (left). Prominent "Continue" button (right, primary color).

* Navigation: Back button (top left).

2.5 Screen 7: Permissions Request (Example: Notifications)

  • Purpose: Request necessary device permissions at a relevant and opportune moment, explaining the benefit.
  • Key Elements:

* Headline: "Don't miss a beat!" or "Stay Updated."

Benefit-Oriented Explanation: Clearly state why* the permission is needed and how it benefits the user (e.g., "Enable notifications to receive important updates and reminders.").

* Illustrative Icon/Graphic: Related to the permission (e.g., a bell icon for notifications).

* Primary CTA: "Enable Notifications" or "Allow Access."

* Secondary CTA: "No Thanks" or "Maybe Later."

  • Wireframe Description:

* Top: Icon/Graphic related to the permission.

* Middle: Headline and benefit-driven descriptive text.

* Bottom: Prominent "Enable Notifications" button (primary color). Below it, a smaller "No Thanks" text link.

* Navigation: Back button (top left). Progress indicator continues.

2.6 Screen 8: Quick Start / First Steps / Dashboard Preview

  • Purpose: Offer a brief orientation to the main dashboard or suggest immediate actions to get started. Bridges the gap between onboarding and core usage.
  • Key Elements:

* Headline: "You're all set!" or "Let's get started."

* Brief Instructions/Tips: 1-3 actionable tips (e.g., "Create your first project," "Explore the feed," "Invite teammates").

* Visual Hint: A simplified screenshot of the main dashboard with key areas highlighted, or icons representing suggested actions.

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

  • Wireframe Description:

* Top: Completion message/headline.

* Middle: A simplified visual of the main app screen, possibly with overlayed callouts pointing to key areas, or a list of "first steps" with associated icons.

* Bottom: Prominent "Go to Dashboard" button (primary color).

* Navigation: No back button. This is the final step before the main app.

3. Color Palette

A cohesive color palette ensures brand consistency and enhances usability.

  • Primary Color: #007BFF (Deep Blue)

* Usage: Dominant brand color, primary CTAs, active states, key headings. Conveys trustworthiness, professionalism, and reliability.

  • Secondary Color: #6C757D (Slate Gray)

* Usage: Sub-headings, secondary buttons, borders, inactive states. Provides balance and sophistication.

  • Accent Color: #28A745 (Vibrant Green)

* Usage: Success messages, positive indicators, highlight elements that require immediate attention but are not primary CTAs (e.g., "New Feature" tags). Conveys growth, freshness, and success.

  • Neutral Colors:

* Background: #F8F9FA (Light Gray) - Clean, unobtrusive base.

* Text (Primary): #212529 (Dark Charcoal) - High contrast for readability.

* Text (Secondary/Muted): #6C757D (Same as Secondary) - For less critical information, captions.

* White: #FFFFFF - For card backgrounds, button text on primary buttons, clear content separation.

  • Error/Warning Color: #DC3545 (Bright Red) - For error messages, destructive actions.

4. Typography

Clear and consistent typography is crucial for readability and brand identity.

  • Font Family:

* Headings (H1, H2, H3): Montserrat (or similar modern sans-serif like Lato/Open Sans) - Bold, clean, and impactful.

* Body Text & UI Elements: Lato (or similar highly readable sans-serif like Open Sans/Roboto) - Excellent for legibility across various screen sizes.

  • Font Sizes (Example, adaptable for mobile/desktop):

* H1 (Screen Titles): 28-32px, Bold

* H2 (Feature Headlines): 22-26px, Semi-Bold

* Body Text: 16-18px, Regular

* Secondary/Caption Text: 12-14px, Regular

* Button Text: 16px, Semi-Bold

  • Line Height: 1.5x for body text for optimal readability.
  • Text Alignment: Predominantly left-aligned for body text, centered for main screen headlines and CTAs.

5. Iconography

Icons provide visual cues and enhance comprehension.

  • Style: Outline or Duotone. Maintain a consistent style throughout the application. Avoid mixing filled and outline icons.
  • Library: Utilize a well-known icon library (e.g., Font Awesome, Material Icons, Feather Icons) or custom-designed sets for brand uniqueness.
  • Size & Scale: Ensure icons are clearly visible and scale appropriately across different devices.
  • Color: Use neutral colors (e.g., Slate Gray) for general icons, primary color for active/interactive icons, and accent color for emphasis where appropriate.

6. UX Recommendations

Beyond the visual design, these recommendations enhance the overall user experience of the onboarding flow.

  • Progress Indicator: Implement a clear visual progress indicator (e.g., dots, a progress bar) at the bottom of the screen to show users where they are in the flow and how much is left. This reduces uncertainty and improves completion rates.
  • Skip Option (Strategic): Provide a "Skip for now" option on non-critical screens (e.g., personalization, permissions) but hide or remove it on essential screens (e.g., Sign-Up/Log-In).
  • Clear Calls to Action (CTAs): Ensure primary CTAs are prominent, use action-oriented language, and are easily tappable/clickable. Differentiate primary from secondary actions visually.
  • Microinteractions & Animations:

* Button States: Provide visual feedback for button presses (hover, active states).

* Transitions: Smooth, subtle transitions between onboarding screens to make the flow feel connected and modern.

* Illustrations: Consider subtle animations for the welcome screen or feature showcase visuals to increase engagement.

  • Error Handling (Sign-Up/Log-In): Provide immediate, clear, and actionable feedback for form validation errors (e.g., "Invalid email format," "Password must be at least 8 characters").

*

gemini Output

This document outlines the finalized design assets for the User Onboarding Flow, providing comprehensive specifications and recommendations to ensure an intuitive, engaging, and effective initial user experience. This output is designed to be directly actionable for your development and design teams.


Finalized Design Assets: User Onboarding Flow

Overall Design Philosophy

The User Onboarding Flow is designed to be welcoming, efficient, and value-driven. Our philosophy centers on progressive disclosure, guiding users through essential steps without overwhelming them, while clearly articulating the product's benefits at each stage. The visual design emphasizes clarity, modern aesthetics, and brand consistency, aiming to build trust and familiarity from the very first interaction.


I. User Onboarding Flow: Key Screens & Wireframe Descriptions

The onboarding flow is structured into distinct, logical steps, each serving a specific purpose in familiarizing the user with the product.

A. Welcome Screen

  • Purpose: Greet the user, establish initial brand connection, and briefly introduce the product's core value proposition.
  • Layout:

* Header: Prominent brand logo or product name.

* Hero Section: Large, inviting headline (e.g., "Welcome to [Product Name]!"), followed by a concise, benefit-oriented tagline (e.g., "Simplify your workflow, amplify your results.").

* Visual Element: A high-quality, engaging hero illustration or image that visually represents the product's primary benefit or a positive user outcome.

* Call-to-Action (CTA): A primary button (e.g., "Get Started," "Discover More") clearly positioned at the bottom, guiding the user to the next step.

* Secondary Option: A subtle "Sign In" or "Skip Tour" link for returning users or those who prefer to explore independently.

  • Content Focus: Emotional connection, high-level value.

B. Value Proposition / Feature Showcase (2-3 Screens)

  • Purpose: Highlight 2-3 key features or benefits of the product, explaining what it does and how it helps the user, without overwhelming them with detail.
  • Layout (Per Screen):

* Header: Product name/logo (smaller than welcome screen).

* Title: A clear, benefit-driven title for the feature (e.g., "Streamline Your Tasks," "Collaborate Seamlessly").

* Description: A short, impactful paragraph (1-2 sentences) explaining the feature's benefit.

* Visual Element: A unique, custom icon or small illustration for each feature, visually reinforcing its purpose.

* Navigation: "Next" button to proceed, with a "Skip" option available. A subtle progress indicator (e.g., "1 of 3 dots") below the content.

  • Content Focus: Specific benefits, clear feature explanation.

C. Personalization / Profile Setup (Optional, 1-2 Screens)

  • Purpose: Gather minimal, essential user preferences to tailor the initial experience, making it more relevant. This step should be optional or extremely brief.
  • Layout:

* Header: Clear question or prompt (e.g., "Tell us about your goals," "What brings you here?").

* Input Fields: Limited, user-friendly input fields. Examples:

* Dropdowns for industry/role.

* Checkboxes for areas of interest.

* Short text input for name (if not already provided).

* Call-to-Action: "Continue" or "Save & Continue" button.

* Option to Skip: A prominent "Skip for now" link.

* Progress Indicator: Clearly showing progress within this sub-flow if multiple screens are involved.

  • Content Focus: User relevance, data collection for personalization.

D. First Action / Guided Tour (Optional)

  • Purpose: Guide the user to perform their first meaningful action within the product, demonstrating immediate value and reducing the "blank slate" effect.
  • Layout (Contextual Overlays):

* This screen might be a series of contextual tooltips or a simplified "first task" prompt appearing directly on a stripped-down version of the dashboard or a key feature screen.

* Highlight: A subtle overlay that highlights a specific UI element (e.g., "Click here to create your first project").

* Instruction: A concise tooltip box with clear instructions and a "Got it!" or "Next" button.

* Progress: A small progress indicator for the mini-tour (e.g., "1/3").

  • Content Focus: Immediate engagement, practical application.

E. Completion / Dashboard Introduction

  • Purpose: Congratulate the user on completing onboarding, provide a sense of accomplishment, and smoothly transition them to the main product interface.
  • Layout:

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

* Message: An encouraging message reinforcing the product's value and readiness to help.

* Visual Element: A celebratory illustration or subtle animation (e.g., confetti).

* Primary CTA: A prominent button to navigate to the main dashboard (e.g., "Go to Dashboard," "Start Using [Product Name]").

* Secondary Links: Optional links to "Explore Features," "Watch a Quick Tutorial," or "Visit Help Center" for users who want more guidance.

  • Content Focus: Celebration, clear path to usage.

II. Detailed Design Specifications

These specifications ensure visual consistency, brand alignment, and a polished user interface throughout the onboarding experience.

A. Typography

  • Primary Font (Headings & Key Information): Montserrat

* Purpose: Modern, geometric, and highly readable, conveying professionalism and clarity.

* Usage: H1 (Welcome screen), H2 (Feature titles), primary CTAs.

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

* Sizes:

* H1: 48px (Desktop), 36px (Mobile)

* H2: 32px (Desktop), 24px (Mobile)

* H3 (Sub-headings): 20px

  • Secondary Font (Body Text & Supporting Information): Open Sans

* Purpose: Highly legible, friendly, and versatile, ideal for longer paragraphs and detailed descriptions.

* Usage: Feature descriptions, form labels, small print.

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

* Sizes:

* Body Text: 16px (Desktop), 14px (Mobile)

* Caption/Small Text: 12px

B. Color Palette

A balanced color palette designed for professionalism, readability, and a modern aesthetic.

  • Primary Brand Color: #4A90E2 (Vibrant Blue)

* Usage: Main Call-to-Action (CTA) buttons, active progress indicators, key interactive elements, brand accents. Conveys trust and reliability.

  • Secondary Brand Color: #50E3C2 (Teal)

* Usage: Secondary CTAs, subtle highlights, success messages, complementary accents. Adds a fresh, modern touch.

  • **Accent Color
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);}});}