diff --git a/design/stitch-onboarding/botanical_vitality/DESIGN.md b/design/stitch-onboarding/botanical_vitality/DESIGN.md new file mode 100644 index 0000000..ce7d539 --- /dev/null +++ b/design/stitch-onboarding/botanical_vitality/DESIGN.md @@ -0,0 +1,160 @@ +--- +name: Botanical Vitality +colors: + surface: '#f8fbef' + surface-dim: '#d8dbd0' + surface-bright: '#f8fbef' + surface-container-lowest: '#ffffff' + surface-container-low: '#f2f5e9' + surface-container: '#ecefe4' + surface-container-high: '#e7e9de' + surface-container-highest: '#e1e4d9' + on-surface: '#191d16' + on-surface-variant: '#42493c' + inverse-surface: '#2e322a' + inverse-on-surface: '#eff2e7' + outline: '#72796a' + outline-variant: '#c2c9b7' + surface-tint: '#366a17' + primary: '#2b5f0b' + on-primary: '#ffffff' + primary-container: '#437824' + on-primary-container: '#c1ff99' + inverse-primary: '#9bd776' + secondary: '#446741' + on-secondary: '#ffffff' + secondary-container: '#c2eaba' + on-secondary-container: '#486b45' + tertiary: '#375d00' + on-tertiary: '#ffffff' + tertiary-container: '#4d771b' + on-tertiary-container: '#cbfd91' + error: '#ba1a1a' + on-error: '#ffffff' + error-container: '#ffdad6' + on-error-container: '#93000a' + primary-fixed: '#b6f390' + primary-fixed-dim: '#9bd776' + on-primary-fixed: '#092100' + on-primary-fixed-variant: '#205100' + secondary-fixed: '#c5edbd' + secondary-fixed-dim: '#aad1a2' + on-secondary-fixed: '#012104' + on-secondary-fixed-variant: '#2d4e2b' + tertiary-fixed: '#c0f287' + tertiary-fixed-dim: '#a5d56e' + on-tertiary-fixed: '#0f2000' + on-tertiary-fixed-variant: '#2e4f00' + background: '#f8fbef' + on-background: '#191d16' + surface-variant: '#e1e4d9' +typography: + display: + fontFamily: Plus Jakarta Sans + fontSize: 34px + fontWeight: '800' + lineHeight: 42px + letterSpacing: -0.02em + headline-lg: + fontFamily: Plus Jakarta Sans + fontSize: 28px + fontWeight: '800' + lineHeight: 36px + letterSpacing: -0.01em + headline-md: + fontFamily: Plus Jakarta Sans + fontSize: 22px + fontWeight: '700' + lineHeight: 28px + body-lg: + fontFamily: Plus Jakarta Sans + fontSize: 17px + fontWeight: '500' + lineHeight: 26px + body-md: + fontFamily: Plus Jakarta Sans + fontSize: 15px + fontWeight: '400' + lineHeight: 22px + label-lg: + fontFamily: Plus Jakarta Sans + fontSize: 13px + fontWeight: '700' + lineHeight: 18px + letterSpacing: 0.05em + label-md: + fontFamily: Plus Jakarta Sans + fontSize: 12px + fontWeight: '600' + lineHeight: 16px +rounded: + sm: 0.25rem + DEFAULT: 0.5rem + md: 0.75rem + lg: 1rem + xl: 1.5rem + full: 9999px +spacing: + base: 4px + xs: 8px + sm: 12px + md: 16px + lg: 24px + xl: 32px + container-margin: 20px + gutter: 16px +--- + +## Brand & Style +The design system is centered on the concept of "Gentle Precision." It balances the organic, living nature of botany with a high-end, structured educational interface. The target audience is urban plant enthusiasts who seek a calm, focused environment to manage their indoor jungles. + +The style is **Premium Minimalist with a Tactile Twist**. It draws inspiration from modern learning apps by using high whitespace, generous hit areas, and soft, approachable geometry. While the typography is bold and authoritative, the color palette and rounded corners keep the experience friendly and accessible. The interface should feel like a premium lifestyle magazine: clean, airy, and centered entirely on high-quality botanical photography. + +## Colors +This design system utilizes a "Nature-In" palette. The foundation is a warm cream background that reduces eye strain and feels more organic than pure white. + +- **Primary Green (#437824):** Used for primary actions, success states, and key navigational highlights. +- **Deep Forest (#173817):** Reserved for secondary buttons, information chips, and high-contrast accents that require a sense of grounded authority. +- **Spring Accent (#A6D66F):** Used for progress bars, illustrative accents, and soft background fills for selected states. +- **Typography:** Headlines use a high-contrast near-black to ensure readability against the cream background, while body text uses a muted gray-green to maintain the "calm" brand pillar. + +## Typography +We use **Plus Jakarta Sans** for its exceptional readability and friendly, rounded terminals that mirror the organic curves of plant life. + +Headlines are unapologetically bold (Extra-Bold 800), creating a strong visual hierarchy and a confident editorial feel. For mobile, we prioritize vertical rhythm with generous line heights to ensure the "high whitespace" aesthetic is maintained even within text-heavy sections. Display styles utilize negative letter-spacing to keep the bold weights feeling tight and professional on iOS displays. + +## Layout & Spacing +This design system follows a fluid-width logic tailored for iOS devices, specifically optimized for the iPhone 15 aspect ratio. + +- **Grid:** A standard 4-column mobile grid with 20px side margins. +- **Vertical Rhythm:** Content blocks are separated by 24px or 32px to ensure the UI feels "airy." +- **Safe Areas:** Strict adherence to iOS safe areas for the status bar and home indicator. +- **Content Spacing:** Elements within cards use a 12px or 16px internal padding to maintain a compact but breathable internal structure. + +## Elevation & Depth +Depth is achieved through **Tonal Layering** and soft, natural shadows. We avoid harsh dropshadows. + +- **Level 0 (Background):** The warm cream (#FBFAF3) base. +- **Level 1 (Cards/Surface):** Pure white (#FFFFFF) surfaces with a very soft, diffused shadow (0px 4px 20px rgba(16, 28, 18, 0.06)). This makes cards appear as if they are resting lightly on the cream surface. +- **Level 2 (Interactive):** When pressed, buttons or cards may subtly scale down (0.98) or the shadow may tighten to simulate physical contact. +- **Glassmorphism:** Used sparingly for top navigation bars or floating action buttons, employing a 20px backdrop blur to allow the botanical photography to peek through. + +## Shapes +The shape language is defined by "Friendly Geometry." + +- **Standard Radius:** 16px for cards and containers to create a soft, approachable frame for photography. +- **Button Radius:** 14px specifically for the 56px height buttons, creating a balanced, slightly "squircle" feel. +- **Chip Radius:** Fully rounded (pill-shaped) for tags and small indicators. +- **Images:** All plant photography must feature rounded corners (minimum 12px) to prevent the "sharpness" of the images from clashing with the soft UI. + +## Components +- **Buttons:** + - *Primary:* 56px height, #437824 background, white text (Bold), 14px radius. + - *Secondary:* 56px height, #173817 background, white text (Bold), 14px radius. + - *Outline:* 56px height, 2px border (#437824), #437824 text. +- **Cards:** White background, 16px radius, soft 6% opacity shadow. Used for plant profiles, "Care Tasks," and "Reminders." +- **Chips:** Small, pill-shaped tags used for plant difficulty (e.g., "Easy Care") or water requirements. Use #173817 with white text for high contrast. +- **Progress Bars:** Thick 8px tracks using the #A6D66F accent color on a #E6EADF (muted version of cream) track. +- **Input Fields:** 56px height, white background, 14px radius, subtle 1px border in #D1D4CC. +- **Care Icons:** Use thick-stroke (2pt) icons with rounded caps to match the typography's softness. +- **Imagery:** Use high-resolution photography with natural lighting. Ensure the subject (the plant) is centered with a clean or naturally blurred background. \ No newline at end of file diff --git a/design/stitch-onboarding/greenlens_pro_paywall/code.html b/design/stitch-onboarding/greenlens_pro_paywall/code.html new file mode 100644 index 0000000..a8a7bf4 --- /dev/null +++ b/design/stitch-onboarding/greenlens_pro_paywall/code.html @@ -0,0 +1,189 @@ + + + + + +GreenLens Pro - Paywall + + + + + + + + + + +
+
+
+
+ +
+ + +
+ +
+ +
+GreenLens Pro +

Get Unlimited Access

+

Unlimited scans, health checks and your personal care plan.

+
+ +
+

GreenLens Pro

+

Unlimited AI scans, health diagnosis, 7-day rescue plans, 100 credits/month

+
+ Free for 7 days, then €39.99/year +
+
+ +
+Free Trial Enabled + + +
+ +
+ +
+ +
+
+
+Due today — 7 days free +€0.00 +
+
+ +
+
+
+Due July 13 +€39.99 +
+
+
+ +
+ +
+Cancel Anytime +
+Privacy +| +Terms +
+
+
+
+ \ No newline at end of file diff --git a/design/stitch-onboarding/greenlens_pro_paywall/screen.png b/design/stitch-onboarding/greenlens_pro_paywall/screen.png new file mode 100644 index 0000000..692b6f1 Binary files /dev/null and b/design/stitch-onboarding/greenlens_pro_paywall/screen.png differ diff --git a/design/stitch-onboarding/health_check_care_plan/code.html b/design/stitch-onboarding/health_check_care_plan/code.html new file mode 100644 index 0000000..912ebbd --- /dev/null +++ b/design/stitch-onboarding/health_check_care_plan/code.html @@ -0,0 +1,199 @@ + + + + + +GreenLens Onboarding - Health Check + + + + + + + + + + +
+ +
+
+ +
+ +
+
+ +
+
+medical_services +
+

Health Check

+
+ +
+ +
+
+warning +Overwatering detected +
+
+ +
+
+check_circle +7-day rescue plan ready +
+
+
+
+
+
+ +
+ +
+

Health Check & Care Plan

+

GreenLens spots problems early and builds a rescue plan for you.

+
+ +
+ +
+
+ +
+
+
+ + +
+
+
+ + \ No newline at end of file diff --git a/design/stitch-onboarding/health_check_care_plan/screen.png b/design/stitch-onboarding/health_check_care_plan/screen.png new file mode 100644 index 0000000..0be0c8c Binary files /dev/null and b/design/stitch-onboarding/health_check_care_plan/screen.png differ diff --git a/design/stitch-onboarding/health_check_care_plan_dark_mode/code.html b/design/stitch-onboarding/health_check_care_plan_dark_mode/code.html new file mode 100644 index 0000000..eff21c5 --- /dev/null +++ b/design/stitch-onboarding/health_check_care_plan_dark_mode/code.html @@ -0,0 +1,270 @@ + + + + + +GreenLens Onboarding - Health Check + + + + + + + + + + +
+ +
+
+ +
+ +
+
+ +
+
+medical_services +
+

Health Check

+
+ +
+ +
+
+warning +Overwatering detected +
+
+ +
+
+check_circle +7-day rescue plan ready +
+
+
+
+
+
+ +
+ +
+

Health Check & Care Plan

+

GreenLens spots problems early and builds a rescue plan for you.

+
+ +
+ +
+
+ +
+
+
+ + +
+
+
+ + \ No newline at end of file diff --git a/design/stitch-onboarding/health_check_care_plan_dark_mode/screen.png b/design/stitch-onboarding/health_check_care_plan_dark_mode/screen.png new file mode 100644 index 0000000..233c59d Binary files /dev/null and b/design/stitch-onboarding/health_check_care_plan_dark_mode/screen.png differ diff --git a/design/stitch-onboarding/login_to_greenlens/code.html b/design/stitch-onboarding/login_to_greenlens/code.html new file mode 100644 index 0000000..a72c4ff --- /dev/null +++ b/design/stitch-onboarding/login_to_greenlens/code.html @@ -0,0 +1,343 @@ + + + + + +GreenLens - Login + + + + + + + + + +
+ +
+Botanical hero image +
+
+

Welcome back!

+
+
+ +
+ + + +
+
+OR +
+
+ +
+ + +
+ + + + + +
+ +
+New here? +Create account +
+
+
+ \ No newline at end of file diff --git a/design/stitch-onboarding/login_to_greenlens/screen.png b/design/stitch-onboarding/login_to_greenlens/screen.png new file mode 100644 index 0000000..aeeec25 Binary files /dev/null and b/design/stitch-onboarding/login_to_greenlens/screen.png differ diff --git a/design/stitch-onboarding/login_to_greenlens_dark_mode/code.html b/design/stitch-onboarding/login_to_greenlens_dark_mode/code.html new file mode 100644 index 0000000..eeae14f --- /dev/null +++ b/design/stitch-onboarding/login_to_greenlens_dark_mode/code.html @@ -0,0 +1,341 @@ + + + + + +GreenLens - Login + + + + + + + + + + +
+ +
+Botanical hero image +
+
+

Welcome back!

+
+
+ +
+ + + +
+
+OR +
+
+ +
+ + +
+ + + + + +
+ +
+New here? +Create account +
+
+
+ \ No newline at end of file diff --git a/design/stitch-onboarding/login_to_greenlens_dark_mode/screen.png b/design/stitch-onboarding/login_to_greenlens_dark_mode/screen.png new file mode 100644 index 0000000..31782b4 Binary files /dev/null and b/design/stitch-onboarding/login_to_greenlens_dark_mode/screen.png differ diff --git a/design/stitch-onboarding/never_forget_watering/code.html b/design/stitch-onboarding/never_forget_watering/code.html new file mode 100644 index 0000000..9f0608e --- /dev/null +++ b/design/stitch-onboarding/never_forget_watering/code.html @@ -0,0 +1,178 @@ + + + + + +GreenLens - Onboarding + + + + + + + + + + +
+
+
+ +
+ +
+ +
+
+water_drop +
+
+

Water Monstera

+

Today

+
+
+ +
+
+eco +
+
+

Fertilize Basil

+

In 3 days

+
+
+
+
+ +
+ +
+

Never Forget Watering

+

Smart reminders and your personal plant library keep everything on track.

+
+ +
+ +
+
+
+
+
+ + +
+
+ \ No newline at end of file diff --git a/design/stitch-onboarding/never_forget_watering/screen.png b/design/stitch-onboarding/never_forget_watering/screen.png new file mode 100644 index 0000000..7905725 Binary files /dev/null and b/design/stitch-onboarding/never_forget_watering/screen.png differ diff --git a/design/stitch-onboarding/never_forget_watering_dark_mode/code.html b/design/stitch-onboarding/never_forget_watering_dark_mode/code.html new file mode 100644 index 0000000..57abc99 --- /dev/null +++ b/design/stitch-onboarding/never_forget_watering_dark_mode/code.html @@ -0,0 +1,235 @@ + + + + + +GreenLens - Onboarding + + + + + + + + + + + + +
+
+
+ +
+ +
+ +
+
+water_drop +
+
+

Water Monstera

+

Today

+
+
+ +
+
+eco +
+
+

Fertilize Basil

+

In 3 days

+
+
+
+
+ +
+ +
+

Never Forget Watering

+

Smart reminders and your personal plant library keep everything on track.

+
+ +
+ +
+
+
+
+
+ + +
+
+ \ No newline at end of file diff --git a/design/stitch-onboarding/never_forget_watering_dark_mode/screen.png b/design/stitch-onboarding/never_forget_watering_dark_mode/screen.png new file mode 100644 index 0000000..e013357 Binary files /dev/null and b/design/stitch-onboarding/never_forget_watering_dark_mode/screen.png differ diff --git a/design/stitch-onboarding/nocturnal_botanical/DESIGN.md b/design/stitch-onboarding/nocturnal_botanical/DESIGN.md new file mode 100644 index 0000000..215e4e3 --- /dev/null +++ b/design/stitch-onboarding/nocturnal_botanical/DESIGN.md @@ -0,0 +1,149 @@ +--- +name: Nocturnal Botanical +colors: + surface: '#0c160d' + surface-dim: '#0c160d' + surface-bright: '#313c31' + surface-container-lowest: '#071008' + surface-container-low: '#141e14' + surface-container: '#182218' + surface-container-high: '#222d22' + surface-container-highest: '#2d372d' + on-surface: '#dae6d6' + on-surface-variant: '#c3c9b6' + inverse-surface: '#dae6d6' + inverse-on-surface: '#283328' + outline: '#8d9382' + outline-variant: '#43493a' + surface-tint: '#a5d56e' + primary: '#c1f388' + on-primary: '#1e3700' + primary-container: '#a6d66f' + on-primary-container: '#365d00' + inverse-primary: '#41690c' + secondary: '#b7ccb5' + on-secondary: '#233424' + secondary-container: '#394b39' + on-secondary-container: '#a6bba4' + tertiary: '#dfe6d8' + on-tertiary: '#2c3229' + tertiary-container: '#c3cabc' + on-tertiary-container: '#4e554a' + error: '#ffb4ab' + on-error: '#690005' + error-container: '#93000a' + on-error-container: '#ffdad6' + primary-fixed: '#c0f287' + primary-fixed-dim: '#a5d56e' + on-primary-fixed: '#0f2000' + on-primary-fixed-variant: '#2e4f00' + secondary-fixed: '#d3e8d0' + secondary-fixed-dim: '#b7ccb5' + on-secondary-fixed: '#0f1f10' + on-secondary-fixed-variant: '#394b39' + tertiary-fixed: '#dee5d6' + tertiary-fixed-dim: '#c2c9bb' + on-tertiary-fixed: '#171d15' + on-tertiary-fixed-variant: '#42493e' + background: '#0c160d' + on-background: '#dae6d6' + surface-variant: '#2d372d' +typography: + display: + fontFamily: Epilogue + fontSize: 64px + fontWeight: '700' + lineHeight: '1.1' + letterSpacing: -0.02em + headline-lg: + fontFamily: Epilogue + fontSize: 40px + fontWeight: '600' + lineHeight: '1.2' + letterSpacing: -0.01em + headline-lg-mobile: + fontFamily: Epilogue + fontSize: 32px + fontWeight: '600' + lineHeight: '1.2' + headline-md: + fontFamily: Epilogue + fontSize: 28px + fontWeight: '500' + lineHeight: '1.3' + body-lg: + fontFamily: Manrope + fontSize: 18px + fontWeight: '400' + lineHeight: '1.6' + body-md: + fontFamily: Manrope + fontSize: 16px + fontWeight: '400' + lineHeight: '1.6' + label-sm: + fontFamily: JetBrains Mono + fontSize: 12px + fontWeight: '500' + lineHeight: '1.0' + letterSpacing: 0.05em +rounded: + sm: 0.25rem + DEFAULT: 0.5rem + md: 0.75rem + lg: 1rem + xl: 1.5rem + full: 9999px +spacing: + unit: 8px + container-max: 1280px + gutter: 24px + margin-mobile: 16px + margin-desktop: 64px +--- + +## Brand & Style +This design system captures the essence of a moonlit conservatory, blending premium health and wellness with a sophisticated, late-night aesthetic. It targets an audience that values high-end botanical science, luxury self-care, and deep vitality. + +The style is a fusion of **Minimalism** and **Glassmorphism**, utilizing deep, organic layers and sharp typography to create a sense of mystery and scientific precision. The UI should evoke a sense of calm, renewal, and premium exclusivity. Large-scale botanical photography should be treated with low-exposure and high-contrast to integrate seamlessly into the dark environment. + +## Colors +The palette is rooted in deep, anaerobic greens to establish a luxurious dark mode experience. + +- **Primary:** A vibrant, desaturated lime-green used for high-impact actions and essential highlights. +- **Surface Tiers:** Depth is created through subtle shifts in forest green values rather than pure grays, maintaining the botanical theme throughout the interface. +- **Typography:** Headlines utilize an off-white cream to ensure maximum legibility and a "glow" effect against the dark background, while body text uses a muted sage to reduce eye strain and establish hierarchy. + +## Typography +The typography system uses a bold, geometric sans-serif for headlines to convey authority and modern style. Body text is set in a refined, highly legible sans-serif to maintain a professional and calm tone. + +For technical data or botanical classifications, a monospaced font is used in all-caps to provide a "lab-certified" aesthetic. Ensure all display text has a slight negative letter-spacing to tighten the visual impact of the bold weights. + +## Layout & Spacing +The layout follows a **Fluid Grid** model with generous outer margins to simulate the feeling of an editorial magazine. + +- **Desktop:** 12-column grid with a 1280px max-width. Use 64px margins to allow the content to breathe. +- **Tablet:** 8-column grid with 32px margins. +- **Mobile:** 4-column grid with 16px margins. + +Spacing should follow a strict 8px base unit. Use larger vertical gaps (80px+) between sections to emphasize the minimalist, premium feel. + +## Elevation & Depth +Depth is achieved through **Tonal Layering** and **Backdrop Blurs**. Avoid traditional drop shadows; instead, use slightly lighter green surface colors to indicate elevation. + +When an element needs to float (such as a modal or dropdown), apply a high-density background blur (20px+) to the surface and a 1px border using a low-opacity version of the Primary color (#A6D66F at 10% opacity) to define the edge. This "Inner Glow" technique replaces shadows to maintain the clean, organic feel. + +## Shapes +The shape language is consistently **Rounded**, reflecting the soft, organic curves found in nature. + +- Standard components (buttons, inputs) use a 0.5rem (8px) radius. +- Larger containers and cards use a 1.5rem (24px) radius to create a soft, inviting frame for botanical photography. +- Avoid sharp 90-degree angles to keep the UI feeling approachable and natural. + +## Components +- **Buttons:** Primary buttons use the Primary Green background with dark charcoal text for maximum contrast. Secondary buttons use a ghost style with a 1px border. +- **Cards:** Use the Surface Container color (#1D2E1E) with no shadow. Imagery within cards should always have a subtle vignette to blend into the dark container. +- **Input Fields:** Filled style using the Surface color. The bottom border should animate to the Primary color on focus. +- **Chips/Badges:** Use a subtle tint of the primary color (15% opacity) for the background and the full-strength primary color for the text. +- **Progress Indicators:** Use thin, elegant lines. The track should be the neutral color, and the indicator should be the primary green. +- **Botanical Hero:** Full-bleed background images should have a dark gradient overlay (top to bottom) starting at 0% and ending at the background color (#0A140B) to ensure text legibility at the base of the section. \ No newline at end of file diff --git a/design/stitch-onboarding/out_of_credits/code.html b/design/stitch-onboarding/out_of_credits/code.html new file mode 100644 index 0000000..927f544 --- /dev/null +++ b/design/stitch-onboarding/out_of_credits/code.html @@ -0,0 +1,190 @@ + + + + + +Out of Credits + + + + + + + + + + +
+ +
+Blurred plant background + +
+
+ +
+9:41 +
+signal_cellular_4_bar +wifi +battery_full +
+
+ +
+ +
+ +
+
+eco +
+ +
+ 0 +
+
+ +
+

You're out of free scans

+

Your 3 free scans renew on August 1. Upgrade to Pro for unlimited scanning.

+
+ + + +
+

Or buy single credits

+
+ + + +
+
+ + +
+ +
+
+
+
+ \ No newline at end of file diff --git a/design/stitch-onboarding/out_of_credits/screen.png b/design/stitch-onboarding/out_of_credits/screen.png new file mode 100644 index 0000000..fdef936 Binary files /dev/null and b/design/stitch-onboarding/out_of_credits/screen.png differ diff --git a/design/stitch-onboarding/out_of_credits_dark_mode/code.html b/design/stitch-onboarding/out_of_credits_dark_mode/code.html new file mode 100644 index 0000000..aba019e --- /dev/null +++ b/design/stitch-onboarding/out_of_credits_dark_mode/code.html @@ -0,0 +1,245 @@ + + + + + +Out of Credits + + + + + + + + + +
+ +
+Blurred plant background + +
+
+ +
+9:41 +
+signal_cellular_4_bar +wifi +battery_full +
+
+ +
+ +
+ +
+
+eco +
+ +
+ 0 +
+
+ +
+

You're out of free scans

+

Your 3 free scans renew on August 1. Upgrade to Pro for unlimited scanning.

+
+ + + +
+

Or buy single credits

+
+ + + +
+
+ + +
+ +
+
+
+
+ \ No newline at end of file diff --git a/design/stitch-onboarding/out_of_credits_dark_mode/screen.png b/design/stitch-onboarding/out_of_credits_dark_mode/screen.png new file mode 100644 index 0000000..708d8a7 Binary files /dev/null and b/design/stitch-onboarding/out_of_credits_dark_mode/screen.png differ diff --git a/design/stitch-onboarding/personalization_question/code.html b/design/stitch-onboarding/personalization_question/code.html new file mode 100644 index 0000000..1421f83 --- /dev/null +++ b/design/stitch-onboarding/personalization_question/code.html @@ -0,0 +1,227 @@ + + + + + +GreenLens - Onboarding Plant Count + + + + + + + + + + + + +
+ +
+ +
+ +
+
+
+
+
+
+ +
+ +
+

+ How many plants do you have? +

+

+ This helps us personalize your care plan. +

+
+ +
+ + + + + + + + +
+
+ +
+
+ +
+ +
+
+ + \ No newline at end of file diff --git a/design/stitch-onboarding/personalization_question/screen.png b/design/stitch-onboarding/personalization_question/screen.png new file mode 100644 index 0000000..75bcf63 Binary files /dev/null and b/design/stitch-onboarding/personalization_question/screen.png differ diff --git a/design/stitch-onboarding/personalization_question_dark_mode/code.html b/design/stitch-onboarding/personalization_question_dark_mode/code.html new file mode 100644 index 0000000..86f8d83 --- /dev/null +++ b/design/stitch-onboarding/personalization_question_dark_mode/code.html @@ -0,0 +1,291 @@ + + + + + +GreenLens - Onboarding Plant Count + + + + + + + + + + + +
+ +
+ +
+ +
+
+
+
+
+
+ +
+ +
+

+ How many plants do you have? +

+

+ This helps us personalize your care plan. +

+
+ +
+ + + + + + + + +
+
+ +
+
+ +
+ +
+
+ + \ No newline at end of file diff --git a/design/stitch-onboarding/personalization_question_dark_mode/screen.png b/design/stitch-onboarding/personalization_question_dark_mode/screen.png new file mode 100644 index 0000000..f10c8a8 Binary files /dev/null and b/design/stitch-onboarding/personalization_question_dark_mode/screen.png differ diff --git a/design/stitch-onboarding/personalizing_your_plan/code.html b/design/stitch-onboarding/personalizing_your_plan/code.html new file mode 100644 index 0000000..da32c1e --- /dev/null +++ b/design/stitch-onboarding/personalizing_your_plan/code.html @@ -0,0 +1,213 @@ + + + + + +GreenLens - Progress + + + + + + + + + + + + + + + +
+ +
+
+

73%

+
+ + + + + + + +
+ +
+
+
+ +
+sync +Personalizing your care plan… +
+
+ +
+
+check_circle +Analyzing your answers +
+
+check_circle +Building your care plan +
+
+check_circle +Preparing your scan credits +
+
+
+radio_button_unchecked + +
+Finalizing your plan +
+
+ +
+ +
+ +
+ +
+
+ +
+Elena R. 🇺🇸 +
+star +star +star +star +star +
+
+
+

+ "GreenLens completely saved my Fiddle Leaf Fig. The daily routines feel incredibly precise and easy." +

+
+
+ +
+workspace_premium +4.8 App Store Rating +
+
+
+ \ No newline at end of file diff --git a/design/stitch-onboarding/personalizing_your_plan/screen.png b/design/stitch-onboarding/personalizing_your_plan/screen.png new file mode 100644 index 0000000..bb6ca49 Binary files /dev/null and b/design/stitch-onboarding/personalizing_your_plan/screen.png differ diff --git a/design/stitch-onboarding/personalizing_your_plan_dark_mode/code.html b/design/stitch-onboarding/personalizing_your_plan_dark_mode/code.html new file mode 100644 index 0000000..9457ed1 --- /dev/null +++ b/design/stitch-onboarding/personalizing_your_plan_dark_mode/code.html @@ -0,0 +1,275 @@ + + + + + +GreenLens - Progress + + + + + + + + + + + + + + +
+ +
+
+

73%

+
+ + + + + + + +
+ +
+
+
+ +
+sync +Personalizing your care plan… +
+
+ +
+
+check_circle +Analyzing your answers +
+
+check_circle +Building your care plan +
+
+check_circle +Preparing your scan credits +
+
+
+radio_button_unchecked + +
+Finalizing your plan +
+
+ +
+ +
+ +
+ +
+
+ +
+Elena R. 🇺🇸 +
+star +star +star +star +star +
+
+
+

+ "GreenLens completely saved my Fiddle Leaf Fig. The daily routines feel incredibly precise and easy." +

+
+
+ +
+workspace_premium +4.8 App Store Rating +
+
+
+ \ No newline at end of file diff --git a/design/stitch-onboarding/personalizing_your_plan_dark_mode/screen.png b/design/stitch-onboarding/personalizing_your_plan_dark_mode/screen.png new file mode 100644 index 0000000..257efae Binary files /dev/null and b/design/stitch-onboarding/personalizing_your_plan_dark_mode/screen.png differ diff --git a/design/stitch-onboarding/scan_any_plant/code.html b/design/stitch-onboarding/scan_any_plant/code.html new file mode 100644 index 0000000..276ee0a --- /dev/null +++ b/design/stitch-onboarding/scan_any_plant/code.html @@ -0,0 +1,155 @@ + + + + + +GreenLens - Onboarding + + + + + + + + +
+ +
+ +
+
+ +
+
+
+
+ +
+
+
+ +
+temp_preferences_eco +Monstera identified · 98% +
+
+ +
+ +
+

Scan Any Plant

+

+ Point your camera at a plant and GreenLens identifies it in seconds. +

+
+ +
+ +
+
+
+
+
+ + +
+
+
+ \ No newline at end of file diff --git a/design/stitch-onboarding/scan_any_plant/screen.png b/design/stitch-onboarding/scan_any_plant/screen.png new file mode 100644 index 0000000..f8202ce Binary files /dev/null and b/design/stitch-onboarding/scan_any_plant/screen.png differ diff --git a/design/stitch-onboarding/scan_any_plant_dark_mode/code.html b/design/stitch-onboarding/scan_any_plant_dark_mode/code.html new file mode 100644 index 0000000..8ec3b09 --- /dev/null +++ b/design/stitch-onboarding/scan_any_plant_dark_mode/code.html @@ -0,0 +1,210 @@ + + + + + +GreenLens - Onboarding + + + + + + + +
+ +
+ +
+
+ +
+
+
+
+ +
+
+
+ +
+temp_preferences_eco +Monstera identified · 98% +
+
+ +
+ +
+

Scan Any Plant

+

+ Point your camera at a plant and GreenLens identifies it in seconds. +

+
+ +
+ +
+
+
+
+
+ + +
+
+
+ \ No newline at end of file diff --git a/design/stitch-onboarding/scan_any_plant_dark_mode/screen.png b/design/stitch-onboarding/scan_any_plant_dark_mode/screen.png new file mode 100644 index 0000000..8956640 Binary files /dev/null and b/design/stitch-onboarding/scan_any_plant_dark_mode/screen.png differ diff --git a/design/stitch-onboarding/sign_up_for_greenlens/code.html b/design/stitch-onboarding/sign_up_for_greenlens/code.html new file mode 100644 index 0000000..c375624 --- /dev/null +++ b/design/stitch-onboarding/sign_up_for_greenlens/code.html @@ -0,0 +1,166 @@ + + + + + +GreenLens - Sign Up + + + + + + + + + + +
+ +
+
+ +
+ +
+

Anna,

+

Let's finish your setup!

+

+ Create an account to save your plants and 3 free scans per month. +

+
+
+ +
+ +
+
+ + + +
+
+OR +
+
+ + +
+ +
+

+ Already have an account? + Log in +

+

+ By continuing, you agree to GreenLens's Terms of Service and Privacy Policy. +

+
+
+
+ \ No newline at end of file diff --git a/design/stitch-onboarding/sign_up_for_greenlens/screen.png b/design/stitch-onboarding/sign_up_for_greenlens/screen.png new file mode 100644 index 0000000..52977d7 Binary files /dev/null and b/design/stitch-onboarding/sign_up_for_greenlens/screen.png differ diff --git a/design/stitch-onboarding/sign_up_for_greenlens_dark_mode/code.html b/design/stitch-onboarding/sign_up_for_greenlens_dark_mode/code.html new file mode 100644 index 0000000..e5cf786 --- /dev/null +++ b/design/stitch-onboarding/sign_up_for_greenlens_dark_mode/code.html @@ -0,0 +1,243 @@ + + + + + +GreenLens - Sign Up + + + + + + + + + +
+ +
+
+ +
+ +
+

Anna,

+

Let's finish your setup!

+

+ Create an account to save your plants and 3 free scans per month. +

+
+
+ +
+ +
+
+ + + +
+
+OR +
+
+ + +
+ +
+

+ Already have an account? + Log in +

+

+ By continuing, you agree to GreenLens's Terms of Service and Privacy Policy. +

+
+
+
+ \ No newline at end of file diff --git a/design/stitch-onboarding/sign_up_for_greenlens_dark_mode/screen.png b/design/stitch-onboarding/sign_up_for_greenlens_dark_mode/screen.png new file mode 100644 index 0000000..0aeea80 Binary files /dev/null and b/design/stitch-onboarding/sign_up_for_greenlens_dark_mode/screen.png differ diff --git a/design/stitch-onboarding/welcome_to_greenlens/code.html b/design/stitch-onboarding/welcome_to_greenlens/code.html new file mode 100644 index 0000000..fbdefc6 --- /dev/null +++ b/design/stitch-onboarding/welcome_to_greenlens/code.html @@ -0,0 +1,174 @@ + + + + + +GreenLens - Welcome + + + + + + + + + + +
+ +
+ +
+ +
+
+spa +GreenLens +
+
+star +4.8 +
+
+ +
+

"Finally my plants stay alive! Highly recommend."

+
+
+ +Anna M. +
+
+star +star +star +star +star +
+
+
+
+ +
+ +
+

Welcome to GreenLens!

+

Identify, understand and care for your plants — effortlessly.

+ +
+ + +
+ +

+ By continuing you agree to our Privacy Policy and Terms +

+
+ \ No newline at end of file diff --git a/design/stitch-onboarding/welcome_to_greenlens/screen.png b/design/stitch-onboarding/welcome_to_greenlens/screen.png new file mode 100644 index 0000000..9acaa4b Binary files /dev/null and b/design/stitch-onboarding/welcome_to_greenlens/screen.png differ diff --git a/design/stitch-onboarding/welcome_to_greenlens_dark_mode/code.html b/design/stitch-onboarding/welcome_to_greenlens_dark_mode/code.html new file mode 100644 index 0000000..159b2b6 --- /dev/null +++ b/design/stitch-onboarding/welcome_to_greenlens_dark_mode/code.html @@ -0,0 +1,244 @@ + + + + + +GreenLens - Welcome + + + + + + + + + +
+ +
+ +
+ +
+
+spa +GreenLens +
+
+star +4.8 +
+
+ +
+

"Finally my plants stay alive! Highly recommend."

+
+
+ +Anna M. +
+
+star +star +star +star +star +
+
+
+
+ +
+ +
+

Welcome to GreenLens!

+

Identify, understand and care for your plants — effortlessly.

+ +
+ + +
+ +

+ By continuing you agree to our Privacy Policy and Terms +

+
+ \ No newline at end of file diff --git a/design/stitch-onboarding/welcome_to_greenlens_dark_mode/screen.png b/design/stitch-onboarding/welcome_to_greenlens_dark_mode/screen.png new file mode 100644 index 0000000..9dcbdf4 Binary files /dev/null and b/design/stitch-onboarding/welcome_to_greenlens_dark_mode/screen.png differ diff --git a/docs/superpowers/specs/2026-07-06-onboarding-soft-paywall-free-tier-design.md b/docs/superpowers/specs/2026-07-06-onboarding-soft-paywall-free-tier-design.md new file mode 100644 index 0000000..aeb7adf --- /dev/null +++ b/docs/superpowers/specs/2026-07-06-onboarding-soft-paywall-free-tier-design.md @@ -0,0 +1,71 @@ +# Onboarding Redesign, Soft Paywall & Free Tier — Design Spec + +**Date:** 2026-07-06 +**Status:** Approved design basis (Stitch export approved by Timo) +**Design reference:** `design/stitch-onboarding/` (Stitch export: 10 screens, light + dark variants, `code.html` per screen, design tokens in `botanical_vitality/DESIGN.md` (light) and `nocturnal_botanical/DESIGN.md` (dark)) + +## Goal + +Replicate the Learna-style onboarding → soft paywall → sign-up flow, remove the hard paywall (client and server), and introduce a free tier with 3 monthly scan credits. Sign-up moves to the *end* of onboarding, after the paywall (pattern credited with +52% sales in the reference video). + +## 1. New user flow + +``` +Welcome (social proof) +→ Benefit slides (3) +→ Personalization questions (existing: source, goal, experience, customize) +→ "Personalizing your care plan…" progress screen +→ Paywall (dismissible ✕) +→ Sign-up (Continue with Apple / Email) +→ App (tabs), free plan with 3 credits/month +``` + +- The guest **demo scan stays** available from the welcome screen (existing `isGuest` server handling unchanged). +- Existing users: "Log in" link on the welcome screen → login. +- Paywall ✕ during onboarding → continues to sign-up. Paywall ✕ in-app → simply closes. + +## 2. Screens + +Each screen follows the Stitch mockup in `design/stitch-onboarding//screen.png` (+ `_dark_mode` variant). `code.html` is the source of truth for spacing/sizes. Design tokens (colors, Plus Jakarta Sans-style extra-bold typography) come from the two `DESIGN.md` files, mapped into the existing `constants/Colors.ts` light/dark system. + +| Screen | Stitch reference | Implementation | Imagery | +|---|---|---|---| +| Welcome | `welcome_to_greenlens` | Redesign `app/onboarding.tsx`: hero photo, rating badge "4.8", testimonial card, "Let's Go" CTA, "Log in" link, legal footer. Keep demo-scan entry. | Bright plant-room photo (new or existing asset) | +| Benefit slide 1 "Scan Any Plant" | `scan_any_plant` | New screen(s), progress dots, Continue | Reuse existing render style (`assets/onboarding_*_mockup.png` language); scan-frame + "Monstera identified · 98%" chip built natively in RN, NOT baked into the photo | +| Benefit slide 2 "Health Check & Care Plan" | `health_check_care_plan` | New screen | Photo + native overlay card (Overwatering detected / 7-day rescue plan ready) | +| Benefit slide 3 "Never Forget Watering" | `never_forget_watering` | New screen | Photo + native reminder chips | +| Personalization questions | `personalization_question` | Restyle existing `app/onboarding/{source,goal,experience,customize}.tsx`: top progress bar + back arrow, white option cards radius 16, selected = green border + tint, Continue button | Emoji/icon per option | +| Personalizing progress | `personalizing_your_plan` | New screen: animated % + progress ring, sequential checkmarks ("Analyzing your answers", "Building your care plan", "Preparing your scan credits", "Finalizing your plan"), testimonial card (filled stars), rating badge. Auto-advances to paywall. | Small round plant photo in ring | +| Paywall | `greenlens_pro_paywall` | Redesign paywall mode of `app/profile/billing.tsx`: ✕ top-left, Restore top-right, "GreenLens Pro / Get Unlimited Access", plan card, **Free Trial toggle** (ON = yearly with 7-day trial → "Due today €0 / Due €39.99"; OFF = monthly, no trial), CTA "Try Free"/"Start Now", Cancel Anytime, Privacy/Terms. Dates dynamic. Credit top-ups remain reachable. | `assets/paywall_scan_background.png` as header | +| Sign-up | `sign_up_for_greenlens` | Restyle `app/auth/signup.tsx`: dark botanical hero with ", Let's finish your setup!" (name from onboarding answers if given, else generic), "Continue with Apple" (exists), OR divider, "Continue with Email" expanding to email/password fields (two-step), "Already have an account? Log in", legal. | `assets/welcome_botanical_hero.png` (replaces Stitch photo with baked-in fake form) | +| Login | `login_to_greenlens` | Restyle `app/auth/login.tsx`: "Welcome back!", Apple button, email/password, Forgot password?, "New here? Create account". | Clean botanical photo (existing assets) | +| Out of credits | `out_of_credits` | New bottom sheet over scanner: leaf icon with "0" badge, "You're out of free scans", renewal date, "See Pro Plans" → paywall, top-up chips (+30/+100/+250, BEST badge on 250), "Maybe later". | — | + +Known mockup fixes (agreed): replace AI-artifact photos (garbled phone UI on scan slide, fake forms baked into sign-up/login backgrounds), filled stars on testimonials, dynamic dates. + +## 3. Free tier (backend, `server/lib/billing.js` + `server/index.js`) + +- `FREE_MONTHLY_CREDITS: 0 → 3`. Existing monthly-allowance reset logic already covers free accounts; verify reset works for plan `free`. +- **Remove server hard paywall:** drop `ensureActiveProEntitlement` from scan and health-check endpoints (`server/index.js`). Credit consumption becomes the only gate; 0 credits → existing 402 `INSUFFICIENT_CREDITS` error. +- **Same scan model for free and pro** (`getScanModel` returns the pro model for both plans). Cost accepted (~cents/user/month at 3 scans). +- **Low-confidence AI review pass stays pro-only** (unchanged) so a free scan never burns 2 credits, and Pro keeps a quality edge. +- Trial handling unchanged (yearly plan carries 7-day trial, 30 credits during trial). + +## 4. Soft paywall (app) + +- `app/_layout.tsx`: remove the `!hasActiveEntitlement → Redirect /profile/billing` block (line ~169). Signed-in users always reach the tabs regardless of plan. +- Scanner: on 402 `INSUFFICIENT_CREDITS` → open the out-of-credits bottom sheet (dismissible) instead of blocking. +- Free users see a credits badge (e.g. "3 scans left") on Home/Scanner so the limit is visible before it bites. +- Existing PostHog events (`trial_started`, purchase events) stay; add events for paywall_shown / paywall_dismissed / onboarding step views. + +## 5. Out of scope + +- Instagram-story auto-advance on benefit slides (manual Continue first) +- Win-back / cancellation flows +- Android Google Sign-In (RevenueCat Android key still placeholder) +- Chat-style onboarding rebuild + +## 6. Open questions + +- Exact free-credit renewal display date source (billing summary already exposes renewal info for pro; confirm shape for free accounts). +- Whether existing signed-in free users (previously hard-walled) need a one-time "you now have 3 free scans" toast. Nice-to-have.