← All projects

Intermediate project · Week 4

Professional Task Manager

Create, edit, filter, search, prioritize, and persist accessible tasks.

The problem

Every real product has a task/list-like feature — this project is the DOM, events, and storage lessons applied to the single most common UI pattern in software.

User stories

  • As a user, I want to add, edit, and delete tasks, so I can manage my work.
  • As a user, I want to filter tasks by completed/active, so I can focus on what's left.
  • As a user, I want my tasks saved between visits, so I don't lose my list on refresh.

Planning checklist

  • Define the task data shape (id, title, done, priority, createdAt)
  • List every state the list can be in (empty, filtered-empty, populated)
  • Decide the persistence strategy (when to save, what key to use)

Suggested data structure

const task = { id: "t1", title: "Write report", done: false, priority: "high", createdAt: Date.now() };

UI requirements

  • An accessible form to add tasks with keyboard support
  • A list with edit, complete-toggle, and delete controls per task
  • Filter controls for status and a search input

Build milestones

Check off each milestone as you complete it — saved to this device.

…

0%

Testing checklist

  • Adding a task updates both the list and localStorage
  • Filtering shows the correct subset for each filter state
  • Deleting a task removes exactly one task, not more

Completion criteria

…

0%

Progressive support

RequirementsPlanningStarterHintsReference Solution
Bonus features
  • Add drag-to-reorder
  • Add due dates with overdue highlighting
  • Add undo for accidental deletes