Todo List

Write a todo list application with the following features:

  1. Enter a task to be completed specifying the task and due date. For simplicity sake save your data to a text file in csv format.
    todo.exe task -t Complete Application -d 2018-04-01
  2. List task specifying the status of the take. The available statuses are All or Incomplete. Incomplete will only show task not marked as completed.
    todo.exe list -s [All| Incomplete]

    The output should be something like
    Id: 1
    Task: Thing #1
    Due: 2018-04-01

  3. Mark a task as complete by passing in the task Id.
  4. todo.exe -c [Id]


Only worry about writing the library code to facilitate the todo list. There is no need to actually parse the arguments.


  1. Allow the user to create sub-task for an existing task. Do this by amending the create function to take in a parent task Id.
    todo.exe task -t Sub Task -d 2018-04-02 -p 1
  2. Amend the task list output to list all sub-task under the parent task
    • If no children task exists do NOT show the > Child Task <‚Äč header
    • Example output when task exist
      Id: 2
      Task: Thing #2
      Due: 2018-04-01 > Child Task <

      Id: 1
      Task: Thing #1
      Due: 2018-04-02

  3. Amend the complete task function to print an error if the user tries to mark the parent task as complete without all children task being marked as complete already.