Skip to content

Commit 975ee1f

Browse files
Improve onboarding flow with dynamic steps and referral code integration
- Streamline onboarding to 3 steps (4 with referral code) - Remove complex dev setup choice flow - Add dedicated referral code redemption step - Fix progress bar positioning to stay centered - Remove unused referral-client component - Update referrals page to use OnboardingFlow directly - Add terminal-yellow and other brand colors to design system - Improve user experience with cleaner, focused flow 🤖 Generated with Codebuff Co-Authored-By: Codebuff <noreply@codebuff.com>
1 parent ccf0b6d commit 975ee1f

File tree

8 files changed

+272
-415
lines changed

8 files changed

+272
-415
lines changed

web/src/app/onboard/page.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,10 @@ const Onboard = async ({ searchParams = {} }: PageProps) => {
7373
})
7474

7575
return (
76-
<OnboardClientWrapper hasReferralCode={hasReferralInUrl}>
76+
<OnboardClientWrapper
77+
hasReferralCode={hasReferralInUrl}
78+
referralCode={referralCode}
79+
>
7780
{successCard}
7881
</OnboardClientWrapper>
7982
)
@@ -239,7 +242,10 @@ const Onboard = async ({ searchParams = {} }: PageProps) => {
239242
})
240243

241244
return (
242-
<OnboardClientWrapper hasReferralCode={isReferralUser}>
245+
<OnboardClientWrapper
246+
hasReferralCode={isReferralUser}
247+
referralCode={referralCode}
248+
>
243249
{successCard}
244250
</OnboardClientWrapper>
245251
)

web/src/app/referrals/[code]/page.tsx

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import type { ReferralCodeResponse } from '../../api/referrals/[code]/route'
99
import { authOptions } from '../../api/auth/[...nextauth]/auth-options'
1010
import CardWithBeams from '@/components/card-with-beams'
1111
import { Button } from '@/components/ui/button'
12-
import ReferralClient from './referral-client'
12+
import { OnboardClientWrapper } from '@/components/onboard/onboard-client-wrapper'
1313

1414
export const generateMetadata = async ({
1515
params,
@@ -106,14 +106,18 @@ export default async function ReferralPage({
106106
const referrerDisplayName =
107107
referralData.referrerName || referrerName || 'Someone'
108108

109-
// Pass data to the client component for rendering
109+
// Show onboarding flow for valid referrals
110110
return (
111-
<ReferralClient
112-
code={code}
113-
session={session}
114-
referralData={referralData}
115-
referrerDisplayName={referrerDisplayName}
116-
referrerName={referrerName}
117-
/>
111+
<OnboardClientWrapper hasReferralCode={true} referralCode={code}>
112+
<CardWithBeams
113+
title="Welcome to Codebuff!"
114+
description="You can close this window and continue with the installation."
115+
content={
116+
<div className="text-center text-muted-foreground">
117+
Your referral code is ready to use in the CLI!
118+
</div>
119+
}
120+
/>
121+
</OnboardClientWrapper>
118122
)
119123
}

web/src/app/referrals/[code]/referral-client.tsx

Lines changed: 0 additions & 80 deletions
This file was deleted.

web/src/components/onboard/onboard-client-wrapper.tsx

Lines changed: 35 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,58 +1,68 @@
11
'use client'
22

33
import { useEffect, useState } from 'react'
4+
import { useRouter } from 'next/navigation'
45

56
import { OnboardingFlow } from './onboarding-flow'
67

78
interface OnboardClientWrapperProps {
89
hasReferralCode: boolean
10+
referralCode?: string
911
children: React.ReactNode
1012
}
1113

12-
export function OnboardClientWrapper({ hasReferralCode, children }: OnboardClientWrapperProps) {
14+
export function OnboardClientWrapper({
15+
hasReferralCode,
16+
referralCode,
17+
children,
18+
}: OnboardClientWrapperProps) {
1319
const [hasStoredReferral, setHasStoredReferral] = useState(false)
14-
const [onboardingComplete, setOnboardingComplete] = useState(false)
15-
16-
console.log('🟡 OnboardClientWrapper: Component rendered', {
17-
hasReferralCode,
18-
hasStoredReferral,
19-
onboardingComplete
20-
})
20+
const [storedReferralCode, setStoredReferralCode] = useState<string | null>(
21+
null
22+
)
2123

2224
useEffect(() => {
2325
// Always check localStorage for any stored referral codes from previous visits
24-
const storedReferralCode = localStorage.getItem('referral_code')
25-
console.log('🟡 OnboardClientWrapper: Checking localStorage', {
26-
storedReferralCode
27-
})
28-
if (storedReferralCode) {
26+
const storedCode = localStorage.getItem('referral_code')
27+
if (storedCode) {
2928
setHasStoredReferral(true)
29+
setStoredReferralCode(storedCode)
3030
// Clean up localStorage after checking
3131
localStorage.removeItem('referral_code')
32-
console.log('🟡 OnboardClientWrapper: Found and removed stored referral code:', storedReferralCode)
3332
}
34-
}, [])
33+
34+
// Also check URL parameters if no referralCode prop was passed
35+
if (!referralCode && typeof window !== 'undefined') {
36+
const urlParams = new URLSearchParams(window.location.search)
37+
const urlReferralCode = urlParams.get('referral_code')
38+
if (urlReferralCode && !storedCode) {
39+
setStoredReferralCode(urlReferralCode)
40+
setHasStoredReferral(true)
41+
}
42+
}
43+
}, [referralCode])
44+
45+
const router = useRouter()
3546

3647
const handleOnboardingComplete = () => {
37-
setOnboardingComplete(true)
38-
// Optional: Clear persisted progress from localStorage
48+
// Clear persisted progress from localStorage
3949
localStorage.removeItem('codebuff_onboarding_progress')
50+
// Navigate to onboard page
51+
router.replace('/onboard')
4052
}
4153

4254
// Always show onboarding flow if user has a referral code (from URL or localStorage)
4355
const shouldShowOnboarding = hasReferralCode || hasStoredReferral
56+
const actualReferralCode = referralCode || storedReferralCode
4457

4558
if (shouldShowOnboarding) {
4659
return (
4760
<div className="space-y-8">
48-
{!onboardingComplete ? (
49-
<OnboardingFlow
50-
hasReferralCode={shouldShowOnboarding}
51-
onComplete={handleOnboardingComplete}
52-
/>
53-
) : (
54-
children
55-
)}
61+
<OnboardingFlow
62+
hasReferralCode={shouldShowOnboarding}
63+
referralCode={actualReferralCode || undefined}
64+
onComplete={handleOnboardingComplete}
65+
/>
5666
</div>
5767
)
5868
}

0 commit comments

Comments
 (0)