<div style="position: relative; padding-bottom: 64.90384615384616%; height: 0;"><iframe src="https://www.loom.com/embed/305c8f0ddf29477c95b6928d76028a02?sid=a150dfe4-4f59-4f08-9b26-9c94d759eadc" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;"></iframe></div>
Code from Video: https://github.com/lizTheDeveloper/multiverse_todo_app
Building your first ToDo app is like a rite of passage in as a programmer. It's like your first infinite loop, or your first syntax error.
Most applications are usually defined as a series of **user stories**, which are a way of phrasing features of your program. Let's look at the **user stories** for the todo list application:
#### User Stories
As a user I should be able to add simple todos by typing something like `add "buy coffee creamer"`
As a user I should be able to view my todos by typing something like `view`
When I view my todos I should see something like this:
```
1: buy coffee creamer
2: make list of todos
3: finish todo app
```
As a user I should be able to mark todos as completed by typing something like `done 1`
As a user I should be able to unmark todos as completed by typing something like `undo 1`
As a user I should be able to delete todos by typing something like `delete 1`
As a user I should be able to add todos to a specific list by typing something like `add groceries "buy coffee creamer"`
As a user I should be able to view todos within a specific list by typing something like `view groceries`
As a user I should be able to view all my todos by not specifying a list `view`
As a user I should be able to add due dates to my todos `add groceries "buy coffee creamer" 6/1/2024`
As a user my todos should be saved in a file so they persist when the program is not running
As a user I should be able to view my due dates in order by typing something like `view groceries due_date`
Ok that sounds like a lot, so let's break it down into a few milestones:
#### Version 0
As a user my todos should be saved in a file so they persist when the program is not running
As a user I should be able to view my todos by typing something like `view`
As a user I should be able to add simple todos by typing something like `add "buy coffee creamer"`
As a user I should be able to mark todos as completed by typing something like `done 1`
As a user I should be able to unmark todos as completed by typing something like `undo 1`
As a user I should be able to delete todos by typing something like `delete 1`
#### Version 1
As a user I should be able to add todos to a specific list by typing something like `add groceries "buy coffee creamer"`
As a user I should be able to view todos within a specific list by typing something like `view groceries`
As a user I should be able to view all my todos by not specifying a list `view`
#### Version 2
As a user I should be able to add due dates to my todos `add groceries "buy coffee creamer" 6/1/2024`
As a user I should be able to view my due dates in order by typing something like `view groceries due_date`
And that's it for now! See how many versions you can get done with by focusing on one version at a time. Try to get at least through Version 0, but if you don't make it to Version 1, that's ok.
Good luck, and happy coding!