Logo

Command Palette

Search for a command to run...

Case Study

Calm Harbor Onboarding

Mobile onboarding experience with animated water waves, floating bubbles, and smooth entrance animations for a meditation app.

  • React
  • TypeScript
  • Framer Motion
  • Tailwind CSS
  • Figma
  • Mobile Design
  • Animation
  • Next.js
Calm Harbor mobile onboarding screen with mascot and water animations

Timeline

Design prototype

Focus

UI/UX Design • Motion Design • Mobile Development

Status

In Development

Live Component Demo

Welcome to Calm Harbor

Find your inner peace with guided meditation, breathing exercises, and mindfulness practices

Overview

The Calm Harbor Onboarding experience is a mobile-first design prototype that welcomes users to a meditation and mindfulness app. Built with Figma and translated into production-ready React code, this component demonstrates how thoughtful animations and serene visual design can create an immediately calming first impression.

The design features animated water waves, floating bubbles, and smooth entrance animations that set the tone for the entire app experience. Every element—from the gentle color palette to the mascot character—was crafted to convey tranquility and ease of use.

Design Philosophy

The onboarding screen needed to accomplish three key goals within seconds of the app opening:

  • Communicate the app's purpose: Users should immediately understand this is a meditation and mindfulness platform
  • Evoke calm emotions: The visual design should reduce anxiety and create a sense of peace
  • Guide users to action: Clear CTAs should make it effortless to begin the journey or sign in

To achieve this, I designed a layered composition with animated elements that create depth and movement without overwhelming the user. The color palette draws from ocean and sky tones—cyan, sky blue, and soft whites—which research shows promote feelings of calm and clarity.

Visual Elements

Gradient Background

The background uses a vertical gradient from sky blue to cyan, mimicking the transition from sky to water. This creates a natural horizon line that grounds the composition and provides context for the floating elements.

Decorative Clouds

Soft, blurred white circles positioned at the top of the screen suggest clouds drifting across the sky. These static elements provide visual interest without competing for attention with animated components.

Floating Bubbles

Four transparent bubbles with subtle borders float at different vertical positions, each with its own looping animation. The staggered timing creates a natural, organic feel that mimics actual bubbles rising through water.

Animated Water Waves

Two overlapping SVG wave paths at the bottom of the screen animate continuously with different speeds and opacities. This layered approach creates realistic water movement that anchors the composition and reinforces the aquatic theme.

Character Mascot

A friendly, approachable mascot character serves as the face of the brand. The character design is simple and non-threatening, with a gentle expression that welcomes users into the experience. The mascot enters with a subtle scale and fade animation, drawing attention without startling.

Animation Strategy

All animations were designed with performance and emotional impact in mind:

  • Entrance Animations: Content fades in with subtle upward movement, creating a sense of elements gently rising into view
  • Continuous Animations: Bubbles and waves loop infinitely with easeInOut timing, providing constant subtle movement without being distracting
  • Staggered Delays: Elements appear in sequence (mascot → headline → description → CTAs) to guide the eye and prevent overwhelming the user with too much simultaneous motion
  • Performance: All animations use CSS transforms (translate, scale) and opacity for GPU acceleration, ensuring smooth 60fps performance even on lower-end mobile devices

Technical Implementation

The component was initially designed in Figma and exported as React code, then adapted to work within this Next.js portfolio:

  • Framer Motion: Handles all animation orchestration with declarative syntax and automatic cleanup
  • Next.js Image: Optimized image loading for the mascot character with proper sizing
  • Tailwind CSS: Utility-first styling for rapid prototyping and consistent spacing
  • iPhone Mockup: CSS borders and border-radius create a realistic device frame, complete with notch detail
  • SVG Paths: Animated wave patterns use morph animations between three different path states for realistic water movement
  • shadcn/ui Button: Consistent button components matching the portfolio's design system

Mobile-First Considerations

Since this onboarding screen would appear on mobile devices, every design decision prioritized the mobile experience:

  • Large, readable typography with strong color contrast against the background
  • Generous touch targets (48px minimum) for all interactive elements
  • Vertical layout optimized for thumb-friendly one-handed use
  • Animation performance tested on mid-range Android and iOS devices
  • Minimal text to reduce cognitive load and respect screen real estate
  • Pagination dots indicate this is part of a multi-screen onboarding flow

User Experience Flow

The onboarding screen presents two clear paths forward:

Primary CTA: "Get Started"

The prominent sky-blue button invites new users to begin their journey. This action would likely lead to account creation or a brief questionnaire to personalize the meditation experience.

Secondary CTA: "I already have an account"

A ghost button provides a less prominent but still accessible path for returning users to sign in without distraction from the primary conversion goal.

Design Outcomes

This prototype demonstrates several key competencies in modern UI/UX design:

  • Translating Figma designs into production-ready React components
  • Creating emotional impact through thoughtful animation and visual design
  • Building accessible, performant mobile experiences with complex animations
  • Maintaining design system consistency (buttons, typography, spacing)
  • Balancing aesthetic appeal with usability and conversion optimization

The onboarding screen successfully creates an immediate emotional connection with users, communicating the app's value proposition through visual design before they even read the copy. The gentle animations and calming color palette work together to reduce anxiety and invite exploration—exactly what a meditation app should achieve in its first moments.

Potential Enhancements

Future iterations of this onboarding flow could include:

  • Multi-screen Flow: Implement swipeable pages showing different app features
  • Sound Design: Add gentle water sounds or ambient music to enhance the calming effect
  • Reduced Motion Support: Respect prefers-reduced-motion for accessibility
  • Interactive Elements: Allow users to tap bubbles or interact with the mascot
  • A/B Testing: Test different mascot designs, copy variations, and CTA button colors
  • Progress Indication: Show users how many screens remain in the onboarding sequence