Design a Todo List Object Model
Problem Description
Design an object-oriented model for a todo list application.
Core Functionality
The application must support the following features for a user:
- Create multiple todo lists or projects.
- Create new tasks.
- Update existing task fields.
- Mark tasks as complete or incomplete.
- Delete tasks.
- Set due dates for tasks.
- Assign priorities to tasks.
- Add tags to tasks.
- Filter and sort tasks by status, due date, priority, and tag.
Deliverables
Your design should describe:
- The main classes and their responsibilities.
- The public APIs you would expose.
- How the design would remain extensible for future features such as reminders, recurring tasks, and collaboration.
AI interview prep
Core dilemma
Balancing a flexible, extensible object model for anticipated future features (reminders, recurring tasks, collaboration) with a simple, performant design for core CRUD and querying operations. This involves carefully modeling relationships and behaviors without over-engineering for the initial scope.
3 tradeoffs and 3 stress tests locked
Interview prep
Unlock the interviewer X-Ray rubric, tradeoff matrix, stress tests, clarifying questions, and key concepts.
Design a Todo List Object Model
Problem Description
Design an object-oriented model for a todo list application.
Core Functionality
The application must support the following features for a user:
- Create multiple todo lists or projects.
- Create new tasks.
- Update existing task fields.
- Mark tasks as complete or incomplete.
- Delete tasks.
- Set due dates for tasks.
- Assign priorities to tasks.
- Add tags to tasks.
- Filter and sort tasks by status, due date, priority, and tag.
Deliverables
Your design should describe:
- The main classes and their responsibilities.
- The public APIs you would expose.
- How the design would remain extensible for future features such as reminders, recurring tasks, and collaboration.