Bỏ qua để đến nội dung

DOL English Navigation Overview

DomainsDOL EnglishUX1.603 words8 min read
activebyDOL Product Design
  • One-stop entry cho toàn bộ logic navigation của learner-facing DOL English.
  • Giảm việc phải đọc rải rác nhiều file mới ghép được shell model, default entry, ownership, và page boundary.
  • Giữ tài liệu đủ ngắn để con người đọc nhanh, nhưng đủ cấu trúc để AI parse mà không phải tự tổng hợp lại từ đầu.
  • Đây là feature master của navigation.
  • Nếu chỉ đọc 1 file để hiểu toàn bộ logic navigate hiện tại, đọc file này trước.
  • File này tóm tắt current truth; các file bên dưới chỉ mở khi cần đi sâu vào rule hoặc owner surface cụ thể.
  • Với navigation, canonical UX logic nằm ở lane UX Design; Product Discovery chỉ đóng vai trò supporting trail cho thay đổi và quyết định.
  • Repo hiện có lợi thế mạnh ở traceability:
    • EVT giữ lịch sử thảo luận,
    • DEC giữ quyết định atomic,
    • Product Discovery giữ supporting trail khi cần,
    • UX contractspage docs giữ owner detail.
  • Nhưng với các feature cross-surface như navigation, logic bị phân mảnh nếu không có một file master đủ ngắn để đọc one-stop.
  • Hướng tối ưu là:
    • không xóa cấu trúc cũ,
    • thêm đúng 1 file master để gom lại đường đọc.
  • Logged-in learner navigation của DOL English.
  • Bao gồm:
    • shell model,
    • default entry,
    • context switching,
    • destination boundary,
    • canonical object ownership.
  • Không đi sâu vào pixel spec, screen inventory, hoặc full copywriting từng page.
  • Đây là một logged-in repeat-use learning product, không phải marketing site.
  • User quay lại chủ yếu để:
    • học tiếp thứ đang dở,
    • làm bài được giao,
    • luyện kỹ năng theo program,
    • ôn vocab,
    • xem tiến độ và điểm yếu.
  • Vì object chồng nhau (program, course, assignment, attempt, vocab, analytics), navigation phải làm workflow controller, không thể chỉ là menu/sitemap.
  • Logged-in shell hiện được đọc theo:
    • Program Workspace
    • Deep Object
    • Selective Cross-program Aggregate Views chỉ như scoped exception.
  • Program = context.
  • Task = primary navigation.
  • Cross-program không được giả làm deep execution context hay default shell.
  • Mỗi deep object phải có 1 canonical home.
  • Một lần chỉ ở 1 program thật.
  • Đây là baseline mặc định của logged-in shell.
  • Desktop baseline destinations:
    • Hôm nay
    • Khóa học
    • Luyện tập
    • Từ vựng
    • Tiến độ
  • Local tabs chỉ sống bên trong từng destination.
  • Không phải shell mode mặc định.
  • Chỉ xuất hiện trong các view thật sự cần gom dữ liệu chéo chương trình.
  • Use case đã khóa ban đầu:
    • Lịch học / calendar và các operational views tương đương.
  • Rule dùng:
    • mặc định vẫn đọc theo program hiện tại,
    • chỉ mở All Programs như một scope toggle khi có giá trị thật,
    • không biến All Programs thành peer workspace context hay pseudo-program.
  • Assignment, attempt, result, vocab item, AI feedback… luôn thuộc về một owner section thật.
  • Các surface khác chỉ được surfacing như shortcut/queue/summary.
  • Ecosystem switcher = domain/brand context.
  • Program switcher = global workspace context.
  • Primary nav = task destination.
  • Local nav = subview trong destination.
  • Utility nav = search, notification, help, account, quick access.
  • Filter / search / sort = chỉ đổi cách nhìn dữ liệu trong cùng view.
  • All Programs chỉ hợp lệ như scope toggle của một vài aggregate view đủ điều kiện; không hợp lệ như peer program context hay standalone shell page.
  • returnTo hợp lệ -> quay lại exact context.
  • Không có returnTo:
    • last meaningful program workspace -> resume vào đó,
    • nếu deep target cũ không còn hợp lệ -> fallback về program root của cùng program,
    • nếu không có restore context nhưng chỉ có 1 valid active program -> vào thẳng workspace của program đó,
    • nếu chưa resolve được program hợp lệ -> onboarding / program choice / discovery.
  • Rule này cố ý ưu tiên resume single-program reality thay vì dựng một overview mặc định cho edge case multi-program.
  • Program switcher là state thật, không phải filter local.
  • Nếu user mở object thuộc program khác từ notification/search/deep-link:
    • app được phép đổi program context,
    • nhưng phải báo rõ bằng URL/state và visible context cue.
  • Nếu user đang ở critical flow như timed attempt hoặc unsaved high-cost action:
    • không được switch program một cách silent,
    • phải chặn hoặc confirm rõ hậu quả.
DestinationMain questionOwnsNot here
Hôm nayBây giờ tôi nên làm gì?continue, due queue, next class, next actionanalytics/history sâu
Khóa họcTôi đang theo khóa nào, unit nào, deadline và feedback gì?lesson, assignment, material, teacher feedbackdeep self-study analytics
Luyện tậpTôi sẽ luyện/bắt đầu attempt nào?drills, mock tests, AI rooms, attempts, resultscourse scheduling
Từ vựngHôm nay tôi cần ôn từ nào, và đã nhớ tới đâu?saved words, review queue, source-tagged vocabbroad practice analytics
Tiến độTôi đang tiến triển thế nào và yếu ở đâu?analytics, history, weak areas, trend, goal comparisondue queue / execution orchestration
Object familyCanonical homeAllowed surfaced elsewhere
Course schedule / lesson / assignment / material / teacher feedbackKhóa họcHôm nay, eligible aggregate views, summary cards
Drill / mock test / AI room / attempt / resultLuyện tậpHôm nay, Tiến độ
Saved word / review queue / source-tagged vocab itemTừ vựngHôm nay, Tiến độ
Analytics / history / weak areas / trend / goal-gap reasoningTiến độprogram summaries
  • Không stack nhiều row ngang mà mỗi row lại là một logic khác.
  • Không biến dashboard cards thành second home.
  • Không dùng label system-centric làm primary destination nếu có wording learner-centric rõ hơn.
  • Nếu Hôm nayTiến độ không giữ được boundary, ưu tiên merge hoặc đổi label, không giữ song song mờ nghĩa.
  • Offline / live online / self-pacedcourse modality; chúng thuộc filter/grouping bên trong Khóa học, không thuộc top-level nav.
  • Luyện tập không được item hóa toàn bộ tool thành primary destinations; inventory tool phải được tổ chức bằng skill / use case / local nav.
  • Không dựng Global Today hoặc All Programs dashboard chỉ để phục vụ số ít user multi-program nếu cùng bài toán đã được giải tốt hơn bằng resume last program + scoped aggregate views.
  • Ưu tiên validate navigation bằng:
    • card sorting để kiểm tra user nhóm nội dung thế nào,
    • tree testing để kiểm tra user có tìm đúng nơi không.
  • Task test baseline:
    • tìm lớp IELTS 6.5,
    • vào mock test SAT,
    • xem bài Writing cần sửa,
    • ôn lại từ TOEIC đã quên.
  • first_click_success
  • time_to_resume_study
  • wrong_context_entry_rate
  • backtracking_after_entry
  • assigned_task_completion_rate
  • Exact list của aggregate-eligible views ngoài lịch học / calendar.
  • Từ vựng có thật sự xứng đáng slot top-level ở mọi cohort hay không.
  • Mobile/compressed shell nên nén theo trục nào.
  • Data model đã đủ sạch để mọi surfaced object luôn mang program + source + canonical_section hay chưa.
  • Cơ chế lưu/khôi phục last meaningful program workspace đã đủ an toàn cho expired deep routes hay chưa.
  • Với các feature lớn, ưu tiên:
    • 1 feature = 1 feature-master file
    • chỉ tách rule/contracts khi thật sự cần
    • page docs giữ owner detail
    • Product Discovery giữ traceability trail khi thật sự cần
  • Feature-master không thay thế supporting docs; nó chỉ là file owner chính và đường đọc chuẩn.
  • 2026-03-27: Bỏ Global Today làm default shell sau login, chuyển baseline sang resume last meaningful program workspace, và hạ All Programs về scoped aggregate toggle cho một vài view đủ điều kiện.
  • 2026-03-26: Bổ sung utility nav, khóa course modality ở lớp filter/grouping thay vì top-level nav, chốt practice inventory phải tổ chức theo skill / use case, và thêm validation methods (card sorting, tree testing).
  • 2026-03-25: Khởi tạo feature-master cho navigation để gom shell logic, destination boundary, canonical ownership, default entry, context switching, và reading path vào một file one-stop.