A comprehensive profile creation page that follows the Welcome/ProfileSetup design pattern with a 3-step process:
- Profile Information
- Wallet Connection
- Success Confirmation
-
Fields:
- First Name (required)
- Last Name (required)
- Email (required, validated)
- Phone Number (optional)
- Password (required, min 8 chars)
- Confirm Password (required, must match)
- Role (passed via URL parameter)
-
Validation:
- Zod schema validation
- Real-time error messages
- Password strength check
- Email format validation
-
Design:
- Card-based layout
- Icon indicators
- Role badge display
- Gradient background
-
Wallet Providers:
- MetaMask
- WalletConnect
- Coinbase Wallet
- Any Wagmi-supported connector
-
Features:
- Connect wallet button for each provider
- Connected wallet display
- Disconnect option
- Skip option (can connect later)
-
Design:
- Wallet icon
- Provider buttons
- Connection status indicator
- Skip option
-
Information Displayed:
- Success message
- Email verification reminder
- Wallet connection status
- Next steps based on role
-
Actions:
- "Go to Login" button
- Redirects to login page
1. Welcome → Get Started
2. Profile Setup → Continue as Requester
3. Create Profile (?role=REQUESTER)
- Fill profile form
- Connect wallet (optional)
- Success confirmation
4. Login → Dashboard
5. Start creating tasks
1. Welcome → Get Started
2. Profile Setup → Register as Tasker
3. Create Profile (?role=TASKER)
- Fill profile form
- Connect wallet (required for payments)
- Success confirmation
4. Login → Dashboard
5. Complete KYC verification
6. Start accepting tasks
Matches the Welcome and ProfileSetup pages:
- Background: Gradient overlay
- Logo: Primary color with Package icon
- Progress Indicator: 3-step dots
- Cards: Backdrop blur with border
- Icons: Colored backgrounds
- Buttons: Large, prominent CTAs
- Footer: Centered tagline
- React Hook Form for form state
- Zod for validation
- Real-time error display
- Wagmi hooks (useAccount, useConnect, useDisconnect)
- Multi-provider support
- Connection state management
- Registration API call
- Error handling with toast notifications
- Success state management
- Step progression (profile → wallet → success)
- Form data persistence
- Wallet connection state
POST /api/auth/register
{
email: string,
password: string,
firstName: string,
lastName: string,
phoneNumber?: string,
role: 'REQUESTER' | 'TASKER'
}{
message: string,
userId: string
}?role=REQUESTER- For requester registration?role=TASKER- For tasker registration
- From:
/profile-setup - To:
/create-profile?role=REQUESTERor/create-profile?role=TASKER - Success:
/login - Back:
/profile-setup
- Button
- Input
- Label
- Card (CardContent, CardDescription, CardHeader, CardTitle)
- Package (logo)
- User (profile step)
- Mail (email field)
- Phone (phone field)
- Wallet (wallet step)
- Loader2 (loading state)
- CheckCircle (success step)
- useNavigate (routing)
- useSearchParams (URL parameters)
- useForm (form handling)
- useAccount, useConnect, useDisconnect (wallet)
- useToast (notifications)
- Must be valid email format
- Required field
- Minimum 8 characters
- Must match confirmation
- Required field
- Minimum 2 characters
- Required fields
- Optional field
- No specific format validation (flexible for international)
- Displayed below each field
- Red text color
- Clear error messages
- Toast notification
- Descriptive error message
- Retry option (stay on form)
- Toast notification
- Option to try different provider
- Skip option available
- Success message
- Email verification reminder
- Next steps guidance
- Green indicator
- Address display (truncated)
- Disconnect option
- Max width: 896px (max-w-2xl)
- Centered layout
- Touch-friendly buttons
- Stacked form fields
- Responsive grid for name fields
- Proper label associations
- Error announcements
- Keyboard navigation
- Focus management
- ARIA attributes
- Form validation works
- Email format validation
- Password match validation
- Required fields enforced
- API registration succeeds
- Email verification sent
- Wallet connection works (MetaMask)
- Wallet connection works (WalletConnect)
- Wallet connection works (Coinbase)
- Skip wallet option works
- Success state displays
- Navigation to login works
- Back button works
- Progress indicator updates
- Toast notifications appear
- Mobile responsive
- Error handling works
-
Profile Picture Upload
- Add image upload field
- Preview before upload
- Store in cloud storage
-
Social Login
- Google OAuth
- GitHub OAuth
- Twitter OAuth
-
Password Strength Indicator
- Visual strength meter
- Requirements checklist
- Suggestions for strong password
-
Email Verification in Flow
- Verify email before wallet step
- Send OTP code
- Verify code input
-
KYC Integration
- For taskers, add KYC step
- Document upload
- Face verification
No additional environment variables needed beyond existing:
VITE_API_URL- Backend API URLVITE_WALLETCONNECT_PROJECT_ID- WalletConnect project ID
🚚 DropIt - Streamlined profile creation with wallet integration!