Loading LLD design...
Design an object-oriented task management system (similar to Jira or Trello) that supports creating tasks with priorities and due dates, assigning them to users, and tracking their status through a configurable workflow.
The system should organise tasks into boards with Kanban-style columns, support tagging and search, handle subtask hierarchies, and detect overdue items.
Create tasks
Create tasks with a title, description, priority, and optional due date
Assign tasks
Assign tasks to users; a task can have one assignee at a time
Update task status
Move tasks through a workflow: TODO → IN_PROGRESS → IN_REVIEW → DONE
Organise with boards
Group tasks into boards (projects) with Kanban-style columns
Tag and filter tasks
Add tags to tasks and filter/search by title, tag, or assignee
Track due dates
Set due dates on tasks and query for overdue items
Support subtasks
Break large tasks into smaller subtasks in a parent-child hierarchy
Before diving into code, clarify the use cases and edge cases. Understanding the problem deeply leads to better class design.
Identify the primary actions users will perform. For a parking lot: park vehicle, exit vehicle, check availability. Each becomes a method.
Who interacts with the system? Customers, admins, automated systems? Each actor type may need different interfaces.
What are the limits? Max vehicles, supported vehicle types, payment methods. Constraints drive your data structures.
What happens on overflow? Concurrent access? Payment failures? Thinking about edge cases reveals hidden complexity.