a todo list with socket