## 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