finished sample todo app