Skip to content

Issue #18: Student Dashboard & Profile (Post-Registration/Login) #261

@ManuelJG1999

Description

@ManuelJG1999

Issue #18: Student Dashboard & Profile (Post-Registration/Login)

Task Description

Build the student Dashboard and Profile experience that users access after they have already registered and logged in. Authentication (login/register) is out of scope and considered complete.

From the Dashboard, learners can:

  • Access course areas, lessons, and assessments.
  • See key metrics (points, streak, completion).
  • Continue where they left off.
  • Navigate to Profile to manage account and learning preferences.

Deliverables

  • Routes: /dashboard and /profile.
  • Global header (logged-in state): avatar + user menu (Profile, Dashboard, Logout).
  • Dashboard:
    • Course areas grid with progress, lock states, and CTA (“Continue”/“Start”).
    • KPI cards: total points, streak, overall completion % (and optional badges).
    • “Continue where you left off” deep link to next lesson.
    • Recent activity list (lessons/assessments) with result and timestamp.
    • Recommendations (areas to practice based on recent performance).
  • Profile:
    • Editable fields: display name, avatar, current level, learning goal, timezone.
    • Pronunciation preferences (default voice URI, auto-match voice by gender).
    • Save/Cancel with validation and confirmation UI.

Functional Requirements

  • Navigation
    • Authenticated users can open /dashboard and /profile.
    • Header avatar menu provides quick links to Profile, Dashboard, and Logout.
  • Dashboard
    • “Continue where you left off” opens the next unlocked lesson across course areas.
    • Areas grid displays progress bar, % complete, and lock/unlock status (respect lesson gating).
    • KPIs read from existing progress/points state.
    • Recent activity shows the latest 5 items (lesson/assessment) with date and score/result.
    • Recommendations surface the weakest area (e.g., lowest average score in recent attempts).
  • Profile
    • Edit and persist name, goal, level, avatar, timezone (MVP).
    • Manage pronunciation preferences for learning pages.
    • Validate required fields; show errors and success toasts/messages.
  • States
    • Empty state (no progress yet) with helpful copy and CTA “Explore our courses”.
    • Loading/skeleton states for KPIs and lists.

Routes & Navigation

  • /dashboard — main student home.
  • /profile — profile and preferences.
  • Header behavior in logged-in state:
    • Avatar dropdown: Profile, Dashboard, Logout.
    • If not logged in (out of scope here).

Dependencies & Integrations

(Progress Tracking): display progress bars and completion.
(Locked Lesson Progression): reflect lock/unlock status and enforce progression.
(Points & Rewards): show points and reward updates.
(There's an analytics section,

Data Model (MVP, Local Persistence)

Persist via localStorage for MVP; plan migration to a database in a future issue.

  • User
    • id, email, name, avatarUrl?
    • level (Beginner/A1/A2)
    • goal (Travel/Work/Study/Conversation)
    • timezone?
    • preferences: { defaultVoiceUri?: string; autoVoiceByGender?: boolean }
  • Progress
    • Per area/lesson: { areaId, lessonId, completed: boolean, score?: number, lastAttemptAt: ISO }
    • Area summary: { areaId, percentComplete, lastLessonId? }
  • Gamification
    • { pointsTotal: number, streakCount: number, lastActiveAt: ISO, badges?: string[] }
  • Activity
    • [ { id, type: 'lesson'|'assessment', areaId, title, score?: number, date: ISO } ]

Metrics to Display

  • Total points, streak, overall completion %.
  • Per-area progress (% and next lesson).
  • Recent activity (last 5 items).
  • Recommendations based on weakest recent performance.

Accessibility

  • Semantic layout: main landmarks, headings.
  • Forms with labels, error descriptions, and proper focus management.
  • Keyboard navigation for cards and menu.
  • Contrast and visible focus states.
  • Avatar images with alt text; icons marked aria-hidden when appropriate.

UI/UX Notes

  • Consistent AURORA card styles and spacing.
  • Skeleton loaders for KPIs and lists.
  • Clear CTAs: “Continue” on active area, “Start” on new areas.
  • Tooltip/helper text for lock explanations.

Acceptance Criteria

  • Users can open /dashboard and see points, streak, and per-area progress.
  • “Continue where you left off” navigates to the correct next unlocked lesson.
  • Recent activity and recommendations render from stored data.
  • Users can edit Profile fields and pronunciation preferences on /profile and see changes persisted after reload.
  • Empty state appears for new users with a CTA to explore courses.

Definition of Done

  • /dashboard implemented with KPIs, areas grid, recent activity, recommendations.
  • /profile implemented with editable fields and pronunciation preferences.
  • Local persistence wired; updates reflect immediately without reload.
  • Lock logic respected in “Continue” links (Issue #22).
  • Metrics correctly reflect Issue Enhancement-Starkla-update-style #19 and points from Issue feat: create the details for the learning module #23.
  • Accessible forms and navigation verified (labels, focus, keyboard).
  • Loading/skeleton and empty states implemented.
  • QA plan executed successfully across mobile/desktop.

Image reference:

Image

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions