Skip to content

UX: continue where you left off #40

Description

@miaulalala

Part of the UX backlog. Raised on 2026-06-11 as "resume in progress" navigation.

Progress is already tracked well enough to support this — lib/progress.ts stores completedSections and lastSection per module, and as of 2026-07-29 lastSection records the section the reader is currently on, so a module reopens where they left off.

What is missing is the way in. Neither CatalogClient (homepage) nor LevelCatalogClient (level page) offers a "continue" affordance: grep for resume or continue in both returns nothing. A returning reader has to remember which track, which level and which module they were on, and click through three pages to get back.

Scope

  • Surface the most recently touched module as a direct link — "Continue: PHP Beginner, Module 4".
  • Decide where it lives: the homepage is the natural spot, since that is where people land.

Notes

getProgress() returns the whole store keyed by track/level/moduleId, so "most recent" needs either a timestamp per module (the store has no updatedAt today) or a single "last visited" pointer written on section change. The store is versioned (version: 2), so adding a field is a migration-friendly change.

Done when

A returning reader can get back to where they were in one click from the homepage.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions