User Onboarding Flow
complete
George Jabbour
## Description
Implement a user onboarding checklist that guides new users through essential first steps in Nexlog.
## Problem
New users land on an empty dashboard with no guidance on what to do first.
## Onboarding Checklist (6 Steps)
- Complete your profile- Add display name and avatar
- Add your first format- Set up a game format (e.g., Modern, Standard)
- Add your first archetype- Create a deck archetype (e.g., Burn, Control)
- Create your first deck- Set up a deck to track matches
- Record your first match- Log a match result
- View your analytics- Check out your performance stats
## Why This Order?
Steps follow data dependency: Profile, then Format and Archetype (needed for decks), then Deck (needed for matches), then Match (generates analytics data), then Analytics.
## Acceptance Criteria
- New users see onboarding checklist at top of dashboard
- Checklist shows 6 steps with titles and descriptions
- Progress bar shows completion percentage
- Users can dismiss the checklist
- Dismissed checklist can be re-enabled in Settings
- Steps show Skip button if team already has that data
- Clicking a step navigates to the relevant page
- Mobile: checklist is collapsible
- Progress persists across sessions
## Complexity
Large - Backend model, signal handlers, frontend components, Settings integration
## Technical Implementation
Backend Model (OnboardingProgress):
user (OneToOne)
is_dismissed (bool)
profile_completed, profile_completed_at
format_completed, format_completed_at
archetype_completed, archetype_completed_at
deck_completed, deck_completed_at
match_completed, match_completed_at
analytics_completed, analytics_completed_at
completed_at (all steps done)
API Endpoints:
GET /api/v1/users/onboarding/me/
POST /api/v1/users/onboarding/complete-profile/
POST /api/v1/users/onboarding/complete-format/
POST /api/v1/users/onboarding/complete-archetype/
POST /api/v1/users/onboarding/complete-deck/
POST /api/v1/users/onboarding/complete-match/
POST /api/v1/users/onboarding/complete-analytics/
POST /api/v1/users/onboarding/skip-format/
POST /api/v1/users/onboarding/skip-archetype/
POST /api/v1/users/onboarding/dismiss/
POST /api/v1/users/onboarding/reset/
Signal Handlers:
User save -> check profile completion
Format create -> mark format step complete
Archetype create -> mark archetype step complete
Deck create -> mark deck step complete
Match create -> mark match step complete
Frontend Components:
OnboardingChecklist (dashboard widget)
OnboardingStepItem (individual step)
useOnboarding hook (state management)
Settings toggle for re-show
## Design Decisions (Finalized)
Placement: Top of dashboard as full-width card
Auto-complete: Steps show Skip button if team already has that data type
Re-show after dismiss: Toggle in user Settings page
Email reminders: None
Celebration on completion: Tabled for future
Achievements system: Tabled for future
Mobile: Collapsible card, tap to expand
Step click action: Navigate to relevant page
Step content: Title plus short description
Analytics completion: Auto-completes on page visit
Welcome banner: Skip, checklist is sufficient
Empty states: Standard, no onboarding-specific messaging
Timestamps: Not visible to user, stored for analytics only
George Jabbour
marked this post as
complete
George Jabbour
## Technical Implementation
Backend Model (OnboardingProgress):
- user (OneToOne)
- is_dismissed (bool)
- profile_completed, profile_completed_at
- format_completed, format_completed_at
- archetype_completed, archetype_completed_at
- deck_completed, deck_completed_at
- match_completed, match_completed_at
- analytics_completed, analytics_completed_at
- completed_at (all steps done)
API Endpoints:
- GET /api/v1/users/onboarding/me/
- POST /api/v1/users/onboarding/complete-profile/
- POST /api/v1/users/onboarding/complete-format/
- POST /api/v1/users/onboarding/complete-archetype/
- POST /api/v1/users/onboarding/complete-deck/
- POST /api/v1/users/onboarding/complete-match/
- POST /api/v1/users/onboarding/complete-analytics/
- POST /api/v1/users/onboarding/skip-format/
- POST /api/v1/users/onboarding/skip-archetype/
- POST /api/v1/users/onboarding/dismiss/
- POST /api/v1/users/onboarding/reset/
Signal Handlers:
- User save -> check profile completion
- Format create -> mark format step complete
- Archetype create -> mark archetype step complete
- Deck create -> mark deck step complete
- Match create -> mark match step complete
Frontend Components:
- OnboardingChecklist (dashboard widget)
- OnboardingStepItem (individual step)
- useOnboarding hook (state management)
- Settings toggle for re-show
George Jabbour
## Design Decisions (Finalized)
Placement:
Top of dashboard as full-width cardAuto-complete:
Steps show Skip button if team already has that data typeRe-show after dismiss:
Toggle in user Settings pageEmail reminders:
NoneCelebration on completion:
Tabled for futureAchievements system:
Tabled for futureMobile:
Collapsible card, tap to expandStep click action:
Navigate to relevant pageStep content:
Title plus short descriptionAnalytics completion:
Auto-completes on page visitWelcome banner:
Skip, checklist is sufficientEmpty states:
Standard, no onboarding-specific messagingTimestamps:
Not visible to user, stored for analytics only