diff --git a/Track_2_ToDo_App/Hackathon-format.md b/Track_2_ToDo_App/Hackathon-format.md
new file mode 100644
index 00000000..d9f5bac4
--- /dev/null
+++ b/Track_2_ToDo_App/Hackathon-format.md
@@ -0,0 +1,5 @@
+# Hackathon Format: Build a To-Do Application with AI Features
+
+**COMING SOON**
+
+[🔼 Home ](/Public%20Repo%20Content/README.md)
\ No newline at end of file
diff --git a/Track_2_ToDo_App/README.md b/Track_2_ToDo_App/README.md
new file mode 100644
index 00000000..6989162f
--- /dev/null
+++ b/Track_2_ToDo_App/README.md
@@ -0,0 +1,34 @@
+# Track 2: Build a To-Do Application with AI Features
+
+## Summary
+This track is designed to help students build a To-Do application with AI features that will be deployed to Azure. The application will start as a simple console application and then evolve into a web application taking advantage of generative AI to help with task recommendations. The application will be broken down into a series of sprints that will build on top of each other. Each sprint will have a set of features and user stories that the students will implement. The goal is to give students a hands-on experience building a real-world application that they can continue to evolve after the hackathon.
+
+## Key Concepts that Students will Learn:
+- **Everyone can code** – and coding can come in all forms and sizes; from a simple script/console application, to a website, to a fully commercial solution that scales to millions of users. You do not have to be building the next Facebook or YouTube to be a developer.
+
+- **Start Small and iterate** – some problems can be daunting if you try to solve them all at once, break down a problem into smaller chunks that you can iterate over and incrementally make improvements to your application. We have purposely broken down the problem into a series of sprints and user stories to help show how an application can evolve over many iterations.
+
+- **Understand the tools that can help you on the journey**: such as IDE’s (i.e., Visual Studio Code) and how AI can both help you build your application (i.e., GitHub Copilot) as well as help you create applications with amazing capabilities
+
+## Track Structure
+- Students will be broken up into teams based on skill level and each team will be assigned a coach (i.e., CSA) to guide them through two days of learning.
+- The training will be centered around building a **To-Do Application**. Taking the students from the most basic console application, to a web application, **adding AI features** along the way, and then eventually **hosting in Azure**.
+- The application will be broken down into a small set of manageable tasks (i.e., sprints and user stories) building up to the final application. Each sprint will have some learning activities through recorded presentations to get the students up to speed on a topic, and then exercises broken up into features/user stories that they will implement.
+- Each sprint will build on top of the previous sprint and students will be very hands on with the code.
+ - Since each sprint builds on the previous sprint a student can join at any point in the track and start coding as each user story has a fully functional code base that the user can start from.
+- The students will be able to work at their own pace and will have the ability to ask questions of their coach as they work through the exercises.
+
+
+## Getting Started
+This track has been designed to work in **2 modes** you can either approach it as...
+- **Workshop** - where you can simply follow along the step-by-step guide all the way through the training.
+ - [**start the track in the workshop format**](/Track_2_ToDo_App/Workshop-Format.md)
+
+> [!TIP]
+> If you are completely new to coding or just want to follow along with the step-by-step guide, this is the best place to start.
+
+- **Hackathon** - where you are given a set of features/user stories and you try to implement these changes on your own (abliet there is always an option to jump into the step-by-step guide if you get stuck) and work through them in a set amount of time.
+ - [**start the track in the hackathon format**](/Track_2_ToDo_App/Hackathon-Format.md)
+
+
+Still interesting in learning more about coding? Check out the [**Where to Learn More**](/Track_2_ToDo_App/Where%20to%20Learn%20More.md) section for more resources on coding and building applications.
\ No newline at end of file
diff --git a/Track_2_ToDo_App/Sprint-00 - Environment Setup/01 - Setup GitHub Account.md b/Track_2_ToDo_App/Sprint-00 - Environment Setup/01 - Setup GitHub Account.md
new file mode 100644
index 00000000..653f9f9e
--- /dev/null
+++ b/Track_2_ToDo_App/Sprint-00 - Environment Setup/01 - Setup GitHub Account.md
@@ -0,0 +1,70 @@
+# Setup GitHub Account
+⏲️ _Est. time to complete: 45 min._ ⏲️
+
+## 🎯Here is what you will learn
+You wil learn the following:
+- How to sign up at GitHub and create an account
+- How to edit your profile and upload a picture
+- How to fork a repository
+- Bonus: How to build your own Octocat
+
+## Table Of Contents
+
+1. [Sign up and create a GitHub account](#sign-up-and-create-at-github-account)
+2. [Edit your GitHub profile](#edit-your-github-profile)
+3. [Fork repository](#fork-repository)
+4. [Create your codespace](#create-your-codespace)
+5. [Bonus Challenge: Octocat](#bonus-challenge-build-your-own-octocat)
+
+## Sign up and create at GitHub account
+
+
+What is GitHub?
+
+GitHub is actually two things: **Git** and **Hub**.
+
+**Git** is a version control software. It allows developers to work on a specific project at the same time by tracking the changes. If something goes wrong, you can easily undo the changes with Git.
+**Hub** is nothing special in itself, but it represents the "social network" of developers built on top of Git. While GitHub does not own the Git software, it has created a platform that makes it easy to access and collaborate with Git. The groundbreaking feature of GitHub is that it makes it super easy to share/show your code with the world or just store it. You no longer have to worry about where you store your code. Companies have GitHub accounts for the same reason. GitHub provides an easy way to store your code online with built-in version control.
+
+
+
+- Go to the [GitHub website](https://github.com/) and create a GitHub account.
+- Add your email address, password and your desired username
+ 
+ 
+- Type **y** for receiving emails from GitHub about new product updates and announcements. Or **n** for not receiving emails from GitHub about product updates and announcements.
+ 
+
+- To **verify** the account, please follow the instructions.
+ 
+
+ After verifying your account, you will be given an option to choose if you would like to use the free version or paid version, for this exercise, please choose free version at the bottom of the screen and continue.
+
+ 
+
+You have now successfully created your GitHub account. Now it is time to edit your profile and make it your own.
+
+## Edit your GitHub profile
+
+### Upload a profile picture and insert your name
+
+This is the front page of your account. This overview shows everything about your activities on GitHub, such as your contributions to repositories, your own repositories, your achievements and much more.
+
+
+To change or add any of your information, click on your icon in the top right corner and choose **Settings**. If you like, you can upload a profile picture here as well.
+
+
+
+
+
+## Fork Repository
+
+A Fork is a copy of a repository in your own GitHub account. This is extremely handy if you want to freely experiment without making any changes to the original project.
+
+Now, let's go ahead and fork this repository!
+
+
+
+Now that you have successfully created your GitHub account, we are ready to set up your coding environment next!
+
+[🔼 Sprint 0 - Home](readme.md) | [Next setup step ▶](02b%20-%20Setup%20Local%20Development%20Environment.md)
diff --git a/Track_2_ToDo_App/Sprint-00 - Environment Setup/02a - Use GitHub CodeSpaces.md b/Track_2_ToDo_App/Sprint-00 - Environment Setup/02a - Use GitHub CodeSpaces.md
new file mode 100644
index 00000000..21e7b05b
--- /dev/null
+++ b/Track_2_ToDo_App/Sprint-00 - Environment Setup/02a - Use GitHub CodeSpaces.md
@@ -0,0 +1,119 @@
+# Using GitHub CodeSpaces
+⏲️ _Est. time to complete: 10 min._ ⏲️
+
+## Here is what you will learn 🎯
+You will learn the following:
+- What is GitHub Codespaces and how it can benefit your development process.
+- How to create and stop GitHub Codespaces.
+- How to understand and use the `devcontainer.json` file in a project.
+- How to install and use extensions in a Codespace.
+
+## Table Of Contents
+- [Introduction to GitHub Codespaces](#introduction-to-github-codespaces)
+- [Creating and Stopping a GitHub Codespace](#creating-and-stopping-a-github-codespace)
+- [Understanding the `devcontainer.json` file](#understanding-the-devcontainerjson-file)
+- [Installing and using extensions in a Codespace](#installing-and-using-extensions-in-a-codespace)
+
+## Introduction to GitHub Codespaces
+
+Welcome to our project! If you're new to programming, don't worry. We're here to guide you through the process. We use something called Codespaces, which is a feature provided by GitHub. You can learn more about it [here](https://github.com/features/codespaces).
+
+GitHub Codespaces is a cloud-based development environment. It's like a virtual coding setup that lives on the internet, not on your personal computer. It allows you to write, run, debug, test, save different versions of your code (commit), and share your code with others (push), all from your web browser. This means you don't need to set up a local development environment on your computer, which can be a complex and time-consuming process, especially for beginners.
+
+Here are some of the advantages of using Codespaces:
+
+- **No setup required**: You don't need to install any software or configure your computer to start coding. Just open a Codespace, and you're ready to go!
+
+- **Consistent environments**: Each Codespace is isolated and consistent. This means you won't run into issues like "it works on my machine but not on yours".
+
+- **Powerful and flexible**: Codespaces are powered by Visual Studio Code and support a wide range of programming languages and tools. You can customize your Codespace with extensions and settings to fit your workflow.
+
+- **Accessible from anywhere**: As long as you have an internet connection, you can access your Codespace from any device, anywhere in the world.
+
+- **Limited free usage**: GitHub provides up to 60 hours of free usage of Codespaces per month. This makes it a cost-effective solution for beginners and small projects.
+
+Now that you know what Codespaces is and why it's useful, let's dive into how to use it in our project!
+
+
+## Creating and Stopping a GitHub Codespace
+
+Creating a new Codespace is easy, when you know where to look:
+
+1. Navigate to the main page of the GitHub repository for which you want to create a Codespace.
+2. Click on the green "Code" button on the top right and switch from the local to the Codespaces tab.
+3. Click on the plus symbol. GitHub will now create a new Codespace and open it in a new browser window. It might take a few minutes to load but just like that you're done!
+
+
+
+To stop a Codespace, follow these steps:
+
+1. Go back to the main page of the GitHub repository (the tab should still be open in your web browser)
+2. Click on the three dots in the top right corner of the Codespace window.
+3. Select "Stop Codespace". Your Codespace will now be stopped and closed. You can reopen it later by returning to your repository and selecting the same Codespace from the list.
+
+
+
+If you do not explicitly stop a codespace, it will continue to run until it times out from inactivity. Closing a codespace does not stop the Codespace.
+
+## Understanding the `devcontainer.json` file
+
+In our project, you'll find a file named `devcontainer.json` which is located in the.devontainer folder. This file is automatically detected by GitHub and like a recipe for Codespaces. It tells Codespaces how to set up the environment for our project. Let's break down what each part means:
+
+```json
+{
+ "image": "mcr.microsoft.com/devcontainers/universal:2",
+ "postCreateCommand": "python3 -m pip install -r Application/requirements.txt",
+ "customizations": {
+ "codespaces": {
+ "openFiles": ["Application/README.md"]
+ },
+ "vscode": {
+ "extensions": [
+ "ms-toolsai.jupyter",
+ "ms-python.python"
+ ]
+ }
+ }
+}
+```
+
+- `"image": "mcr.microsoft.com/devcontainers/universal:2"`: This line tells Codespaces to use a specific Docker image. Docker images are like blueprints for creating containers, which are isolated environments where you can run your code.
+
+ In this case, we're using the `mcr.microsoft.com/devcontainers/universal:2` image. This is a universal image provided by Microsoft that includes a wide range of development tools. It's designed to support many different types of projects, making it a great starting point for most Codespaces.
+
+ This image includes tools for several programming languages, databases, and utilities. It also includes the Visual Studio Code Server, which allows you to use Visual Studio Code's interface in your web browser.
+
+ By using this image, we ensure that everyone working on the project has the same tools available, regardless of their local machine.
+
+- `"postCreateCommand": "python3 -m pip install -r Application/requirements.txt"`: After the base Docker image is set up, this command runs. It's like adding the specific ingredients for our project.
+
+ This command is a standard way to install Python packages. Here's what each part of the command does:
+
+ - `python3`: This is the version of Python we're using. Python 3 is the current and most widely used version of Python.
+
+ - `-m pip`: This tells Python to use the `pip` tool. `pip` is like a handyman that can fetch and install Python packages for you. These packages are ready-made pieces of code that you can use in your project.
+
+ - `install`: This is the task we're giving to `pip`. It's like saying, "Hey pip, please install something for me."
+
+ - `-r Application/requirements.txt`: The `-r` option tells `pip` to look in a specific file for a list of packages to install. In this case, the file is `Application/requirements.txt`. This file is like a shopping list of all the Python packages that our project needs.
+
+ By running this command, we make sure that all the necessary Python packages are installed in the Codespace. This is like setting up all the tools and materials before starting a DIY project.
+
+## Installing and using extensions in a Codespace
+
+The `devcontainer.json` file also allows us to customize our Codespaces environment. We have two types of customizations:
+
+- `"codespaces"`: These customizations apply when we're using Codespaces. `"openFiles": ["README.md"]` means that the `README.md` file that you saw on the main page will automatically pop up when you start the Codespace. It's like walking into a room and finding a welcome note on the table.
+
+- `"vscode": {"extensions": ["ms-toolsai.jupyter", "ms-python.python"]}`: This part tells Visual Studio Code to automatically add two helpers, called extensions, when the Codespace is created:
+
+ - `ms-toolsai.jupyter`: This is like a digital notebook where you can write and run code, and also add notes, images, or even equations. It's very popular in data science because you can see your data and your code side by side. The Jupyter extension lets you use these notebooks right inside Visual Studio Code.
+
+ - `ms-python.python`: This is a helper for writing Python code. It adds features like code suggestions, checks your code for mistakes, and even formats your code to make it look neat and consistent. It's like having a helpful robot that watches over your shoulder while you code.
+
+By including these extensions in our `devcontainer.json` file, we make sure they are automatically added in the Codespace. This means you don't have to add them yourself, and everyone working on the project has the same setup.
+
+We hope this helps you understand how our project is set up in Codespaces. Happy coding!
+
+
+[🔼 Sprint 0 - Home](readme.md) | [Next Sprint ▶](/Track_2_ToDo_App/Sprint-01%20-%20Basic%20Application/README.md)
diff --git a/Track_2_ToDo_App/Sprint-00 - Environment Setup/02b - Setup Local Development Environment on Windows.md b/Track_2_ToDo_App/Sprint-00 - Environment Setup/02b - Setup Local Development Environment on Windows.md
new file mode 100644
index 00000000..103ce1b8
--- /dev/null
+++ b/Track_2_ToDo_App/Sprint-00 - Environment Setup/02b - Setup Local Development Environment on Windows.md
@@ -0,0 +1,172 @@
+# Setup Local Development Environment on Windows OS
+
+⏲️ _Est. time to complete: 45 min._ ⏲️
+
+## Here is what you will learn 🎯
+
+You wil learn the following:
+
+- Installing Git
+- Installing Python
+- Installing Python Libraries
+- Setting up Python Virtual Environment
+- Installing Visual Studio Code
+
+## Table Of Contents
+
+1. [Install Git](#install-git)
+2. [Clone the Repository](#clone-the-repository)
+3. [Install Visual Studio Code](#install-visual-studio-code)
+4. [Install Python](#install-python)
+5. [Setup Python Virtual Environment](#setup-python-virtual-environment)
+6. [Install Python Libraries](#install-python-libraries)
+
+Depending on the operating system you are using, chose appropriate installation method below. For more details on Git and various installation refer to [Install Git on GitHub](https://github.com/git-guides/install-git)
+
+### Install Git
+
+Following the instruction below to install Git on Windows operating system. For detailed inf
+
+- Verify if you already have the Git installed on your computer by checking below
+ - On your computer from the the Widows task bar, search for command-line tool using "cmd", and open the command-line tool.
+ 
+
+ - Run command _git -v_ and verify output.
+ If the Git not installed you will see error below.
+ 
+
+ If Git is installed you will see output below with Git version.
+ 
+
+- If Git is previously not installed, [click here to download](https://github.com/git-for-windows/git/releases/download/v2.44.0.windows.1/Git-2.44.0-64-bit.exe) Git installer for Windows.
+- By default download file is located in the Download folder on your computer. If download location is changed, navigate to that location to install Git.
+ 
+
+- Double click on the Git installer file highlighted above to begin installation. You will Git setup menu as shown below, and click _Next_.
+
+
+- Follow onscreen instructions and accept defaults folder to install Git, then click Nex to continue and accept all defaults until you reach Install option as shown below and click _Install_.
+
+- Once the installation complete, uncheck _View release notes_ in the last screen and click _Finish_.
+
+## Clone the Repository
+
+1. From this repo, click on the "Code" button and copy the link to the repository
+ 
+
+2. Open a terminal window. For windows users you can use the command prompt or powershell. For Mac and Linux users you can use the terminal application.
+
+3. Navigate to the directory where you want to store the project
+
+4. Run the following command to clone the repository:
+
+ ```bash
+ git clone
+ ```
+
+5. Navigate to the project directory:
+
+ ```bash
+ cd
+ ```
+
+## Install Visual Studio Code
+
+Follow the instructions below install VS Code on your computer. Visit [Visual Studio Code download page](https://code.visualstudio.com/download) to download latest version of installation package for your computer operating system.
+
+- Download VS Code installer for Windows [by clicking here](https://code.visualstudio.com/sha/download?build=stable&os=win32-x64-user). This is a user installer to install for current user. Download [system installer](https://code.visualstudio.com/sha/download?build=stable&os=win32-x64) to install for all users using the computer. This will require elevation permissions to install for everyone.
+- Go to _Downloads_ folder and double click VS Code installer to start installing
+ 
+
+- Accept license agreement and click _Next_ to continue installing VS Code.
+ 
+
+- Follow onscreen instructions and accept all default options and continue to the _Ready to Install_ option. Click _Install_ to finish installing VS Code and wait for the installation to complete.
+ 
+
+- Uncheck _Launch Visual Studio Code_ and click _Finish_ to close the installer.
+
+## Install Python
+
+If you haven't already installed Python locally on your computer, follow instructions below to install Python.
+
+- Download latest stable release of Python [by clicking here](https://www.python.org/ftp/python/3.12.2/python-3.12.2-amd64.exe).
+- Go to the local Downloads folder and click on Python installer file
+ 
+- Select _Add python.exe to PATH_ check box, then click on _Install Now_.
+ 
+- Once installation is complete, click _Close_.
+ 
+
+## Setup Python Virtual Environment
+
+1. From the terminal window, navigate to the project directory
+
+ ```bash
+ cd
+ ```
+
+ > [!TIP]
+ > The repository for this training has a directory named `myApplication` that you can use as your default working directory while building the application or feel free to choose any directory where you would like to put this application.
+
+2. Copy the following `requirements.txt` file from [Sprint 0](/Track_2_ToDo_App/Sprint-00%20-%20Environment%20Setup/src/requirements.txt) into your project directory.
+
+3. Open up Visual Studio Code in the project directory by executing the following command.
+
+ ```cmd
+ code .
+ ```
+
+4. From Visual Studio Code, either select "View/Command Palette" or press `Ctrl+Shift+P` to open the command palette.
+
+
+5. In the search box, type `Python` and then select the option `Python: Create Environement...` from the list of options.
+
+
+6. An environment type selection box will appear. Select `Venv Create a '.venv' environment in the current workspace` from the list of options.
+
+
+7. Select the Python interpreter version to use for the virtual environment. If you have multiple versions of Python installed, you should select the version that you installed in the previous step.
+
+
+8. Check the box next to the `requirements.txt` file to install the required packages in the virtual environment and hit ok.
+
+
+9. You will see a notification in the bottom right corner of the screen indicating that the virutal environment is being created. This can take a few minutes to complete.
+
+
+10. Once the virtual environment is created, you should see a notification in the bottom right corner of the screen indicating that the virtual environment has been created.
+ This will create a new directory called `.venv` in the project directory that will contain the virtual environment. All python packages installed in this environment will be isolated from the global python environment.
+
+11. Open up a terminal window in Visual Studio Code and activate the virtual environment by running the following command.
+
+ ```cmd
+ .venv\Scripts\Activate
+ ```
+
+ You should see the name of the virtual environment in the terminal prompt to indicate that the virtual environment is active.
+
+## Install Python Libraries
+
+Code examples in some of the sprints uses following Python libraries. If these modules are not already installed, install these libraries by following the instructions below. Note however if you have already installed the virtual environment, you can skip this step as the libraries were installed as part of the virtual environment setup.
+
+1. Open Visual Studio Code if it is already not open
+2. Open Terminal window or Create a new terminal window in VS Code
+3. Make sure __*pip*__ package manager installed in VS Code to install Python libraries. If not installed, follow the instructions below.
+
+ - Download [get-pip.py](https://bootstrap.pypa.io/get-pip.py)
+ - Run below command in the VS Code terminal window
+
+ ```python
+ python \get-pip.py
+ ```
+
+4. Copy the following `requirements.txt` file from [Sprint 0](/Track_2_ToDo_App/Sprint-00%20-%20Environment%20Setup/src/requirements.txt) into your project directory.
+
+5. Now, install the required libraries by running the following command in the terminal window:
+
+ ```python
+ pip install requirements.txt
+ ```
+
+[🔼 Sprint 0 - Home](readme.md) [◀ Previous setup step](01%20-%20Setup%20GitHub%20Account.md) | [Next Sprint ▶](/Track_2_ToDo_App/Sprint-01%20-%20Basic%20Application/README.md)
diff --git a/Track_2_ToDo_App/Sprint-00 - Environment Setup/02c - Setup Local Development Environment on Mac.md b/Track_2_ToDo_App/Sprint-00 - Environment Setup/02c - Setup Local Development Environment on Mac.md
new file mode 100644
index 00000000..97cd71af
--- /dev/null
+++ b/Track_2_ToDo_App/Sprint-00 - Environment Setup/02c - Setup Local Development Environment on Mac.md
@@ -0,0 +1,152 @@
+# Setup Local Development Environment on Mac OS
+
+⏲️ _Est. time to complete: 45 min._ ⏲️
+
+## Here is what you will learn 🎯
+
+You wil learn the following:
+
+- Installing Git
+- Installing Python
+- Installing Python Libraries
+- Setting up Python Virtual Environment
+- Installing Visual Studio Code
+
+## Table Of Contents
+
+1. [Install Git](#install-git)
+2. [Clone the Repository](#clone-the-repository)
+3. [Install Visual Studio Code](#install-visual-studio-code)
+4. [Install Python](#install-python)
+5. [Setup Python Virtual Environment](#setup-python-virtual-environment)
+6. [Install Python Libraries](#install-python-libraries)
+
+Depending on the operating system you are using, chose appropriate installation method below. For more details on Git and various installation refer to [Install Git on GitHub](https://github.com/git-guides/install-git)
+
+## Install Git
+
+Most versions of MacOS already have Git installed, and you can activate it through the terminal with git version. If you don't have Git installed, you can install the latest version using instructions below.
+
+- Navigate to the latest [macOS Git Installer](https://sourceforge.net/projects/git-osx-installer/files/git-2.23.0-intel-universal-mavericks.dmg/download?use_mirror=autoselect) and download the latest version.
+- Once the installer has started, follow the instructions as provided until the installation is complete.
+- Open the command prompt "terminal" and type git version to verify Git was installed.
+
+> Note: git-scm is a popular and recommended resource for downloading Git on a Mac. The advantage of downloading Git from git-scm is that your download automatically starts with the latest version of Git. The download source is the same macOS Git Installer as referenced in the steps above.
+
+## Clone the Repository
+
+1. From this repo, click on the "Code" button and copy the link to the repository
+ 
+
+2. Open the terminal application.
+
+3. Navigate to the directory where you want to store the project
+
+4. Run the following command to clone the repository:
+
+ ```bash
+ git clone
+ ```
+
+5. Navigate to the project directory:
+
+ ```bash
+ cd
+ ```
+
+## Install Visual Studio Code
+
+Follow the instructions below install VS Code on your computer. Visit [Visual Studio Code download page](https://code.visualstudio.com/download) to download latest version of installation package for your computer operating system.
+
+- Download VS Code installation package for Mac [by clicking here](https://code.visualstudio.com/sha/download?build=stable&os=darwin-universal)
+- Go to the _Downloads_ folder on Mac and double click on installation package to extract packages.
+- Move the Visual Studio Code application to the Application folder to make it available in the macOS launchpad.
+- Launch Visual Studio Code from Applications to make sure it is working as expected
+
+## Install Python
+
+- Download latest stable release of Python installation package for Mac [by clicking here](https://www.python.org/ftp/python/3.12.2/python-3.12.2-macos11.pkg).
+- Once the download is complete, go to the download folder and double-click on the package file to start installing Python.
+- Click _Continue_ and follow onscreen instructions to install Python. Once installation is completes, it opens Python folder.
+- To verify that the latest version of Python and IDLE installed correctly, double click on IDLE to show Python shell.
+- Review Python version in the shell to confirm Python is installed correctly.
+
+## Setup Python Virtual Environment
+
+1. From the terminal window, navigate to the project directory
+
+ ```bash
+ cd
+ ```
+
+ > [!TIP]
+ > The repository for this training has a directory named `myApplication` that you can use as your default working directory while building the application or feel free to choose any directory where you would like to put this application.
+
+2. Copy the following `requirements.txt` file from [Sprint 0](/Track_2_ToDo_App/Sprint-00%20-%20Environment%20Setup/src/requirements.txt) into your project directory.
+
+3. Open up Visual Studio Code in the project directory by executing the following command.
+
+ ```cmd
+ code .
+ ```
+
+4. From Visual Studio Code, either select "View/Command Palette" or press `Ctrl+Shift+P` to open the command palette.
+
+ 
+
+5. In the search box, type `Python` and then select the option `Python: Create Environement...` from the list of options.
+
+ 
+
+6. An environment type selection box will appear. Select `Venv Create a '.venv' environment in the current workspace` from the list of options.
+
+ 
+
+7. Select the Python interpreter version to use for the virtual environment. If you have multiple versions of Python installed, you should select the version that you installed in the previous step.
+
+ 
+
+8. Check the box next to the `requirements.txt` file to install the required packages in the virtual environment and hit ok.
+
+ 
+
+9. You will see a notification in the bottom right corner of the screen indicating that the virutal environment is being created. This can take a few minutes to complete.
+
+ 
+
+10. Once the virtual environment is created, you should see a notification in the bottom right corner of the screen indicating that the virtual environment has been created.
+ This will create a new directory called `.venv` in the project directory that will contain the virtual environment. All python packages installed in this environment will be isolated from the global python environment.
+
+11. Open up a terminal window in Visual Studio Code and activate the virtual environment by running the following command.
+
+ ```cmd
+ .venv\Scripts\Activate
+ ```
+
+ You should see the name of the virtual environment in the terminal prompt to indicate that the virtual environment is active.
+
+## Install Python Libraries
+
+Code examples in some of the sprints uses following Python libraries. If these modules are not already installed, install these libraries by following the instructions below. Note however if you have already installed the virtual environment, you can skip this step as the libraries were installed as part of the virtual environment setup.
+
+1. Open Visual Studio Code if it is already not open
+2. Open Terminal window or Create a new terminal window in VS Code
+3. Make sure __*pip*__ package manager installed in VS Code to install Python libraries. If not installed, follow the instructions below.
+
+ - Download [get-pip.py](https://bootstrap.pypa.io/get-pip.py)
+
+ - Run below command in the VS Code terminal window
+
+ ```python
+ python \get-pip.py
+ ```
+
+4. Copy the following `requirements.txt` file from [Sprint 0](/Track_2_ToDo_App/Sprint-00%20-%20Environment%20Setup/src/requirements.txt) into your project directory.
+
+5. Now, install the required libraries by running the following command in the terminal window:
+
+ ```python
+ pip install requirements.txt
+ ```
+
+[🔼 Sprint 0 - Home](readme.md) [◀ Previous setup step](01%20-%20Setup%20GitHub%20Account.md) | [Next Sprint ▶](/Track_2_ToDo_App/Sprint-01%20-%20Basic%20Application/README.md)
diff --git a/Track_2_ToDo_App/Sprint-00 - Environment Setup/images/CloneRepo-S0.png b/Track_2_ToDo_App/Sprint-00 - Environment Setup/images/CloneRepo-S0.png
new file mode 100644
index 00000000..d2298fac
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-00 - Environment Setup/images/CloneRepo-S0.png differ
diff --git a/Track_2_ToDo_App/Sprint-00 - Environment Setup/images/SetupVirtualEnvrionment-01.png b/Track_2_ToDo_App/Sprint-00 - Environment Setup/images/SetupVirtualEnvrionment-01.png
new file mode 100644
index 00000000..148395b3
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-00 - Environment Setup/images/SetupVirtualEnvrionment-01.png differ
diff --git a/Track_2_ToDo_App/Sprint-00 - Environment Setup/images/SetupVirtualEnvrionment-02.png b/Track_2_ToDo_App/Sprint-00 - Environment Setup/images/SetupVirtualEnvrionment-02.png
new file mode 100644
index 00000000..f8ec8249
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-00 - Environment Setup/images/SetupVirtualEnvrionment-02.png differ
diff --git a/Track_2_ToDo_App/Sprint-00 - Environment Setup/images/SetupVirtualEnvrionment-03.png b/Track_2_ToDo_App/Sprint-00 - Environment Setup/images/SetupVirtualEnvrionment-03.png
new file mode 100644
index 00000000..1d2d6aa4
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-00 - Environment Setup/images/SetupVirtualEnvrionment-03.png differ
diff --git a/Track_2_ToDo_App/Sprint-00 - Environment Setup/images/SetupVirtualEnvrionment-04.png b/Track_2_ToDo_App/Sprint-00 - Environment Setup/images/SetupVirtualEnvrionment-04.png
new file mode 100644
index 00000000..4a00ec4f
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-00 - Environment Setup/images/SetupVirtualEnvrionment-04.png differ
diff --git a/Track_2_ToDo_App/Sprint-00 - Environment Setup/images/SetupVirtualEnvrionment-05.png b/Track_2_ToDo_App/Sprint-00 - Environment Setup/images/SetupVirtualEnvrionment-05.png
new file mode 100644
index 00000000..dd1821db
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-00 - Environment Setup/images/SetupVirtualEnvrionment-05.png differ
diff --git a/Track_2_ToDo_App/Sprint-00 - Environment Setup/images/SetupVirtualEnvrionment-06.png b/Track_2_ToDo_App/Sprint-00 - Environment Setup/images/SetupVirtualEnvrionment-06.png
new file mode 100644
index 00000000..09b20824
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-00 - Environment Setup/images/SetupVirtualEnvrionment-06.png differ
diff --git a/Track_2_ToDo_App/Sprint-00 - Environment Setup/readme.md b/Track_2_ToDo_App/Sprint-00 - Environment Setup/readme.md
new file mode 100644
index 00000000..42c161b5
--- /dev/null
+++ b/Track_2_ToDo_App/Sprint-00 - Environment Setup/readme.md
@@ -0,0 +1,20 @@
+# Sprint 0: Environment Setup
+
+⏲️ _Est. time to complete: 60 min._ ⏲️
+
+## Here is what you will learn 🎯
+
+The objective of this sprint is to setup the development environment for the project. This includes setting up the development tools, the version control system, and the project structure.
+
+## Setup Instructions
+
+1. [Setup a GitHub Account](01%20-%20Setup%20GitHub%20Account.md)
+2. [Setup Local Development Environment on Windows](02b%20-%20Setup%20Local%20Development%20Environment%20on%20Windows.md)
+3. [Setup Local Development Environment on Mac](02c%20-%20Setup%20Local%20Development%20Environment%20on%20Mac.md)
+
+ > [!NOTE]
+ > if you can't setup a local development environment you can use GitHub CodeSpaces as an alternative. Follow the instructions [here](02a%20-%20Use%20GitHub%20CodeSpaces.md)
+
+
+
+[🔼 Track 2 - Home Page](../README.md) | [Next Sprint ▶](/Track_2_ToDo_App/Sprint-01%20-%20Basic%20Application/README.md)
diff --git a/Track_2_ToDo_App/Sprint-00 - Environment Setup/src/requirements.txt b/Track_2_ToDo_App/Sprint-00 - Environment Setup/src/requirements.txt
new file mode 100644
index 00000000..cd030148
--- /dev/null
+++ b/Track_2_ToDo_App/Sprint-00 - Environment Setup/src/requirements.txt
@@ -0,0 +1,6 @@
+openai
+flask
+flask[async]
+flask_sqlalchemy
+sqlalchemy
+semantic_kernel
\ No newline at end of file
diff --git a/Track_2_ToDo_App/Sprint-01 - Basic Application/Feature 1 - Manage Todo List/User Story 1 - Add Item to List.MD b/Track_2_ToDo_App/Sprint-01 - Basic Application/Feature 1 - Manage Todo List/User Story 1 - Add Item to List.MD
new file mode 100644
index 00000000..fde72891
--- /dev/null
+++ b/Track_2_ToDo_App/Sprint-01 - Basic Application/Feature 1 - Manage Todo List/User Story 1 - Add Item to List.MD
@@ -0,0 +1,174 @@
+# 📖 User Story: Add Item to List - Step-by-Step
+⏲️ _Est. time to complete: 10 min._ ⏲️
+
+## User Story
+
+*As a user, I want to be able to add a to-do item to the list by entering the item name and pressing the enter key.*
+
+## 🎯Acceptance Criteria:
+- The application should have a command-line/terminal interface that allows the user to add items to the list.
+- The user should be able to add one item to the list at a time.
+- The user should be able to see the complete list of items after adding a new item.
+- The user should be able to continue to add items to the list until they choose to exit the program.
+- The interface should look something like this:
+ 
+
+## 🎓Know Before You Start
+The following resources/videos will help you get a better understanding of some of the basic Python concepts that you will use to complete this user story.
+- [The Basic: Using the Print Statement](https://www.youtube.com/watch?v=FhoASwgvZHk&list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6&index=5) (3:29 min)
+- [Hello World](https://www.youtube.com/watch?v=wWwr0tDSqnE&list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6&index=6) (5:59 min)
+- [Comments](https://www.youtube.com/watch?v=kEuVvUc1Zec&list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6&index=7) (3:04 min)
+- [Understanding Conditional Logic](https://www.youtube.com/watch?v=5pPKYWqkoek&list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6&index=19) (4:52 min)
+- [Understanding Collections in Python](https://www.youtube.com/watch?v=beA8IsY3mQs&list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6&index=25) (11:26 min)
+- [Demo: Collections in Python](https://www.youtube.com/watch?v=4PaSlXNjawM&list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6&index=26) (4:01 min)
+- [Loops](https://www.youtube.com/watch?v=9Os0o3wzS_I&list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6&index=27) (5:29 min)
+
+## 📋Steps
+
+In order to complete this user story you will need to complete the following tasks
+
+### Making your first application
+
+#### 1. Open Visual Studio Code
+- From the terminal window, navigate to the project directory
+
+ ```bash
+ cd
+ ```
+- Open up Visual Studio Code in the project directory by executing the following command.
+
+ ```cmd
+ code .
+ ```
+> [!TIP]
+> The repository for this training has a directory named `myApplication` that you can use as your default working directory while building the application or feel free to choose any directory where you would like to put this application.
+
+
+
+#### 2. Create the `app.py` application file
+Every program needs a starting point. Create a new file named `app.py` in the root of your project folder. Select the new file icon as seen below:
+
+
+
+then name the file `app.py` and press enter.
+
+
+
+
+
+#### 3. Create the collection to hold the to-do items
+Create an empty collection to hold your to-list items with the variable named 'todo_list' by adding the following code to the top of the `app.py` file.
+
+```python
+todo_list = []
+```
+
+
+
+#### 4. Create some sample to-do items
+Create a few sample to-do items in the list by adding the following code to the `app.py` file right after the 'todo_list' variable declaration.
+
+```python
+todo_list.append("Buy milk")
+todo_list.append("Learn more about Azure")
+todo_list.append("Complete first Python project")
+```
+
+The append method on a collection is used to add items to the list. In this case, we are adding three items to the list.
+
+
+
+#### 5. Print the list to the console
+Now we will want to see that we succesfully added all of those sample to-do items to the list. You can do this by printing the list to the console. Add the following code to the `app.py` file right after the `append` statements.
+
+```python
+for todo in todo_list:
+ print(todo)
+```
+
+This code will loop through the `todo_list` and print each item to the console. Your code should now look something like this:
+
+
+
+
+
+#### 6. Run the application
+Now let's see this application in action. Open a terminal window within visual studio code and run the application by typing `python app.py` and pressing the enter key or simply click the play button in the top right corner of the Visual Studio Code window.
+
+
+
+🎉 Congratulations, you now have successfully added a to-do item to the list and created the initial code for this to-do list application. Note however that this is **not a user-friendly** way to interact with the application as all of the to-do items are "hard-coded" meaning they are written directly in the code. This also does not meet the acceptance criteria that we have outlined above. In the next step you will be adding a user-friendly command-line interface to the application.
+
+
+
+### Update the application to be interactive
+
+#### 1. Add a menu to the application
+In order to create the user-friendly version of this application, we will need to create a basic menu structure that will allow the user to add an item to the to-do list. First, we need to update the code by first removing all the previous 'todo_list.append' statements and the 'for' loop statements to get rid of the 'hard-coded' sample to-do items.
+
+
+
+and replace it with the following code.
+
+```python
+#continue to loop and display menu until user selects to exit the program
+while True:
+ print() # Add a couple of blank lines
+ print()
+ print("To-do list: ") # Print the title of the list
+ for todo in todo_list: # Loop through existing to-do items
+ print(todo)
+
+ # Print the menu
+ print() # Add a of blank lines
+ print("Actions:")
+ print("A - Add to-do item")
+ print("X - Exit")
+ choice = input("Enter your choice (A or X): ")
+ choice = choice.upper() #converts the choice to uppercase
+
+ #user selected 'a' or 'A' - To Add an item to the list
+ if choice == "A":
+ todo = input("Enter the to-do item: ")
+ todo_list.append(todo)
+ continue #tells the program to go back to the start of the loop
+
+ #user selected 'x' or 'X' to exit program
+ if choice == "X":
+ break #tells the program to exit the loop
+
+ #user selected something else
+ print("Invalid choice")
+```
+This code creates a while loop that will continue to run over an over again until the user selects to exit the program by selecting "x" or "X". For each iteration of the while loop,
+- it will first loop through the collection of to-do items and print them out
+- it will display the menu
+- it will accept input from the user on which menu item to perform and will then execute the corresponding code related to that menu item.
+
+
+
+#### 2. Run the Application with the Menu
+Now let's see this application in action with the menu system in place. Open the terminal in Visual Studio code and run the application by typing `python app.py` and pressing the enter key or simply click the play button in the top right corner of the Visual Studio Code window.
+
+
+
+
+Now you should see a menu structure where you can interact with the system. Pressing 'a' or 'A' will allow you to add an item to the list. Please experiment by adding a few to-do list items. Remember that you will need to press 'x' or 'X' to exit the program.
+
+Here's what my application looks like after adding a few items to the list:
+
+
+
+🎉 Hooray! You have now added a user-friendly command-line interface to the application and finished Sprint 1 - Feature 1, User Story 1. You can now add items from the to-do list by entering the item name and pressing the enter key.
+
+
+
+> [!NOTE]
+> 📄For the full source code for this exercise please see [here](/Track_2_ToDo_App/Sprint-01%20-%20Basic%20Application/src/app-s01-f01-us01/app.py).
+
+
+
+[🔼 Back **Workshop** Instructions ](/Track_2_ToDo_App/Workshop-Format.md) | [🔼 Back to **Hackathon** Sprint 1 ](../README.md#📖user-story-1---add-item-to-list) | [**Next user story ▶**](/Track_2_ToDo_App/Sprint-01%20-%20Basic%20Application/Feature%201%20-%20Manage%20Todo%20List/User%20Story%202%20-%20Remove%20Item%20from%20List.md)
+
+
+
diff --git a/Track_2_ToDo_App/Sprint-01 - Basic Application/Feature 1 - Manage Todo List/User Story 2 - Remove Item from List.md b/Track_2_ToDo_App/Sprint-01 - Basic Application/Feature 1 - Manage Todo List/User Story 2 - Remove Item from List.md
new file mode 100644
index 00000000..af400a26
--- /dev/null
+++ b/Track_2_ToDo_App/Sprint-01 - Basic Application/Feature 1 - Manage Todo List/User Story 2 - Remove Item from List.md
@@ -0,0 +1,119 @@
+# 📖 User Story: Remove Item from List - Step-by-Step
+⏲️ _Est. time to complete: 10 min._ ⏲️
+
+## User Story
+
+*As a user, I want to be able to remove to-do item from the list by entering the item number and pressing the enter key*
+
+## 🎯Acceptance Criteria:
+- The application should have a command-line/terminal interface that allows users to remove items from the list.
+- The user should be able to remove one item from the list at a time.
+- The user should be able to see the complete list of existing items after removing an item.
+- The user should be able to continue to add or remove items from the list until they choose to exit the program.
+- The interface should look something like this:
+ 
+
+## 🎓Know Before You Start
+The following resources/videos will help you get a better understanding of some of the basic Python concepts that you will use to complete this user story.
+- [Formatting Strings](https://www.youtube.com/watch?v=bQQqxysLIGE&list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6&index=11) (4:08 min)
+- [Understanding Collections in Python](https://www.youtube.com/watch?v=beA8IsY3mQs&list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6&index=25) (11:26 min) - Same video as previous user story
+- [Demo: Collections in Python](https://www.youtube.com/watch?v=4PaSlXNjawM&list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6&index=26) (4:01 min) - same video as previous user story
+
+
+## 📋Steps
+
+#### 1. Open Visual Studio Code
+- Go to your application directory and start visual studio code by typing `code .` in the terminal window and pressing enter.
+
+- Open the `app.py` file in the root of your project folder.
+
+
+
+#### 2. Add a new menu option to remove an item from the list
+The first change that we will need to make to the application will be to add a new menu option that will allow the user to remove an item from the list. Update your menu structure to include the "R - Remove to-do item" option. You menu structure should now look like this:
+
+```python
+# Print the menu
+print() # Add a couple of blank lines
+print("Actions:")
+print("A - Add to-do item")
+print("R - Remove to-do item") #<--- ***HERE***
+print("X - Exit")
+choice = input("Enter your choice (A, R, or X): ") #<--- ***ALSO UPDATE MENU OPTIONS with the 'R' ***
+choice = choice.upper() #converts the choice to uppercase
+```
+
+> [!TIP]
+> Be aware that Python programs depend on spacing/tabs to determine the structure of the code. If you are copying and pasting the code above, make sure that the spacing is correct. You may have to indent this code
+as this code is part of the while loop
+
+
+
+#### 3. Identifying items in the list
+Next, we need a way to identify a to-do item so that we can remove it from the list. The easiest way to do this is to add a line number to each item that identifies that item in the list. This will allow the user to select an item from the list by providing a line number. To do this, we will need to update our code to print out the line number for each item in the list. Replace the code that prints out the list at the top of the while loop
+
+
+
+with the following code.
+
+> [!TIP]
+> If you simply do not want to copy/paste the code below. You can use GitHub Copilot to adjust this method. Use a prompt such as: *adjust this for loop to print item number next to each item*
+
+```python
+print("To-do list: ") # Print the title of the list
+item_number = 1
+for todo in todo_list: # Loop through existing to-do items
+ print(f'{item_number}: {todo}')
+ item_number += 1
+```
+
+This code will print out the list of items in the list along with the line number of each item. Note the use of the `item_number` variable to keep track of the line number of each item in the list. This will allow the user to select the item they would like to delete. Also note the use of the `f-string` to customize what we are printing to the terminal. Using the `f-string` allows us to easily insert the `item_number` and `todo` variables into the string that we are printing by using `{}` around the variable names. This is a very powerful feature of Python and allows you to easily create strings that are customized to the data that you are working with.
+
+
+
+#### 4. Add the code to remove an item from the list
+Finally, you will need to add the code that will allow the user to remove an item from the list. Add the following code right below the code to add an item.
+
+
+
+> [!TIP]
+> You can use GitHub Copilot to adjust this method instead of just copying and pasting the code below. Use a prompt such as: *create a choice for R which will remove items from the list given item number*
+
+```python
+#user selected 'r' or 'R' - To Remove an item from the list
+if choice == "R":
+ item_number = int(input("Enter the number of the item to remove: "))
+ if item_number > 0 and item_number <= len(todo_list):
+ todo_list.pop(item_number - 1)
+ else:
+ print("Invalid item number")
+ continue
+```
+
+Note that the `pop` method on the collection allows you to remove an item from the list by providing the index of the item that you would like to remove. In this case, we are using the `item_number` variable that the user provided to remove the item from the list. Since python collections are zero-based (i.e., their first index is 0) and our list displays items starting at 1 so we need to adjust the menu number by subtracting 1 from it to match where the item is stored in the collection.
+
+Also note that we are checking to make sure that the `item_number` is within the range of the list before we attempt to remove the item. If the `item_number` is not within the range of the list, we print an error message to the user and continue to the next iteration of the loop.
+
+
+
+#### 5. Run the Application
+Now let's see this application in action. Open the terminal within Visual Studio code and run the application by typing `python app.py` and pressing the enter key or simply click the play button in the top right corner of the Visual Studio Code window.
+
+Please experiment by adding a few to-do list items and then try to remove an item. When selecting "R" you will be prompted to enter the number of the item you would like to remove (as seen in the picture below). Remember that you will need to press 'x' or 'X' to exit the program.
+
+
+
+
+🎉 Congratulations you can now mark the "Complete first python application" officially off your list! You have completed Sprint 1 - Feature 1, User Story 2.
+
+❕Note that if you run the application multiple times, you will see that the items that you added in the previous run are no longer there. This is because the list is stored in memory and is not saved to a file. We will be adding this feature in the next user story.
+
+
+
+> [!NOTE]
+> 📄For the full source code for this exercise please see [here](/Track_2_ToDo_App/Sprint-01%20-%20Basic%20Application/src/app-s01-f01-us02/app.py).
+
+
+
+
+[🔼 Back **Workshop** Instructions ](/Track_2_ToDo_App/Workshop-Format.md) | [🔼 Back to **Hackathon** Sprint 1 ](../README.md#📖user-story-1---add-item-to-list) | [**◀ Previous user story**](User%20Story%201%20-%20Add%20Item%20to%20List.MD) | [**Next user story ▶**](/Track_2_ToDo_App/Sprint-01%20-%20Basic%20Application/Feature%202%20-%20Save%20To-Do%20List/User%20Story%201%20-%20Save%20To-Do%20List%20to%20File.md)
diff --git a/Track_2_ToDo_App/Sprint-01 - Basic Application/Feature 2 - Save To-Do List/User Story 1 - Save To-Do List to File.md b/Track_2_ToDo_App/Sprint-01 - Basic Application/Feature 2 - Save To-Do List/User Story 1 - Save To-Do List to File.md
new file mode 100644
index 00000000..2c700035
--- /dev/null
+++ b/Track_2_ToDo_App/Sprint-01 - Basic Application/Feature 2 - Save To-Do List/User Story 1 - Save To-Do List to File.md
@@ -0,0 +1,67 @@
+# 📖 User Story: Save To-Do List - Step-by-Step
+⏲️ _Est. time to complete: 10 min._ ⏲️
+
+## User Story
+
+*As a user, I want to be able to have my to-do list automatically saved to a file when I exit the program.*
+
+## 🎯Acceptance Criteria:
+- A file is created when the program exits that contains the to-do list items.
+- The file will be a ".txt" file
+- each line in the file will contain a single to-do item.
+
+## 🎓Know Before You Start
+The following resources/videos will help you get a better understanding of some of the basic Python concepts that you will use to complete this user story.
+- [Working with Files](https://youtu.be/uQ5BZht9L3A?t=5812) (~ 1 min)
+
+## 📋Steps
+
+In order to complete this user story you will need to complete the following tasks
+
+#### 1. Open Visual Studio Code
+- Go to your application directory and start visual studio code by typing `code .` in the terminal window and pressing enter.
+
+- Open the `app.py` file in the root of your project folder.
+
+
+
+#### 2. Update code to save to file on exit
+The one change that we will need to make to the code is to update the logic for the exit functionality. We will need to add code that will save the to-do list to a file when the user selects to exit the program. Add the following code to the `if` statement that checks if the user selected to exit the program (see code example below).
+
+>[!TIP]
+>You can use GitHub Copilot to make this code change. Use a prompt like *update to save todo list to file on exit*
+
+```python
+#user selected 'x' or 'X' - To Exit the program
+if choice == "X":
+ # Save the to-do list to a file
+ #**********THIS CODE ****************
+ with open("todo_list.txt", "w") as file:
+ for todo in todo_list:
+ file.write(f"{todo}\n")
+ #************************************
+ break
+```
+
+This code will open a file named `todo_list.txt` in the current application directory and write each item in the `todo_list` to the file. The `w` parameter in the `open` function tells Python to open the file in write mode. This will overwrite the file if it already exists. The `for` loop will iterate through each item in the `todo_list` and write it to the file. The `\n` character is used to add a new line to the file after each item is written. This will make the file easier to read when you open it in a text editor.
+
+
+
+#### 3. Run the application
+Now let's see this application in action. Open the terminal and navigate to the folder where your `app.py` file is located. Run the application by typing `python app.py` and pressing the enter key or simply click the play button in the top right corner of the Visual Studio Code window.
+
+- Add a few items to the list and then select 'X' to exit the program.
+- Within Visual studio code, you should now see a file named `todo_list.txt` in the same directory as your `app.py` file.
+- Open the `todo_list.txt` file in the same directory as your `app.py` file. You should see the items that you added to the list in the file.
+
+
+
+
+
+
+> [!NOTE]
+> 📄For the full source code for this exercise please see [here](/Track_2_ToDo_App/Sprint-01%20-%20Basic%20Application/src/app-s01-f02-us01/app.py).
+
+
+
+[🔼 Back **Workshop** Instructions ](/Track_2_ToDo_App/Workshop-Format.md) | [🔼 Back to **Hackathon** Sprint 1 ](../README.md#📖user-story-1---add-item-to-list) | [**◀ Previous user story**](/Track_2_ToDo_App/Sprint-01%20-%20Basic%20Application/Feature%201%20-%20Manage%20Todo%20List/User%20Story%202%20-%20Remove%20Item%20from%20List.md) | [**Next user story ▶**](User%20Story%202%20-%20Load%20To-Do%20List%20from%20File.md)
\ No newline at end of file
diff --git a/Track_2_ToDo_App/Sprint-01 - Basic Application/Feature 2 - Save To-Do List/User Story 2 - Load To-Do List from File.md b/Track_2_ToDo_App/Sprint-01 - Basic Application/Feature 2 - Save To-Do List/User Story 2 - Load To-Do List from File.md
new file mode 100644
index 00000000..078a7fbe
--- /dev/null
+++ b/Track_2_ToDo_App/Sprint-01 - Basic Application/Feature 2 - Save To-Do List/User Story 2 - Load To-Do List from File.md
@@ -0,0 +1,66 @@
+# 📖 Load To-Do items from a file - Step-by-Step
+⏲️ _Est. time to complete: 10 min._ ⏲️
+
+## User Story
+
+*As a user, I want to be able to have my to-do list automatically loaded from a file when I start the program.*
+
+## 🎯Acceptance Criteria:
+- Existing to-do list items from when I ran the program last are loaded into this program
+- The existing to-do list items will be a ".txt" file
+- each line in the file will contain a single to-do item.
+- if there is no file, then the program should load an empty collection
+
+## 🎓Know Before You Start
+The following resources/videos will help you get a better understanding of some of the basic Python concepts that you will use to complete this user story.
+- [Working with Files](https://youtu.be/uQ5BZht9L3A?t=5812) (~ 1 min) - Same video as from previous user story
+- [Exception Handling](https://www.youtube.com/watch?v=HQqqNBZosn8&list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6&index=17) (12:53 min)
+- [Exception Handling Demo](https://www.youtube.com/watch?v=LrRh-V-hYEc&list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6&index=18) (3:57 min)
+
+
+## 📋Steps
+
+In order to complete this user story you will need to complete the following tasks
+
+#### 1. Open Visual Studio Code
+- Go to your application directory and start visual studio code by typing `code .` in the terminal window and pressing enter.
+
+- Open the `app.py` file in the root of your project folder.
+
+
+
+#### 2. Update code to load to-do list from file on start
+The first change that we will need to make to the code is to update the logic for the start of the program. We will need to add code that will load the to-do list from a file when the program starts. Add the following code to the beginning of the program, right after the `todo_list = []` statement:
+
+
+
+>[!TIP]
+>You can ask GitHub Copilot to help here with this prompt *load todo list from todo_list.txt file*
+
+```python
+try:
+ with open("todo_list.txt", "r") as file:
+ for line in file:
+ todo_list.append(line.strip())
+except FileNotFoundError:
+ pass
+```
+
+This code will open a file named `todo_list.txt` in the current directory and read each line from the file. The `r` parameter in the `open` function tells Python to open the file in read mode. The `for` loop will iterate through each line in the file and add it to the `todo_list`. The `strip` function is used to remove any leading or trailing whitespace from the line before adding it to the `todo_list`. If the file does not exist, the `except FileNotFoundError` block will catch the error and the program will continue without loading any items.
+
+
+
+#### 3. Run the application
+Now let's see this application in action. Open the terminal and navigate to the folder where your `app.py` file is located. Run the application by typing `python app.py` and pressing the enter key or simply click the play button in the top right corner of the Visual Studio Code window.
+
+- When you start the program you should automatically see the list of to-do items that were previously saved in the file.
+
+
+
+ > [!NOTE]
+ > 📄For the full source code for this exercise please see [here](/Track_2_ToDo_App/Sprint-01%20-%20Basic%20Application/src/app-s01-f02-us02/app.py)
+
+
+
+
+[🔼 Back **Workshop** Instructions ](/Track_2_ToDo_App/Workshop-Format.md) | [🔼 Back to **Hackathon** Sprint 1 ](../README.md#📖user-story-1---add-item-to-list) | [**◀ Previous user story**](User%20Story%201%20-%20Save%20To-Do%20List%20to%20File.md) | [**Next user story** (in next sprint) ▶](/Track_2_ToDo_App/Sprint-02%20-%20Web%20Application/Feature%201%20-%20Web%20App%20Conversion/User%20Story%201%20-%20Convert%20To%20Web%20App.md)
\ No newline at end of file
diff --git a/Track_2_ToDo_App/Sprint-01 - Basic Application/README.md b/Track_2_ToDo_App/Sprint-01 - Basic Application/README.md
new file mode 100644
index 00000000..d1b64c0b
--- /dev/null
+++ b/Track_2_ToDo_App/Sprint-01 - Basic Application/README.md
@@ -0,0 +1,31 @@
+## Sprint 1 - Basic Application
+⏲️ _Est. time to complete: 30 min._ ⏲️
+
+This sprint is designed to help students build a basic To-Do application that can be used to store a local to-do list on your computer. The sprint will walk students through building a simple console application that will allow users to add, delete, and list tasks.
+
+> [!NOTE]
+> **🎓 Know before you start**
+> - [Development 101]()
+> - [What is Python?](https://www.youtube.com/watch?v=7XOhibxgBlQ&list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6&index=2) (3:10 min)
+> - [Python Extention for Visual Studio Code](https://www.youtube.com/watch?v=CXZYvNRIAKM&list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6&index=4) (2:49 min)
+>
+
+**📕Feature: Manage To-Do List**
+1. [**📖 Add Items to List**](/Track_2_ToDo_App/Sprint-01%20-%20Basic%20Application/Feature%201%20-%20Manage%20Todo%20List/User%20Story%201%20-%20Add%20Item%20to%20List.MD)
+2. [**📖 Remove Items from List**](/Track_2_ToDo_App/Sprint-01%20-%20Basic%20Application/Feature%201%20-%20Manage%20Todo%20List/User%20Story%202%20-%20Remove%20Item%20from%20List.md)
+
+**📕Feature: Save To-Do List**
+1. [**📖 Save List to File**](/Track_2_ToDo_App/Sprint-01%20-%20Basic%20Application/Feature%202%20-%20Save%20To-Do%20List/User%20Story%201%20-%20Save%20To-Do%20List%20to%20File.md
+)
+2. [**📖 Load List from File**](/Track_2_ToDo_App/Sprint-01%20-%20Basic%20Application/Feature%202%20-%20Save%20To-Do%20List/User%20Story%202%20-%20Load%20To-Do%20List%20from%20File.md)
+
+
+
+> [!NOTE]
+> This sprint is a reminder that not all code needs to be complex. Not every problem requires a web application or a mobile app. Sometimes a simple script will get the job done!
+
+
+
+[🔼 Workshop Home Page ](/Track_2_ToDo_App/Workshop-Format.md) | [◀ Previous Sprint](/Track_2_ToDo_App/Sprint-00%20-%20Environment%20Setup/readme.md) | [Next sprint ▶](/Track_2_ToDo_App/Sprint-02%20-%20Web%20Application/README.md)
+
+
diff --git a/Track_2_ToDo_App/Sprint-01 - Basic Application/images/EditCode-S1-F1-US01-01.png b/Track_2_ToDo_App/Sprint-01 - Basic Application/images/EditCode-S1-F1-US01-01.png
new file mode 100644
index 00000000..b73475a9
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-01 - Basic Application/images/EditCode-S1-F1-US01-01.png differ
diff --git a/Track_2_ToDo_App/Sprint-01 - Basic Application/images/EditCode-S1-F1-US02-01.png b/Track_2_ToDo_App/Sprint-01 - Basic Application/images/EditCode-S1-F1-US02-01.png
new file mode 100644
index 00000000..24bb836e
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-01 - Basic Application/images/EditCode-S1-F1-US02-01.png differ
diff --git a/Track_2_ToDo_App/Sprint-01 - Basic Application/images/EditCode-S1-F1-US02-02.png b/Track_2_ToDo_App/Sprint-01 - Basic Application/images/EditCode-S1-F1-US02-02.png
new file mode 100644
index 00000000..26e15d28
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-01 - Basic Application/images/EditCode-S1-F1-US02-02.png differ
diff --git a/Track_2_ToDo_App/Sprint-01 - Basic Application/images/FirstApp-S01-F01-US01-01.png b/Track_2_ToDo_App/Sprint-01 - Basic Application/images/FirstApp-S01-F01-US01-01.png
new file mode 100644
index 00000000..ad798145
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-01 - Basic Application/images/FirstApp-S01-F01-US01-01.png differ
diff --git a/Track_2_ToDo_App/Sprint-01 - Basic Application/images/InsertCode-S1-F2-US02-01.png b/Track_2_ToDo_App/Sprint-01 - Basic Application/images/InsertCode-S1-F2-US02-01.png
new file mode 100644
index 00000000..5bbaafdf
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-01 - Basic Application/images/InsertCode-S1-F2-US02-01.png differ
diff --git a/Track_2_ToDo_App/Sprint-01 - Basic Application/images/Need Screen Shot.png b/Track_2_ToDo_App/Sprint-01 - Basic Application/images/Need Screen Shot.png
new file mode 100644
index 00000000..4e151de8
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-01 - Basic Application/images/Need Screen Shot.png differ
diff --git a/Track_2_ToDo_App/Sprint-01 - Basic Application/images/NewFile-S01-F01-US01-01.png b/Track_2_ToDo_App/Sprint-01 - Basic Application/images/NewFile-S01-F01-US01-01.png
new file mode 100644
index 00000000..215279a6
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-01 - Basic Application/images/NewFile-S01-F01-US01-01.png differ
diff --git a/Track_2_ToDo_App/Sprint-01 - Basic Application/images/RunApp-S1-F1-US01-01.png b/Track_2_ToDo_App/Sprint-01 - Basic Application/images/RunApp-S1-F1-US01-01.png
new file mode 100644
index 00000000..36910201
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-01 - Basic Application/images/RunApp-S1-F1-US01-01.png differ
diff --git a/Track_2_ToDo_App/Sprint-01 - Basic Application/images/RunApp-S1-F1-US01-02.png b/Track_2_ToDo_App/Sprint-01 - Basic Application/images/RunApp-S1-F1-US01-02.png
new file mode 100644
index 00000000..310afec1
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-01 - Basic Application/images/RunApp-S1-F1-US01-02.png differ
diff --git a/Track_2_ToDo_App/Sprint-01 - Basic Application/images/RunApp-S1-F1-US01-03.png b/Track_2_ToDo_App/Sprint-01 - Basic Application/images/RunApp-S1-F1-US01-03.png
new file mode 100644
index 00000000..70256ffb
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-01 - Basic Application/images/RunApp-S1-F1-US01-03.png differ
diff --git a/Track_2_ToDo_App/Sprint-01 - Basic Application/images/RunApp-S1-F1-US02-01.png b/Track_2_ToDo_App/Sprint-01 - Basic Application/images/RunApp-S1-F1-US02-01.png
new file mode 100644
index 00000000..4ab3a8f4
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-01 - Basic Application/images/RunApp-S1-F1-US02-01.png differ
diff --git a/Track_2_ToDo_App/Sprint-01 - Basic Application/images/RunApp-S1-F2-US01-01.png b/Track_2_ToDo_App/Sprint-01 - Basic Application/images/RunApp-S1-F2-US01-01.png
new file mode 100644
index 00000000..80ce4f07
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-01 - Basic Application/images/RunApp-S1-F2-US01-01.png differ
diff --git a/Track_2_ToDo_App/Sprint-01 - Basic Application/images/newFile-S01-F01-US01-02.png b/Track_2_ToDo_App/Sprint-01 - Basic Application/images/newFile-S01-F01-US01-02.png
new file mode 100644
index 00000000..3f3ff941
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-01 - Basic Application/images/newFile-S01-F01-US01-02.png differ
diff --git a/Track_2_ToDo_App/Sprint-01 - Basic Application/images/outcome-S1-F1-US1.png b/Track_2_ToDo_App/Sprint-01 - Basic Application/images/outcome-S1-F1-US1.png
new file mode 100644
index 00000000..d90baa9c
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-01 - Basic Application/images/outcome-S1-F1-US1.png differ
diff --git a/Track_2_ToDo_App/Sprint-01 - Basic Application/images/outcome-S1-F1-US2.png b/Track_2_ToDo_App/Sprint-01 - Basic Application/images/outcome-S1-F1-US2.png
new file mode 100644
index 00000000..5a9935ad
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-01 - Basic Application/images/outcome-S1-F1-US2.png differ
diff --git a/Track_2_ToDo_App/Sprint-01 - Basic Application/src/README.md b/Track_2_ToDo_App/Sprint-01 - Basic Application/src/README.md
new file mode 100644
index 00000000..36ae29cf
--- /dev/null
+++ b/Track_2_ToDo_App/Sprint-01 - Basic Application/src/README.md
@@ -0,0 +1,8 @@
+# Sprint 1 - Source Code Directory
+This directory contains the completed source code after the end of each user story. The directory is structured as `app-s01-f01-us02` where
+- `s01` - represents the sprint number, in this case sprint 1
+- `f01` - represents the feature number, in this case feature 1
+- `us02` - represents the user story number, in this case user story 2
+
+> [!NOTE]
+> The code in the directory is the completed solution after the completion of that user story. Like many other things in life, there are many ways to solve a problem. The source code in these directories is just one solution to the problem and does not necessarily represent best practices for a given solution. In many cases we chose simplicity or readability over efficiency.
diff --git a/Track_2_ToDo_App/Sprint-01 - Basic Application/src/app-s01-f01-us01/app.py b/Track_2_ToDo_App/Sprint-01 - Basic Application/src/app-s01-f01-us01/app.py
new file mode 100644
index 00000000..12040cdd
--- /dev/null
+++ b/Track_2_ToDo_App/Sprint-01 - Basic Application/src/app-s01-f01-us01/app.py
@@ -0,0 +1,36 @@
+###############################################################################
+## Sprint 1: Basic Application
+## Feature 1: Create and Manage a To-Do List
+## User Story 1: Add Item to List
+###############################################################################
+
+todo_list = []
+
+#continue to loop and display menu until user selects to exit the program
+while True:
+ print() # Add a couple of blank lines
+ print()
+ print("To-do list: ") # Print the title of the list
+ for todo in todo_list: # Loop through existing to-do items
+ print(todo)
+
+ # Print the menu
+ print() # Add a of blank lines
+ print("Actions:")
+ print("A - Add to-do item")
+ print("X - Exit")
+ choice = input("Enter your choice (A or X): ")
+ choice = choice.upper() #converts the choice to uppercase
+
+ #user selected 'a' or 'A' - To Add an item to the list
+ if choice == "A":
+ todo = input("Enter the to-do item: ")
+ todo_list.append(todo)
+ continue #tells the program to go back to the start of the loop
+
+ #user selected 'x' or 'X' to exit program
+ if choice == "X":
+ break #tells the program to exit the loop
+
+ #user selected something else
+ print("Invalid choice")
diff --git a/Track_2_ToDo_App/Sprint-01 - Basic Application/src/app-s01-f01-us02/app.py b/Track_2_ToDo_App/Sprint-01 - Basic Application/src/app-s01-f01-us02/app.py
new file mode 100644
index 00000000..83e05b93
--- /dev/null
+++ b/Track_2_ToDo_App/Sprint-01 - Basic Application/src/app-s01-f01-us02/app.py
@@ -0,0 +1,48 @@
+###############################################################################
+## Sprint 1: Basic Application
+## Feature 1: Create and Manage a To-Do List
+## User Story 2: Remove Item from List
+###############################################################################
+
+todo_list = []
+
+#continue to loop and display menu until user selects to exit the program
+while True:
+ print() # Add a couple of blank lines
+ print()
+ print("To-do list: ") # Print the title of the list
+ item_number = 1
+ for todo in todo_list: # Loop through existing to-do items
+ print(f'{item_number}: {todo}')
+ item_number += 1
+
+# Print the menu
+ print() # Add a of blank lines
+ print("Actions:")
+ print("A - Add to-do item")
+ print("R - Remove to-do item")
+ print("X - Exit")
+ choice = input("Enter your choice (A, R, or X): ")
+ choice = choice.upper() #converts the choice to uppercase
+
+ #user selected 'a' or 'A' - To Add an item to the list
+ if choice == "A":
+ todo = input("Enter the to-do item: ")
+ todo_list.append(todo)
+ continue #tells the program to go back to the start of the loop
+
+ #user selected 'r' or 'R' - To Remove an item from the list
+ if choice == "R":
+ item_number = int(input("Enter the number of the item to remove: "))
+ if item_number > 0 and item_number <= len(todo_list):
+ todo_list.pop(item_number - 1)
+ else:
+ print("Invalid item number")
+ continue
+
+ #user 1 selected 'x' or 'X' to exit program
+ if choice == "X":
+ break #tells the program to exit the loop
+
+ #user selected something else
+ print("Invalid choice")
diff --git a/Track_2_ToDo_App/Sprint-01 - Basic Application/src/app-s01-f02-us01/app.py b/Track_2_ToDo_App/Sprint-01 - Basic Application/src/app-s01-f02-us01/app.py
new file mode 100644
index 00000000..988a1f33
--- /dev/null
+++ b/Track_2_ToDo_App/Sprint-01 - Basic Application/src/app-s01-f02-us01/app.py
@@ -0,0 +1,54 @@
+###############################################################################
+## Sprint 1: Basic Application
+## Feature 2: Persist To-Do List
+## User Story 1: Save To-Do List
+###############################################################################
+
+todo_list = []
+
+#continue to loop and display menu until user selects to exit the program
+while True:
+ print() # Add a couple of blank lines
+ print()
+ print("To-do list: ") # Print the title of the list
+ item_number = 1
+ for todo in todo_list: # Loop through existing to-do items
+ print(f'{item_number}: {todo}')
+ item_number += 1
+
+# Print the menu
+ print() # Add a of blank lines
+ print("Actions:")
+ print("A - Add to-do item")
+ print("R - Remove to-do item")
+ print("X - Exit")
+ choice = input("Enter your choice (A, R, or X): ")
+ choice = choice.upper() #converts the choice to uppercase
+
+ #user selected 'a' or 'A' - To Add an item to the list
+ if choice == "A":
+ todo = input("Enter the to-do item: ")
+ todo_list.append(todo)
+ continue #tells the program to go back to the start of the loop
+
+ #user selected 'r' or 'R' - To Remove an item from the list
+ if choice == "R":
+ item_number = int(input("Enter the number of the item to remove: "))
+ if item_number > 0 and item_number <= len(todo_list):
+ todo_list.pop(item_number - 1)
+ else:
+ print("Invalid item number")
+ continue
+
+ #user 1 selected 'x' or 'X' to exit program
+ if choice == "X":
+ #on exit save your current list to a file
+ print("Saving to-do list to file")
+ with open("todo_list.txt", "w") as file:
+ for todo in todo_list:
+ file.write(todo + "\n")
+
+ break #tells the program to exit the loop
+
+ #user selected something else
+ print("Invalid choice")
diff --git a/Track_2_ToDo_App/Sprint-01 - Basic Application/src/app-s01-f02-us02/app.py b/Track_2_ToDo_App/Sprint-01 - Basic Application/src/app-s01-f02-us02/app.py
new file mode 100644
index 00000000..d0a01b7a
--- /dev/null
+++ b/Track_2_ToDo_App/Sprint-01 - Basic Application/src/app-s01-f02-us02/app.py
@@ -0,0 +1,61 @@
+###############################################################################
+## Feature 2: Persist To-Do List
+## User Story 2: Load To-Do List
+###############################################################################
+
+todo_list = []
+
+# Load the to-do list from a file
+try:
+ with open("todo_list.txt") as file:
+ for line in file:
+ todo_list.append(line.strip())
+except FileNotFoundError:
+ pass #ignore the error if the file does not exist, simply start with an empty list
+
+#continue to loop and display menu until user selects to exit the program
+while True:
+ print() # Add a couple of blank lines
+ print()
+ print("To-do list: ") # Print the title of the list
+ item_number = 1
+ for todo in todo_list: # Loop through existing to-do items
+ print(f'{item_number}: {todo}')
+ item_number += 1
+
+# Print the menu
+ print() # Add a of blank lines
+ print("Actions:")
+ print("A - Add to-do item")
+ print("R - Remove to-do item")
+ print("X - Exit")
+ choice = input("Enter your choice (A, R, or X): ")
+ choice = choice.upper() #converts the choice to uppercase
+
+ #user selected 'a' or 'A' - To Add an item to the list
+ if choice == "A":
+ todo = input("Enter the to-do item: ")
+ todo_list.append(todo)
+ continue #tells the program to go back to the start of the loop
+
+ #user selected 'r' or 'R' - To Remove an item from the list
+ if choice == "R":
+ item_number = int(input("Enter the number of the item to remove: "))
+ if item_number > 0 and item_number <= len(todo_list):
+ todo_list.pop(item_number - 1)
+ else:
+ print("Invalid item number")
+ continue
+
+ #user 1 selected 'x' or 'X' to exit program
+ if choice == "X":
+ #on exit save your current list to a file
+ print("Saving to-do list to file")
+ with open("todo_list.txt", "w") as file:
+ for todo in todo_list:
+ file.write(todo + "\n")
+
+ break #tells the program to exit the loop
+
+ #user selected something else
+ print("Invalid choice")
diff --git a/Track_2_ToDo_App/Sprint-02 - Web Application/Feature 1 - Web App Conversion/User Story 1 - Convert To Web App.md b/Track_2_ToDo_App/Sprint-02 - Web Application/Feature 1 - Web App Conversion/User Story 1 - Convert To Web App.md
new file mode 100644
index 00000000..1f5fd00d
--- /dev/null
+++ b/Track_2_ToDo_App/Sprint-02 - Web Application/Feature 1 - Web App Conversion/User Story 1 - Convert To Web App.md
@@ -0,0 +1,180 @@
+# 📖 User Story: Convert to Web App - Step-by-Step
+⏲️ _Est. time to complete: 15 min._ ⏲️
+
+## User Story
+
+*As a user, I want to access the application through a web browser, so I can use it on any device with internet connectivity.*
+
+## 🎯Acceptance Criteria:
+- Users should be able to access the web app using common web browsers such as Chrome, Firefox, and Edge.
+- For this first step, only the ability to print out the saved to-do items is required. The ability to add and remove items will be added in the next user stories.
+- The application should have a user-friendly web interface. The interface should look something like this:
+
+ 
+
+## 🎓Know Before You Start
+no resources at this time
+
+
+## 📋Steps
+
+In order to complete this user story you will need to complete the following tasks
+
+### Install Web Framework
+The first step in converting the application to a web application is to install a web framework. We will be using **Flask** for this workshop. Flask is a lightweight web framework that is easy to use and perfect for small projects like this one.
+
+#### 1. Open Visual Studio Code
+Open Visual Studio Code and open the source code the folder with your completed solution from the end of Sprint 1 or if you prefer you can use the starting reference application from [here](/Track_2_ToDo_App/Sprint-01%20-%20Basic%20Application/src/app-s01-f02-us02/).
+
+
+
+#### 2. Setup Flask Environment
+To setup the Flask Environment if it is not already installed you can install it via pip from a terminal window in Visual Studio Code:
+
+```
+pip install flask
+```
+> [!NOTE]
+> Note if you setup the virtual environment through the sprint 0 instructions than Flask will already be installed, you can verify it by `pip list` int the terminal window and looking to see if the Flask module is installed
+
+
+
+### Convert the Application to a Web Application
+> [!TIP]
+> You can ask GitHub Copilot to convert a basic python file to a web app. It will generally work well at converting to a starting point that you can adjust and work with. Try it out with a prompt such as: *Convert this app to a flask based web app*
+
+#### 1. Add Flask to the Application
+We now need to update our application to include the Flask framework. Open `app.py` and import some important packages from Flask by adding the following to the very top of the file:
+
+```python
+from flask import Flask, render_template, request, redirect, url_for
+```
+
+Flask is the package that will allow you to create a web application. render_template is a function that will allow you to render an HTML file. request is a package that will allow you to handle requests from the user. redirect and url_for are packages that will allow you to redirect the user to a different page.
+
+
+
+#### 2. Import the os Package
+Next, we want to import the os package to handle file operations. Add the following to the top of the file right after the `from flask...` statement:
+
+```python
+import os
+```
+
+os is a package that will allow you to interact with the operating system. In this case, you will use it to find the current directory of the application so that we know where to store the file.
+
+
+
+
+#### 3. Initialize the Flask App
+To use the Flask framework you will need to initialize the Flask app. To do this, add the following right after the `import os` statement in step 2:
+
+```python
+app = Flask(__name__)
+```
+
+
+
+#### 4. Get location of the to-do list file
+Since this app will be running as a web application we want to make sure that we load the to-do list from the correct location. To do this, let's create a variable to find the current directory in which this web application is running as well as create the variable to store were the to-do list will be stored. Put this code right underneath your app initialization:
+
+```python
+basedir = os.path.abspath(os.path.dirname(__file__))
+todo_file = os.path.join(basedir, 'todo_list.txt')
+```
+
+
+
+#### 5. Load the to-do list from the file
+We now need to make sure that we are loading the file from the right directory, replace the `with open(...)` statement in the file with the following code:
+
+```python
+with open(todo_file, "r") as file:
+```
+
+This code replaces the prevously hard-code file name with the variable `todo_file` that we created in the earlier sprint to make sure that we are loading from the right location.
+
+
+
+#### 6. Create a route for the homepage
+Now that we are using the Flask Framework we will also need to define the entry point for the application on the back-end server. You do this by creating "routes". Routes are the URL paths that the user can access in the web application. You will need to define a route for the homepage. To do this, add the following code snippet below to replace ALL of the code starting with the `while True:` statement all the way to the end of the file. This code is no longer needed for the web application.
+
+
+
+with the following code:
+
+```python
+@app.route("/")
+def index():
+ with open(todo_file, "r") as file:
+ todo_list = file.read().splitlines()
+ return render_template("index.html", todo_list=todo_list)
+```
+
+Routes are defined using the @app.route decorator. This decorator tells Flask that the function below it is a route. In this case, the route is the homepage ("/"). The function below the decorator is called index. This function will read the todo_list.txt file and pass the todo_list variable to the index.html file.
+
+
+
+#### 7. Create Application starting point
+Finally, to enable the app to run you need to add this code to the bottom of the file:
+
+```python
+if __name__ == "__main__":
+ app.run(debug=True)
+```
+
+This code will run the Flask app when you run the Python script. The debug=True parameter will allow you to see any errors in the browser when you run the app.
+
+> [!NOTE]
+> In a production environment you would set Debug=False so that end-users would NOT see a stack trace when something fails.
+
+
+
+#### 8. Create the User Interface for the Web Application
+At this point, you have the backend functionality to run the Flask app, but you need to define a front end page to render the view. To do this you will need to define the html to display when the homepage route is engaged.
+
+Create a ```index.html``` file in a subfolder called ```templates```.
+
+
+
+Add the following code to this index.html file:
+
+```html
+
+
+
+ To-Do List
+
+
+
To-Do List
+
+ {% for todo in todo_list %}
+
{{ todo }}
+ {% endfor %}
+
+
+
+```
+
+This code will create a basic HTML page that will display the to-do list items in an ordered list. The `{% for todo in todo_list %}` loop will iterate through each item in the todo_list and display it as a list item. The `{{ todo }}` will display the item in the list. The use of `{% ... %}` in the HTML are used to render dynamic content for a flash application and are called Jinja2 templates.
+
+
+
+#### 9. Run the Application
+You can now test this out by running ```python app.py```. This will launch a browser and show the home page (or you can browse to http://localhost:5000). You can add tasks to a to-do_list.txt file to see them display on the page.
+
+
+
+🎉 Congratulations! You have now updated your basic application to the most basic web application. In the next set of user stories we will add back in the functionality to add a to-do list item as well as delete one.
+
+
+
+> [!NOTE]
+> 📄For the full source code for this exercise please see [here](/Track_2_ToDo_App/Sprint-02%20-%20Web%20Application/src/app-s02-f01-us01/).
+
+
+
+[🔼 Back **Workshop** Instructions ](/Track_2_ToDo_App/Workshop-Format.md) | [🔼 Back to **Hackathon** Sprint 2 ](/Track_2_ToDo_App/Sprint-02%20-%20Web%20Application/README.md) | [**◀ Previous user story** (in previous sprint)](/Track_2_ToDo_App/Sprint-01%20-%20Basic%20Application/Feature%202%20-%20Save%20To-Do%20List/User%20Story%202%20-%20Load%20To-Do%20List%20from%20File.md) | [**Next user story** ▶](User%20Story%202%20-%20Add%20Item%20through%20Web%20Form.md)
+
+
+
diff --git a/Track_2_ToDo_App/Sprint-02 - Web Application/Feature 1 - Web App Conversion/User Story 2 - Add Item through Web Form.md b/Track_2_ToDo_App/Sprint-02 - Web Application/Feature 1 - Web App Conversion/User Story 2 - Add Item through Web Form.md
new file mode 100644
index 00000000..8787b0e7
--- /dev/null
+++ b/Track_2_ToDo_App/Sprint-02 - Web Application/Feature 1 - Web App Conversion/User Story 2 - Add Item through Web Form.md
@@ -0,0 +1,118 @@
+# 📖 User Story: Add Item through Web Form - Step-by-Step
+⏲️ _Est. time to complete: 10 min._ ⏲️
+
+## User Story
+
+*As a user, I want to input tasks through a web form, so I can interact with the application easily.*
+
+## 🎯Acceptance Criteria:
+- The web app should provide a form for users to input data.
+- The form should simply capture the name of the to-do item, similar to the original terminal app for a seamless transition.
+- The application should add the task to the list when the form is submitted.
+- The interface should look something like this:
+
+ 
+
+## 🎓Know Before You Start
+no resources at this time
+
+## 📋Steps
+
+In order to complete this user story you will need to complete the following tasks
+
+### Updating the Web Application Frontend
+The first set of changes that we will need to make is to update the web application's user interface to allow the user to add new items via the web page.
+
+#### 1. Open Visual Studio Code
+Open Visual Studio Code and open the source code the folder with your completed solution from the previous user story if you prefer you can use the starting reference application from [here](/Track_2_ToDo_App/Sprint-02%20-%20Web%20Application/src/app-s02-f01-us01/)
+
+
+#### 2. Update the User interface to Add New To-Do Items
+To do this, we need to update the `index.html` to add a basic form to allow a user to add tasks and call the backend server to add it to the file. Your HTML should be updated to look like this:
+
+>[!TIP]
+>You can use GitHub Copilot with a prompt like *add form to add task with add route*
+
+```html
+
+
+
+ To-Do List
+
+
+
To-Do List
+
+ {% for todo in todo_list %}
+
{{ todo }}
+ {% endfor %}
+
+
+
+
+```
+The code above creates a simple form that allows users to input a to-do item. When the form is submitted, a POST request is sent to the "/add" URL, which will trigger functionality in the back-end to save the to-do item to a file. A POST request sends all of the data in the form to the back-end server.
+
+
+
+### Update the Web Application Backend
+The next set of changes that we will need to make is to update the python code to enable the backend server to handle adding new to-do items and save them to the file.
+
+
+#### 1. Update Web Server to Handle New To-Do Items
+First, we need to update the python code to enable the backend server to handle new to-do items. This will be accomplished by adding a new route to support this functionality. To do this, open up the `app.py` file and add the following right after the homepage route/index function:
+
+```python
+@app.route("/add", methods=["POST"])
+def add_todo():
+ todo = request.form["todo"]
+ todo_list.append(todo)
+ save_todo_list()
+ return redirect(url_for("index"))
+```
+
+The code above creates a new route that listens for POST requests to the "/add" URL. When a POST request is received, the function add_todo is called. This function retrieves the value of the "todo" form field from the request, appends it to the todo_list, saves it to the file and then redirects the user back to the index page.
+
+Note that the save_todo_list() function is not yet implemented but we will add it in the next step.
+
+
+
+#### 2. Add Function to Save To-Do List
+To complete the back-end server, we need the ability to save these tasks to our file so they persist between sessions (similar to the save functionlity we had in Sprint1). To do this we will implement a function that will write the tasks to the file right after the `add_todo()` function:
+
+>[!TIP]
+>You can use GitHub Copilot to create this with a prompt such as *Add a route to save todo list items*
+
+```python
+def save_todo_list():
+ with open("todo_list.txt", "w") as file:
+ for todo in todo_list:
+ file.write(todo + "\n")
+```
+
+
+
+#### 3. Run the Application
+Run the app by running ```python app.py``` in the terminal and browse to the local site. Test it out by adding a tasks.
+
+
+
+
+
+🎉 Congratulations! You have now updated your basic web application to include a form to allow adding tasks and persisting them a file.
+
+
+
+> [!NOTE]
+> 📄For the full source code for this exercise please see [here](/Track_2_ToDo_App/Sprint-02%20-%20Web%20Application/src/app-s02-f01-us02/).
+
+
+
+[🔼 Back **Workshop** Instructions ](/Track_2_ToDo_App/Workshop-Format.md) | [🔼 Back to **Hackathon** Sprint 2 ](/Track_2_ToDo_App/Sprint-02%20-%20Web%20Application/README.md) | [**◀ Previous user story**](User%20Story%201%20-%20Convert%20To%20Web%20App.md) | [**Next user story** ▶](User%20Story%203%20-%20Remove%20Item%20through%20Web%20Form.md)
+
+
+
+
diff --git a/Track_2_ToDo_App/Sprint-02 - Web Application/Feature 1 - Web App Conversion/User Story 3 - Remove Item through Web Form.md b/Track_2_ToDo_App/Sprint-02 - Web Application/Feature 1 - Web App Conversion/User Story 3 - Remove Item through Web Form.md
new file mode 100644
index 00000000..76ba3886
--- /dev/null
+++ b/Track_2_ToDo_App/Sprint-02 - Web Application/Feature 1 - Web App Conversion/User Story 3 - Remove Item through Web Form.md
@@ -0,0 +1,102 @@
+# 📖 User Story: Remove Item through Web Form - User Story: Step-by-Step
+⏲️ _Est. time to complete: 10 min._ ⏲️
+
+## User Story
+
+*As a user, I want to input tasks through a web form, so I can interact with the application easily.*
+
+## Acceptance Criteria:
+- The web app should provide a form for users to input data.
+- The web form should capture the task number of the item that the user would like to remove.
+- The application should remove the task from the list when the form is submitted.
+- The interface should look something like this:
+
+ 
+
+## 📋Steps
+
+In order to complete this user story you will need to complete the following tasks
+
+### Open Visual Studio Code
+Open Visual Studio Code and open the source code the folder with your completed solution from the previous user story if you prefer you can use the starting reference application from [here](/Track_2_ToDo_App/Sprint-02%20-%20Web%20Application/src/app-s02-f01-us02/)
+
+### Updating the Web Application Frontend
+First we need to update the web application's user interface to allow the user to remove items via the web page.
+
+#### 1. Update the user interface
+We now need to update the `index.html` to add a basic form to allow a user to remove tasks and call the backend server functionality that we defined in the previous step. Your HTML should be updated to look like this:
+
+```html
+
+
+
+ To-Do List
+
+
+
To-Do List
+
+ {% for todo in todo_list %}
+
{{ todo }}
+ {% endfor %}
+
+
+
+
+
+```
+
+the code above creates a second form that allows users to input a task number to remove. When the form is submitted, a POST request is sent to the "/remove" URL, which triggers the remove_todo function in the Python code.
+
+
+### Updating the Web Application Backend
+Similar to the steps in the last sprint to enable the server to handle new to-items, we need to update the python code to enable the backend server to handle the removal of to-do items.
+
+#### 1. Add a Remove Route
+First, we need to add a remove route to enable a user to remove tasks. Add the following code just below the add route code:
+
+>[!TIP]
+>You can use GitHub Copilot to add this function with a prompt such as *add a route to remove item based on item number*
+
+```python
+@app.route("/remove", methods=["POST"])
+def remove_todo():
+ item_number = int(request.form["item_number"])
+ if 0 < item_number <= len(todo_list):
+ todo_list.pop(item_number - 1)
+ save_todo_list()
+ return redirect(url_for("index"))
+```
+
+The code above creates a new route that listens for POST requests to the "/remove" URL. When a POST request is received, the function remove_todo is called. This function retrieves the value of the "item_number" form field from the request, converts it to an integer, and then removes the task at the specified index from the todo_list. Note again, that python collections are zero-based while this list is one-based, so we need to subtract 1 from the item_number to get the correct index. The save_todo_list function is then called to save the updated list to the file, and the user is redirected back to the index page.
+
+
+
+
+#### 2. Run the Application
+Run the app by running ```python app.py``` in the terminal and browse to the local site. Test it out by adding a task and then removing a task.
+
+Your application should look something like this:
+
+
+
+
+
+🎉 Congratulations! You have now updated your basic web application to include a form to allow adding AND removing tasks.
+
+
+
+> [!NOTE]
+> 📄For the full source code for this exercise please see [here](/Track_2_ToDo_App/Sprint-02%20-%20Web%20Application/src/app-s02-f01-us03/).
+
+
+[🔼 Back **Workshop** Instructions ](/Track_2_ToDo_App/Workshop-Format.md) | [🔼 Back to **Hackathon** Sprint 2 ](/Track_2_ToDo_App/Sprint-02%20-%20Web%20Application/README.md) | [**◀ Previous user story**](User%20Story%202%20-%20Add%20Item%20through%20Web%20Form.md) | [**Next user story** ▶](/Track_2_ToDo_App/Sprint-02%20-%20Web%20Application/Feature%202%20-%20Basic%20Styling/User%20Story%201%20-%20Add%20Basic%20Styling%20to%20the%20Web%20App.md)
+
+
diff --git a/Track_2_ToDo_App/Sprint-02 - Web Application/Feature 2 - Basic Styling/User Story 1 - Add Basic Styling to the Web App.md b/Track_2_ToDo_App/Sprint-02 - Web Application/Feature 2 - Basic Styling/User Story 1 - Add Basic Styling to the Web App.md
new file mode 100644
index 00000000..657fe010
--- /dev/null
+++ b/Track_2_ToDo_App/Sprint-02 - Web Application/Feature 2 - Basic Styling/User Story 1 - Add Basic Styling to the Web App.md
@@ -0,0 +1,101 @@
+# 📖 User Story: Add Basic Styling to the Web App - Step-by-Step
+⏲️ _Est. time to complete: 10 min._ ⏲️
+
+## User Story
+
+*As a user, I want to have a basic stylized interface to look and feel more like a proper web app*
+
+## Acceptance Criteria:
+- The web app should have some basic style features to look like a modern web application. The interface should look something like this:
+
+ 
+
+## 📋Steps
+
+In order to complete this user story you will need to complete the following tasks
+
+### Open Visual Studio Code
+Open Visual Studio Code and open the source code the folder with your completed solution from the previous user story if you prefer you can use the starting reference application from [here](/Track_2_ToDo_App/Sprint-02%20-%20Web%20Application/src/app-s02-f01-us03/)
+
+### Updating the Web Application Frontend
+
+#### 1. Add Bootstrap to the Application
+When it come to creating a modern web application using modern styling, the bootstrap framework has become one of the most popular choices. We are going to use bootstrap for some basic styling. Go to https://getbootstrap.com/ and get the Include via CDN link. Add this link in between the `` tags in your `index.html` as so:
+
+```html
+
+ To-Do List
+
+
+```
+
+> [!NOTE]
+> Bootstrap is a popular CSS framework that provides a wide range of styles and components for building modern web applications. By including the Bootstrap CSS file in your HTML, you can easily apply these styles to your web app.
+
+
+
+#### 2. Update the HTML to use Bootstrap classes
+To take advantage of bootstrap we will need to make some changes to our HTML. Replace the content of the `` in the `index.html` file with the following code:
+
+>[!TIP]
+>You can highlight the body code and ask Copilot to update to use bootstrap with a prompt like *update to use bootstrap styling*
+
+```html
+
+
+
To-Do List
+
+
+
+ {% for todo in todo_list %}
+
{{ todo }}
+ {% endfor %}
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+The code above uses Bootstrap classes to style the elements on the page. The container class creates a centered container for the content, while the text-center class centers the heading. The list-group and list-group-item classes create a styled list for the to-do items. The form-group and form-control classes style the form elements, and the btn and btn-primary classes style the buttons.
+
+
+
+#### 3 Run the Application
+Run the app by running ```python app.py``` in the terminal and browse to the local site. It should now look something like this:
+
+
+
+
+
+🎉 Congratulations! You have now updated your web application to have some basic styling. This will serve as a foundation for the rest of the workshops.
+
+
+
+> [!NOTE]
+> 📄For the full source code for this exercise please see [here](/Track_2_ToDo_App/Sprint-02%20-%20Web%20Application/src/app-s02-f02-us01/).
+
+
+[🔼 Back **Workshop** Instructions ](/Track_2_ToDo_App/Workshop-Format.md) | [🔼 Back to **Hackathon** Sprint 2 ](/Track_2_ToDo_App/Sprint-02%20-%20Web%20Application/README.md) | [**◀ Previous user story**](/Track_2_ToDo_App/Sprint-02%20-%20Web%20Application/Feature%201%20-%20Web%20App%20Conversion/User%20Story%203%20-%20Remove%20Item%20through%20Web%20Form.md) | [**Next user story** ▶](User%20Story%202%20-%20Personalize%20Website.md)
+
+
+
diff --git a/Track_2_ToDo_App/Sprint-02 - Web Application/Feature 2 - Basic Styling/User Story 2 - Personalize Website.md b/Track_2_ToDo_App/Sprint-02 - Web Application/Feature 2 - Basic Styling/User Story 2 - Personalize Website.md
new file mode 100644
index 00000000..ec5a23b0
--- /dev/null
+++ b/Track_2_ToDo_App/Sprint-02 - Web Application/Feature 2 - Basic Styling/User Story 2 - Personalize Website.md
@@ -0,0 +1,196 @@
+# 📖 User Story: Personalize Web Application - Step-by-Step
+⏲️ _Est. time to complete: 10 min._ ⏲️
+
+## User Story
+
+*As a user, I want to have a basic stylized interface to look and feel more like a proper web app*
+
+## Acceptance Criteria:
+- The web app should have a custom title that reflects the user's preferences.
+- The web app should have a custom color scheme that reflects the user's preferences.
+- The web app should have a background picture for the website.
+- The web app should have a custom favicon that shows up in the browser tab
+- The interface should look something like this:
+
+ 
+
+## 📋Steps
+
+In order to complete this user story you will need to complete the following tasks
+
+### Open Visual Studio Code
+Open Visual Studio Code and open the source code the folder with your completed solution from the previous user story if you prefer you can use the starting reference application from [here](/Track_2_ToDo_App/Sprint-02%20-%20Web%20Application/src/app-s02-f02-us01/)
+
+### Updating Titles
+
+#### 1. Customize the Title
+We first will customize the title of the web application. Go into your `index.html` file and update the title tag to reflect the a title that is unique to you. For example, you can change the title to "My To-Do List" or "Sarah's To-Do List" or whatever you like by updating the title tag as follows: Please feel free to use any title you like that represents what you would like to call the application.
+
+```html
+
+ My To-Do List
+
+
+```
+
+The title tag in the HTML document sets the title of the web page that appears in the browser tab. By customizing the title, you can provide a personalized touch to the web app.
+
+
+
+#### 2. Customize the Heading
+Let's also change the name of the web app that is displayed as part of the page. Replace the `
...
` tag with the following code: Again, please feel free to use any title you like that represents what you would like to call the application.
+
+```html
+
+
+
+
My To-Do List
+
+
+```
+This will change the heading of the web app to "My To-Do List" and provide a more personalized experience for the user. The classes `h-100`, `p-5`, `bg-body-tertiary`, and `border rounded-3` are Bootstrap classes that add padding, background color, and border to the heading.
+
+
+
+### Customize Color Scheme
+In this section, we will customize the color scheme of the web app to reflect the user's preferences.
+
+#### 1. Create a Custom CSS File
+To do this we will first need to add a custom CSS file. Create a new file called `style.css` in the `static/css` folder of your application. If these folders do not exist you will need to create them first.
+
+
+
+#### 2. Add Custom Color Scheme
+Add the following code to the `style.css` file to define a custom color scheme for the web app:
+
+```css
+body {
+ background-color: blue;
+ color: white;
+ font-family: Arial, sans-serif;
+}
+
+h1 {
+ color: blue;
+}
+```
+
+This code sets the background color of the body to light blue and the font color to white. It also sets the font color of the heading to blue to ensure that it is visible against the container background color. You can experiment with different colors and styles to create a custom color scheme that reflects your preferences.
+
+
+
+#### 3. Link Custom CSS File to the HTML Document
+Link the custom CSS file to the HTML document by adding the following code to the `` tag in your index.html file right after the link to the bootstrap CSS file:
+
+```html
+
+```
+
+This code links the custom CSS file to the HTML document, allowing you to apply the custom color scheme to the web app. The `url_for('static', filename='css/style.css')` function generates the URL for the static file based on the file name provided.
+
+
+
+#### 4. Run the Application
+Give it a try! Open the web app in your browser and see the changes you made. You should see the updated title, heading, and color scheme reflecting the user's preferences.
+
+
+
+Feel free to experiment with different colors and styles to create a personalized look and feel for the web app.
+
+
+
+### Add Background Picture
+In this section, we will add a background picture to the web app to enhance the visual appeal of the user interface.
+
+#### 1. Create or Use a Background Picture
+Next, let's add a background picture to the web app. You can use the existing picture that we have pre-created using [Microsoft Designer](https://designer.microsoft.com/) (which has been generated by AI using DALL-E) and can be seen below or if you like you can create a picture of your own by also taking advantage of generative AI.
+
+> [!NOTE]
+> To create your own image using **Microsoft Designer** please follow the instructions [**here**](./Using%20Microsoft%20Designer.md)
+
+
+
+
+
+#### 2. Save the Background Picture
+Whether you created your own picture or are using the premade background picture, you will need to save the image to the `static/images` folder of your application. If the folder does not exist you will need to create it first. Also make sure that you name the file correctly, in this case, the file is named `Designer02.jpeg` to match the name we will be using in the CSS file.
+
+
+
+#### 3. Update the CSS File to include the Background Picture
+Replace the code in your`styles.css` file with the following code to set the background image of the body:
+
+```css
+body {
+ color: darkslategray; /* default font color */
+ font-family: Arial, sans-serif;
+ background-image: url("../images/Designer02.jpeg");
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size:cover;
+}
+
+h1 {
+ color: darkgray; /* font for the h1 header*/
+}
+
+.list-group-item {
+ color: #333; /* dark grey */
+}
+```
+
+This code sets the background image of the body to the image you saved in the `static/images` folder. The `background-image` property specifies the URL of the image, and the `background-size: cover;` property ensures that the image covers the entire background. The `background-position` property centers the image, and the `background-repeat: no-repeat;` property prevents the image from repeating.
+
+Note that this code also sets the font color of the list items to dark grey to ensure that they are visible against the background image. The title and body font color are set to white to ensure that they are visible against the background image.
+
+You can experiment with different colors and styles to create a custom look and feel for the web app. You can also change
+
+
+
+#### 4. Run the Application
+Save the changes to the `styles.css` file and refresh the web app in your browser. You should see the background image displayed on the web app, providing a more visually appealing experience for the user.
+
+
+
+
+
+### Add Custom Favicon
+In this section, we will add a custom favicon to the web app to enhance the user experience. The favicon is a small icon that appears in the browser tab next to the title of the web page.
+
+#### 1. Add a Custom Favicon to the application
+Finally, let's add a custom favicon to the web app. You can create a custom favicon using an online favicon generator or by using an image editing tool like Photoshop or GIMP. For this exercise, you can use the favicon provided in the `images` folder of the source code. Please copy the `favicon.ico` from [**here**](/Track_2_ToDo_App/Sprint-02%20-%20Web%20Application/src/app-s02-f02-us02/static/images) file to the `static/images` folder of your application. If the folder does not exist you will need to create it first.
+
+
+
+
+
+#### 2. Update the HTML Document to Include the Favicon
+You will need to update the `index.html` file to include the favicon. Add the following code to the `` tag in your `index.html` file:
+
+```html
+
+```
+
+This code links the favicon image to the HTML document, allowing you to display a custom icon in the browser tab. The `url_for('static', filename='images/favicon.png')` function generates the URL for the favicon image based on the file name provided.
+
+
+
+#### 3. Run the Application
+Save the changes to the `index.html` file and refresh the web app in your browser. You should see the custom favicon displayed in the browser tab next to the title of the web page.
+
+
+
+
+
+🎉 Congratulations! You have now updated your web application to have some a personalized look and feel with a custom title, color scheme, background picture, and favicon. This will provide a more engaging and visually appealing experience for the user.
+
+
+
+> [!NOTE]
+> 📄For the full source code for this exercise please see [here](/Track_2_ToDo_App/Sprint-02%20-%20Web%20Application/src/app-s02-f02-us02/).
+
+
+[🔼 Back **Workshop** Instructions ](/Track_2_ToDo_App/Workshop-Format.md) | [🔼 Back to **Hackathon** Sprint 2 ](/Track_2_ToDo_App/Sprint-02%20-%20Web%20Application/README.md) | [**◀ Previous user story**](User%20Story%201%20-%20Add%20Basic%20Styling%20to%20the%20Web%20App.md) | [**Next user story** (in next sprint) ▶](/Track_2_ToDo_App/Sprint-03%20-%20Database%20Integration/Features%201%20-%20Shift%20task%20storage%20to%20database/User%20Story%201%20-%20Move%20from%20File%20Storage%20to%20database.md)
+
+
+
diff --git a/Track_2_ToDo_App/Sprint-02 - Web Application/Feature 2 - Basic Styling/Using Microsoft Designer.md b/Track_2_ToDo_App/Sprint-02 - Web Application/Feature 2 - Basic Styling/Using Microsoft Designer.md
new file mode 100644
index 00000000..520f12b0
--- /dev/null
+++ b/Track_2_ToDo_App/Sprint-02 - Web Application/Feature 2 - Basic Styling/Using Microsoft Designer.md
@@ -0,0 +1,65 @@
+# 📖 Using Microsoft Designer to create a background image - Step-by-Step
+⏲️ _Est. time to complete: 15 min._ ⏲️
+
+## What Needs to Done
+In this step-by-step guide, you will learn how to use Microsoft Designer to create a background image for your web application.
+
+## 📋 Steps
+
+In order to complete this user story you will need to complete the following tasks:
+
+#### 1. Open Microsoft Designer
+Open Microsoft Designer going to [**https://designer.microsoft.com**](https://designer.microsoft.com) in your browser. You should get a web page that looks something like this:
+
+
+
+
+
+#### 2. Pick an Image
+Click on one of the pictures. In this case I am clicking on the Easter Bunny.
+
+
+
+
+
+You will then see a screen that looks like this. You can simply edit some of the fields that they are showing or you can completely customize the text. For this example I clicked on the ```Edit Entire Prompt``` link to make changes to the image.
+
+
+
+
+
+#### 3. Edit the Prompt
+That will make all of the text editable. Like below.
+
+
+
+I then modified that prompt with a few variations to try and make it fit this scenario. However, you should feel free to tweak the prompt as much as you want, or just start with a fresh prompt. Not the red underlines attempt to show the changes that I made to the prompt.
+
+
+
+
+
+#### 4. Generate the Image
+6. Click on the `Generate` button and within a few minutes you should be give a few images that were created from your prompt. Here are a few examples of what I was given.
+
+
+
+
+
+#### 5. Download the Image
+I decided that I wanted the picture on the right, so I simply clicked on it and was presented with this page.
+
+
+
+I then clicked on the `Download` button which presents another set of options. I hit the `Download` button again (the one that the red arrow is pointing to in the picture) and this will save it to the default `Download` location on your computer. Navigate to that folder and then move it to the `static/images` folder of your application. Be aware of the name as you will need to update the .css file to point to the new image.
+
+
+
+
+> [!NOTE]
+> the image generated here is different that the one that we used in our step-by-step guide as the instructions for this step were simply created at a different time than when we created the first robot picture.
+
+
+
+
+[🔼 Back Personalize Web Application User Story ](./User%20Story%202%20-%20Personalize%20Website.md)
\ No newline at end of file
diff --git a/Track_2_ToDo_App/Sprint-02 - Web Application/README.md b/Track_2_ToDo_App/Sprint-02 - Web Application/README.md
new file mode 100644
index 00000000..4845da18
--- /dev/null
+++ b/Track_2_ToDo_App/Sprint-02 - Web Application/README.md
@@ -0,0 +1,21 @@
+# Sprint 2: Building a Web Application
+⏲️ _Est. time to complete: 60 min._ ⏲️
+
+This sprint is designed to help students build a web application by evolving the to-do application from sprint 1. The sprint will walk students through building a simple web application that will allow users to add, delete, and list tasks.
+
+> [!NOTE]
+> **🎓 Know before you start**
+> - **to-do**: Web Apps Explained - Basics of Building a Web App\>
+
+**📕Feature: Web App Conversion**
+1. [**📖 Convert Console App to Web App**](/Track_2_ToDo_App/Sprint-02%20-%20Web%20Application/Feature%201%20-%20Web%20App%20Conversion/User%20Story%201%20-%20Convert%20To%20Web%20App.md)
+2. [**📖 Add Item through Web Form**](/Track_2_ToDo_App/Sprint-02%20-%20Web%20Application/Feature%201%20-%20Web%20App%20Conversion/User%20Story%202%20-%20Add%20Item%20through%20Web%20Form.md)
+3. [**📖 Remove Item through Web Form**](/Track_2_ToDo_App/Sprint-02%20-%20Web%20Application/Feature%201%20-%20Web%20App%20Conversion/User%20Story%203%20-%20Remove%20Item%20through%20Web%20Form.md)
+
+**📕Feature: Basic Styling**
+1. [**📖 Add Basic Styling to Web App**](/Track_2_ToDo_App/Sprint-02%20-%20Web%20Application/Feature%202%20-%20Basic%20Styling/User%20Story%201%20-%20Add%20Basic%20Styling%20to%20the%20Web%20App.md)
+2. [**📖 Personalize Website**](/Track_2_ToDo_App/Sprint-02%20-%20Web%20Application/Feature%202%20-%20Basic%20Styling/User%20Story%202%20-%20Personalize%20Website.md)
+
+
+[🔼 Hackathon Home Page ](/Track_2_ToDo_App/README.md) | [◀ Previous Sprint](/Track_2_ToDo_App/Sprint-01%20-%20Basic%20Application/README.md) | [Next sprint ▶](/Track_2_ToDo_App/Sprint-03%20-%20Database%20Integration/README.md)
+
diff --git a/Track_2_ToDo_App/Sprint-02 - Web Application/images/CopyImage-S2-F2-US2-01.png b/Track_2_ToDo_App/Sprint-02 - Web Application/images/CopyImage-S2-F2-US2-01.png
new file mode 100644
index 00000000..e59b11e9
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-02 - Web Application/images/CopyImage-S2-F2-US2-01.png differ
diff --git a/Track_2_ToDo_App/Sprint-02 - Web Application/images/Directory01.png b/Track_2_ToDo_App/Sprint-02 - Web Application/images/Directory01.png
new file mode 100644
index 00000000..e3678874
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-02 - Web Application/images/Directory01.png differ
diff --git a/Track_2_ToDo_App/Sprint-02 - Web Application/images/NewFile-S2-F2-US2-01.png b/Track_2_ToDo_App/Sprint-02 - Web Application/images/NewFile-S2-F2-US2-01.png
new file mode 100644
index 00000000..a59fba5a
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-02 - Web Application/images/NewFile-S2-F2-US2-01.png differ
diff --git a/Track_2_ToDo_App/Sprint-02 - Web Application/images/ReplaceCode-S2-F1-US01-01.png b/Track_2_ToDo_App/Sprint-02 - Web Application/images/ReplaceCode-S2-F1-US01-01.png
new file mode 100644
index 00000000..dea12a77
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-02 - Web Application/images/ReplaceCode-S2-F1-US01-01.png differ
diff --git a/Track_2_ToDo_App/Sprint-02 - Web Application/images/RunApp-S2-F2-US2-01.png b/Track_2_ToDo_App/Sprint-02 - Web Application/images/RunApp-S2-F2-US2-01.png
new file mode 100644
index 00000000..5f799835
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-02 - Web Application/images/RunApp-S2-F2-US2-01.png differ
diff --git a/Track_2_ToDo_App/Sprint-02 - Web Application/images/RunApp-S2-F2-US2-02.png b/Track_2_ToDo_App/Sprint-02 - Web Application/images/RunApp-S2-F2-US2-02.png
new file mode 100644
index 00000000..253239fd
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-02 - Web Application/images/RunApp-S2-F2-US2-02.png differ
diff --git a/Track_2_ToDo_App/Sprint-02 - Web Application/images/RunApp-S2-F2-US2-03.png b/Track_2_ToDo_App/Sprint-02 - Web Application/images/RunApp-S2-F2-US2-03.png
new file mode 100644
index 00000000..e4387262
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-02 - Web Application/images/RunApp-S2-F2-US2-03.png differ
diff --git a/Track_2_ToDo_App/Sprint-02 - Web Application/images/designer-01.png b/Track_2_ToDo_App/Sprint-02 - Web Application/images/designer-01.png
new file mode 100644
index 00000000..92ada102
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-02 - Web Application/images/designer-01.png differ
diff --git a/Track_2_ToDo_App/Sprint-02 - Web Application/images/designer-02.png b/Track_2_ToDo_App/Sprint-02 - Web Application/images/designer-02.png
new file mode 100644
index 00000000..c28f22be
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-02 - Web Application/images/designer-02.png differ
diff --git a/Track_2_ToDo_App/Sprint-02 - Web Application/images/designer-03.png b/Track_2_ToDo_App/Sprint-02 - Web Application/images/designer-03.png
new file mode 100644
index 00000000..ba29cf4d
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-02 - Web Application/images/designer-03.png differ
diff --git a/Track_2_ToDo_App/Sprint-02 - Web Application/images/designer-04.png b/Track_2_ToDo_App/Sprint-02 - Web Application/images/designer-04.png
new file mode 100644
index 00000000..f653394b
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-02 - Web Application/images/designer-04.png differ
diff --git a/Track_2_ToDo_App/Sprint-02 - Web Application/images/designer-05.png b/Track_2_ToDo_App/Sprint-02 - Web Application/images/designer-05.png
new file mode 100644
index 00000000..e43a6c42
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-02 - Web Application/images/designer-05.png differ
diff --git a/Track_2_ToDo_App/Sprint-02 - Web Application/images/designer-06.png b/Track_2_ToDo_App/Sprint-02 - Web Application/images/designer-06.png
new file mode 100644
index 00000000..e8b5c17e
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-02 - Web Application/images/designer-06.png differ
diff --git a/Track_2_ToDo_App/Sprint-02 - Web Application/images/designer-07.png b/Track_2_ToDo_App/Sprint-02 - Web Application/images/designer-07.png
new file mode 100644
index 00000000..0674ddde
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-02 - Web Application/images/designer-07.png differ
diff --git a/Track_2_ToDo_App/Sprint-02 - Web Application/images/designer-08.png b/Track_2_ToDo_App/Sprint-02 - Web Application/images/designer-08.png
new file mode 100644
index 00000000..0b4f00a3
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-02 - Web Application/images/designer-08.png differ
diff --git a/Track_2_ToDo_App/Sprint-02 - Web Application/images/outcome-S02-F02-US02.png b/Track_2_ToDo_App/Sprint-02 - Web Application/images/outcome-S02-F02-US02.png
new file mode 100644
index 00000000..0ea4a8e3
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-02 - Web Application/images/outcome-S02-F02-US02.png differ
diff --git a/Track_2_ToDo_App/Sprint-02 - Web Application/images/outcome-S02-f01-US01.png b/Track_2_ToDo_App/Sprint-02 - Web Application/images/outcome-S02-f01-US01.png
new file mode 100644
index 00000000..655d0149
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-02 - Web Application/images/outcome-S02-f01-US01.png differ
diff --git a/Track_2_ToDo_App/Sprint-02 - Web Application/images/outcome-S02-f01-US02.png b/Track_2_ToDo_App/Sprint-02 - Web Application/images/outcome-S02-f01-US02.png
new file mode 100644
index 00000000..3798ab61
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-02 - Web Application/images/outcome-S02-f01-US02.png differ
diff --git a/Track_2_ToDo_App/Sprint-02 - Web Application/images/outcome-S02-f01-US03.png b/Track_2_ToDo_App/Sprint-02 - Web Application/images/outcome-S02-f01-US03.png
new file mode 100644
index 00000000..741e132c
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-02 - Web Application/images/outcome-S02-f01-US03.png differ
diff --git a/Track_2_ToDo_App/Sprint-02 - Web Application/images/outcome-S02-f02-US01.png b/Track_2_ToDo_App/Sprint-02 - Web Application/images/outcome-S02-f02-US01.png
new file mode 100644
index 00000000..cbd747df
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-02 - Web Application/images/outcome-S02-f02-US01.png differ
diff --git a/Track_2_ToDo_App/Sprint-02 - Web Application/src/app-s02-f01-us01/app.py b/Track_2_ToDo_App/Sprint-02 - Web Application/src/app-s02-f01-us01/app.py
new file mode 100644
index 00000000..1d3f2796
--- /dev/null
+++ b/Track_2_ToDo_App/Sprint-02 - Web Application/src/app-s02-f01-us01/app.py
@@ -0,0 +1,31 @@
+###############################################################################
+## Sprint 02 - Web Application
+## Feature 1: Web App Conversion
+## User Story 1: Make a Web Application from the basic application code
+###############################################################################
+import os
+from flask import Flask, render_template, request, redirect, url_for
+
+app = Flask(__name__)
+basedir = os.path.abspath(os.path.dirname(__file__)) # Get the directory of the this file
+todo_file = os.path.join(basedir, 'todo_list.txt') # Create the path to the to-do list file using the directory
+
+todo_list = []
+
+# Load the to-do list from a file
+try:
+ print("Loading the to-do list from the file")
+ with open(todo_file, "r") as file:
+ for line in file:
+ print(line)
+ todo_list.append(line.strip())
+except FileNotFoundError as e:
+ print(f"Error details: {e}")
+ pass
+
+@app.route("/")
+def index():
+ return render_template("index.html", todo_list=todo_list)
+
+if __name__ == "__main__":
+ app.run(debug=True)
\ No newline at end of file
diff --git a/Track_2_ToDo_App/Sprint-02 - Web Application/src/app-s02-f01-us01/templates/index.html b/Track_2_ToDo_App/Sprint-02 - Web Application/src/app-s02-f01-us01/templates/index.html
new file mode 100644
index 00000000..c0f1a2dd
--- /dev/null
+++ b/Track_2_ToDo_App/Sprint-02 - Web Application/src/app-s02-f01-us01/templates/index.html
@@ -0,0 +1,14 @@
+
+
+
+ To-Do List
+
+
+
To-Do List
+
+ {% for todo in todo_list %}
+
{{ todo }}
+ {% endfor %}
+
+
+
\ No newline at end of file
diff --git a/Track_2_ToDo_App/Sprint-02 - Web Application/src/app-s02-f01-us02/app.py b/Track_2_ToDo_App/Sprint-02 - Web Application/src/app-s02-f01-us02/app.py
new file mode 100644
index 00000000..27c68026
--- /dev/null
+++ b/Track_2_ToDo_App/Sprint-02 - Web Application/src/app-s02-f01-us02/app.py
@@ -0,0 +1,43 @@
+###############################################################################
+## Sprint 02 - Web Application
+## Feature 1: Web App Conversion
+## User Story 2: Add to-do items through the web interface
+###############################################################################
+import os
+from flask import Flask, render_template, request, redirect, url_for
+
+app = Flask(__name__)
+basedir = os.path.abspath(os.path.dirname(__file__)) # Get the directory of the this file
+todo_file = os.path.join(basedir, 'todo_list.txt') # Create the path to the to-do list file using the directory
+
+todo_list = []
+
+# Load the to-do list from a file
+try:
+ print("Loading the to-do list from the file")
+ with open(todo_file, "r") as file:
+ for line in file:
+ print(line)
+ todo_list.append(line.strip())
+except FileNotFoundError as e:
+ print(f"Error details: {e}")
+ pass
+
+@app.route("/")
+def index():
+ return render_template("index.html", todo_list=todo_list)
+
+@app.route("/add", methods=["POST"])
+def add_todo():
+ todo = request.form["todo"]
+ todo_list.append(todo)
+ save_todo_list()
+ return redirect(url_for("index"))
+
+def save_todo_list():
+ with open(todo_file, "w") as file:
+ for todo in todo_list:
+ file.write(todo + "\n")
+
+if __name__ == "__main__":
+ app.run(debug=True)
\ No newline at end of file
diff --git a/Track_2_ToDo_App/Sprint-02 - Web Application/src/app-s02-f01-us02/templates/index.html b/Track_2_ToDo_App/Sprint-02 - Web Application/src/app-s02-f01-us02/templates/index.html
new file mode 100644
index 00000000..8753dac4
--- /dev/null
+++ b/Track_2_ToDo_App/Sprint-02 - Web Application/src/app-s02-f01-us02/templates/index.html
@@ -0,0 +1,19 @@
+
+
+
+ To-Do List
+
+
+
To-Do List
+
+ {% for todo in todo_list %}
+
{{ todo }}
+ {% endfor %}
+
+
+
+
\ No newline at end of file
diff --git a/Track_2_ToDo_App/Sprint-02 - Web Application/src/app-s02-f01-us03/app.py b/Track_2_ToDo_App/Sprint-02 - Web Application/src/app-s02-f01-us03/app.py
new file mode 100644
index 00000000..c3f5d07d
--- /dev/null
+++ b/Track_2_ToDo_App/Sprint-02 - Web Application/src/app-s02-f01-us03/app.py
@@ -0,0 +1,51 @@
+###############################################################################
+## Sprint 2: Web Application
+## Feature 2: Persist To-Do List
+## User Story 2: Load To-Do List
+###############################################################################
+import os
+from flask import Flask, render_template, request, redirect, url_for
+
+app = Flask(__name__)
+basedir = os.path.abspath(os.path.dirname(__file__)) # Get the directory of the this file
+todo_file = os.path.join(basedir, 'todo_list.txt') # Create the path to the to-do list file using the directory
+
+todo_list = []
+
+# Load the to-do list from a file
+try:
+ print("Loading the to-do list from the file")
+ with open(todo_file, "r+") as file:
+ for line in file:
+ print(line)
+ todo_list.append(line.strip())
+except FileNotFoundError as e:
+ print(f"Error details: {e}")
+ pass
+
+@app.route("/")
+def index():
+ return render_template("index.html", todo_list=todo_list)
+
+@app.route("/add", methods=["POST"])
+def add_todo():
+ todo = request.form["todo"]
+ todo_list.append(todo)
+ save_todo_list()
+ return redirect(url_for("index"))
+
+@app.route("/remove", methods=["POST"])
+def remove_todo():
+ item_number = int(request.form["item_number"])
+ if 0 < item_number <= len(todo_list):
+ todo_list.pop(item_number - 1)
+ save_todo_list()
+ return redirect(url_for("index"))
+
+def save_todo_list():
+ with open(todo_file, "w") as file:
+ for todo in todo_list:
+ file.write(todo + "\n")
+
+if __name__ == "__main__":
+ app.run(debug=True)
\ No newline at end of file
diff --git a/Track_2_ToDo_App/Sprint-02 - Web Application/src/app-s02-f01-us03/templates/index.html b/Track_2_ToDo_App/Sprint-02 - Web Application/src/app-s02-f01-us03/templates/index.html
new file mode 100644
index 00000000..b0a1e92f
--- /dev/null
+++ b/Track_2_ToDo_App/Sprint-02 - Web Application/src/app-s02-f01-us03/templates/index.html
@@ -0,0 +1,24 @@
+
+
+
+ To-Do List
+
+
+
To-Do List
+
+ {% for todo in todo_list %}
+
{{ todo }}
+ {% endfor %}
+
+
+
+
+
\ No newline at end of file
diff --git a/Track_2_ToDo_App/Sprint-02 - Web Application/src/app-s02-f02-us01/app.py b/Track_2_ToDo_App/Sprint-02 - Web Application/src/app-s02-f02-us01/app.py
new file mode 100644
index 00000000..ebe55460
--- /dev/null
+++ b/Track_2_ToDo_App/Sprint-02 - Web Application/src/app-s02-f02-us01/app.py
@@ -0,0 +1,51 @@
+###############################################################################
+## Sprint 2: Web Application
+## Feature 2: Personalize Web Application
+## User Story 1: Add Basic Styling
+###############################################################################
+import os
+from flask import Flask, render_template, request, redirect, url_for
+
+app = Flask(__name__)
+basedir = os.path.abspath(os.path.dirname(__file__)) # Get the directory of the this file
+todo_file = os.path.join(basedir, 'todo_list.txt') # Create the path to the to-do list file using the directory
+
+todo_list = []
+
+# Load the to-do list from a file
+try:
+ print("Loading the to-do list from the file")
+ with open(todo_file, "r+") as file:
+ for line in file:
+ print(line)
+ todo_list.append(line.strip())
+except FileNotFoundError as e:
+ print(f"Error details: {e}")
+ pass
+
+@app.route("/")
+def index():
+ return render_template("index.html", todo_list=todo_list)
+
+@app.route("/add", methods=["POST"])
+def add_todo():
+ todo = request.form["todo"]
+ todo_list.append(todo)
+ save_todo_list()
+ return redirect(url_for("index"))
+
+@app.route("/remove", methods=["POST"])
+def remove_todo():
+ item_number = int(request.form["item_number"])
+ if 0 < item_number <= len(todo_list):
+ todo_list.pop(item_number - 1)
+ save_todo_list()
+ return redirect(url_for("index"))
+
+def save_todo_list():
+ with open(todo_file, "w") as file:
+ for todo in todo_list:
+ file.write(todo + "\n")
+
+if __name__ == "__main__":
+ app.run(debug=True)
\ No newline at end of file
diff --git a/Track_2_ToDo_App/Sprint-02 - Web Application/src/app-s02-f02-us01/templates/index.html b/Track_2_ToDo_App/Sprint-02 - Web Application/src/app-s02-f02-us01/templates/index.html
new file mode 100644
index 00000000..0c669491
--- /dev/null
+++ b/Track_2_ToDo_App/Sprint-02 - Web Application/src/app-s02-f02-us01/templates/index.html
@@ -0,0 +1,40 @@
+
+
+
+ To-Do List
+
+
+
+
+
To-Do List
+
+
+
+ {% for todo in todo_list %}
+
{{ todo }}
+ {% endfor %}
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Track_2_ToDo_App/Sprint-02 - Web Application/src/app-s02-f02-us02/app.py b/Track_2_ToDo_App/Sprint-02 - Web Application/src/app-s02-f02-us02/app.py
new file mode 100644
index 00000000..f15809ff
--- /dev/null
+++ b/Track_2_ToDo_App/Sprint-02 - Web Application/src/app-s02-f02-us02/app.py
@@ -0,0 +1,51 @@
+###############################################################################
+## Sprint 2: Web Application
+## Feature 2: Personalize Web Application
+## User Story 2: Personalize Web Application
+###############################################################################
+import os
+from flask import Flask, render_template, request, redirect, url_for
+
+app = Flask(__name__)
+basedir = os.path.abspath(os.path.dirname(__file__)) # Get the directory of the this file
+todo_file = os.path.join(basedir, 'todo_list.txt') # Create the path to the to-do list file using the directory
+
+todo_list = []
+
+# Load the to-do list from a file
+try:
+ print("Loading the to-do list from the file")
+ with open(todo_file, "r+") as file:
+ for line in file:
+ print(line)
+ todo_list.append(line.strip())
+except FileNotFoundError as e:
+ print(f"Error details: {e}")
+ pass
+
+@app.route("/")
+def index():
+ return render_template("index.html", todo_list=todo_list)
+
+@app.route("/add", methods=["POST"])
+def add_todo():
+ todo = request.form["todo"]
+ todo_list.append(todo)
+ save_todo_list()
+ return redirect(url_for("index"))
+
+@app.route("/remove", methods=["POST"])
+def remove_todo():
+ item_number = int(request.form["item_number"])
+ if 0 < item_number <= len(todo_list):
+ todo_list.pop(item_number - 1)
+ save_todo_list()
+ return redirect(url_for("index"))
+
+def save_todo_list():
+ with open(todo_file, "w") as file:
+ for todo in todo_list:
+ file.write(todo + "\n")
+
+if __name__ == "__main__":
+ app.run(debug=True)
\ No newline at end of file
diff --git a/Track_2_ToDo_App/Sprint-02 - Web Application/src/app-s02-f02-us02/static/css/style.css b/Track_2_ToDo_App/Sprint-02 - Web Application/src/app-s02-f02-us02/static/css/style.css
new file mode 100644
index 00000000..9d832830
--- /dev/null
+++ b/Track_2_ToDo_App/Sprint-02 - Web Application/src/app-s02-f02-us02/static/css/style.css
@@ -0,0 +1,20 @@
+body {
+ background-color: f0f0f0; /* light grey */
+ color: darkslategray; /* default font color */
+ font-family: Arial, sans-serif;
+ background-image: url("../images/Designer02.jpeg");
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size:cover;
+}
+
+h1 {
+ color: darkgray; /* font for the h1 header*/
+}
+
+.list-group-item {
+ color: #333; /* dark grey */
+}
+
+
+
diff --git a/Track_2_ToDo_App/Sprint-02 - Web Application/src/app-s02-f02-us02/static/images/Designer01.jpeg b/Track_2_ToDo_App/Sprint-02 - Web Application/src/app-s02-f02-us02/static/images/Designer01.jpeg
new file mode 100644
index 00000000..f59d0d61
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-02 - Web Application/src/app-s02-f02-us02/static/images/Designer01.jpeg differ
diff --git a/Track_2_ToDo_App/Sprint-02 - Web Application/src/app-s02-f02-us02/static/images/Designer02.jpeg b/Track_2_ToDo_App/Sprint-02 - Web Application/src/app-s02-f02-us02/static/images/Designer02.jpeg
new file mode 100644
index 00000000..0c36a33e
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-02 - Web Application/src/app-s02-f02-us02/static/images/Designer02.jpeg differ
diff --git a/Track_2_ToDo_App/Sprint-02 - Web Application/src/app-s02-f02-us02/static/images/favicon.ico b/Track_2_ToDo_App/Sprint-02 - Web Application/src/app-s02-f02-us02/static/images/favicon.ico
new file mode 100644
index 00000000..47f38580
Binary files /dev/null and b/Track_2_ToDo_App/Sprint-02 - Web Application/src/app-s02-f02-us02/static/images/favicon.ico differ
diff --git a/Track_2_ToDo_App/Sprint-02 - Web Application/src/app-s02-f02-us02/templates/index.html b/Track_2_ToDo_App/Sprint-02 - Web Application/src/app-s02-f02-us02/templates/index.html
new file mode 100644
index 00000000..153d0b87
--- /dev/null
+++ b/Track_2_ToDo_App/Sprint-02 - Web Application/src/app-s02-f02-us02/templates/index.html
@@ -0,0 +1,50 @@
+
+
+
+ My To-Do List
+
+
+
+
+
+
+
+
+
+
+
+
My To-Do List
+
+
+
+
+
+ {% for todo in todo_list %}
+
{{ todo }}
+ {% endfor %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Track_2_ToDo_App/Where to Learn More.md b/Track_2_ToDo_App/Where to Learn More.md
new file mode 100644
index 00000000..845418be
--- /dev/null
+++ b/Track_2_ToDo_App/Where to Learn More.md
@@ -0,0 +1,26 @@
+# 🎓 Where To Learn More
+
+## Table of Contents
+1. [Python](#Python)
+2. [Flask](#Flask)
+
+
+## Python
+- [MS Learn Python Learning Path](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/)
+- [Python for Beginners Series (YouTube)](https://www.youtube.com/watch?v=jFCNu1-Xdsw&list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6) - 44 introductory videos on YouTube
+- [More Python for Beginners (YouTube)](https://www.youtube.com/watch?v=uQ5BZht9L3A) -- Advance Python Topics on YouTube
+- [Learn Python.org - Python 101](https://www.learnpython.org/)
+- [W3 Schools - Python 101](https://www.w3schools.com/python/)
+
+## Flask / Jinga
+- [Flask Documentation](https://flask.palletsprojects.com/en/3.0.x/)
+- [Jinja Documentation](https://flask.palletsprojects.com/en/3.0.x/templating/)
+
+
+## Javascript
+- [Documenation](https://developer.mozilla.org/en-US/docs/Web/JavaScript)
+- [MS Learn Beginner's Series to JavaScript](https://learn.microsoft.com/en-us/shows/beginners-series-to-javascript/)
+- [W3 Schools - JavaScript 101](https://www.w3schools.com/js/)
+
+
+[🔼 Track 2 Home ](/Track_2_ToDo_App/README.md)
\ No newline at end of file
diff --git a/Track_2_ToDo_App/Workshop-Format.md b/Track_2_ToDo_App/Workshop-Format.md
new file mode 100644
index 00000000..701a85f7
--- /dev/null
+++ b/Track_2_ToDo_App/Workshop-Format.md
@@ -0,0 +1,108 @@
+# Workshop Format: Build a To-Do Application with AI Features
+This format is designed to help students walk through the sprints and user stories by following a step-by-step guide. The outline below documents the sprints and user stories that you will be implementing on your journey. If you want to go through the entire experience, please follow them in order. However, all user stories have fully functioning code base, so they are designed to pick up from whatever sprint / user story you want to start with.
+
+
+## Sprint 0 - Environment Setup
+⏲️ _Est. time to complete: 45 min._ ⏲️
+
+This sprint is designed to help students get their environment setup and ready to start coding. The sprint will walk students through setting up their development environment, installing the necessary tools, and getting the code base for the To-Do application.
+
+1. [**Setup a GitHub Account**](./Sprint-00%20-%20Environment%20Setup/01%20-%20Setup%20GitHub%20Account.md)
+
+2. **Setup Local Development Environment** ([**Windows Setup**](/Track_2_ToDo_App/Sprint-00%20-%20Environment%20Setup/02b%20-%20Setup%20Local%20Development%20Environment%20on%20Windows.md)) ([**Mac Setup**](/Track_2_ToDo_App/Sprint-00%20-%20Environment%20Setup/02c%20-%20Setup%20Local%20Development%20Environment%20on%20Mac.md))
+
+
+> [!NOTE]
+> if you can't setup a local development environment you can use GitHub CodeSpaces as an alternative. Follow the instructions [here](/Track_2_ToDo_App/Sprint-00%20-%20Environment%20Setup/02a%20-%20Use%20GitHub%20CodeSpaces.md)
+
+## Sprint 1 - Basic Application
+⏲️ _Est. time to complete: 30 min._ ⏲️
+
+This sprint is designed to help students build a basic To-Do application that can be used to store a local to-do list on your computer. The sprint will walk students through building a simple console application that will allow users to add, delete, and list tasks.
+
+> [!NOTE]
+> **🎓 Know before you start**
+> - [Development 101]()
+> - [What is Python?](https://www.youtube.com/watch?v=7XOhibxgBlQ&list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6&index=2) (3:10 min)
+> - [Python Extention for Visual Studio Code](https://www.youtube.com/watch?v=CXZYvNRIAKM&list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6&index=4) (2:49 min)
+>
+
+**📕Feature: Manage To-Do List**
+1. [**📖 Add Items to List**](/Track_2_ToDo_App/Sprint-01%20-%20Basic%20Application/Feature%201%20-%20Manage%20Todo%20List/User%20Story%201%20-%20Add%20Item%20to%20List.MD)
+2. [**📖 Remove Items from List**](/Track_2_ToDo_App/Sprint-01%20-%20Basic%20Application/Feature%201%20-%20Manage%20Todo%20List/User%20Story%202%20-%20Remove%20Item%20from%20List.md)
+
+**📕Feature: Save To-Do List**
+1. [**📖 Save List to File**](/Track_2_ToDo_App/Sprint-01%20-%20Basic%20Application/Feature%202%20-%20Save%20To-Do%20List/User%20Story%201%20-%20Save%20To-Do%20List%20to%20File.md
+)
+2. [**📖 Load List from File**](/Track_2_ToDo_App/Sprint-01%20-%20Basic%20Application/Feature%202%20-%20Save%20To-Do%20List/User%20Story%202%20-%20Load%20To-Do%20List%20from%20File.md)
+
+> [!NOTE]
+> This sprint is a reminder that not all code needs to be complex. Not every problem requires a web application or a mobile app. Sometimes a simple script will get the job done!
+
+
+
+## Sprint 2 - Web Application
+⏲️ _Est. time to complete: 60 min._ ⏲️
+
+This sprint is designed to help students build a web application by evolving the to-do application from sprint 1. The sprint will walk students through building a simple web application that will allow users to add, delete, and list tasks.
+
+> [!NOTE]
+> **🎓 Know before you start**
+> - **to-do**: Web Apps Explained - Basics of Building a Web App\>
+
+**📕Feature: Web App Conversion**
+1. [**📖 Convert Console App to Web App**](/Track_2_ToDo_App/Sprint-02%20-%20Web%20Application/Feature%201%20-%20Web%20App%20Conversion/User%20Story%201%20-%20Convert%20To%20Web%20App.md)
+2. [**📖 Add Item through Web Form**](/Track_2_ToDo_App/Sprint-02%20-%20Web%20Application/Feature%201%20-%20Web%20App%20Conversion/User%20Story%202%20-%20Add%20Item%20through%20Web%20Form.md)
+3. [**📖 Remove Item through Web Form**](/Track_2_ToDo_App/Sprint-02%20-%20Web%20Application/Feature%201%20-%20Web%20App%20Conversion/User%20Story%203%20-%20Remove%20Item%20through%20Web%20Form.md)
+
+**📕Feature: Basic Styling**
+1. [**📖 Add Basic Styling to Web App**](/Track_2_ToDo_App/Sprint-02%20-%20Web%20Application/Feature%202%20-%20Basic%20Styling/User%20Story%201%20-%20Add%20Basic%20Styling%20to%20the%20Web%20App.md)
+2. [**📖 Personalize Website**](/Track_2_ToDo_App/Sprint-02%20-%20Web%20Application/Feature%202%20-%20Basic%20Styling/User%20Story%202%20-%20Personalize%20Website.md)
+
+## Sprint 3 - Database Integration
+This sprint is designed to help students integrate a database into the To-Do application. The sprint will walk students through setting up a database, connecting the web application to the database, and storing the To-Do list in the database.
+
+**📕Feature: Shift task storage to database**
+1. [**📖 Convert file storage to database storage**](/Track_2_ToDo_App/Sprint-03%20-%20Database%20Integration/Features%201%20-%20Shift%20task%20storage%20to%20database/User%20Story%201%20-%20Move%20from%20File%20Storage%20to%20database.md)
+
+
+## Sprint 4 - Voice To Text
+This sprint is designed to help students add voice to text functionality to the To-Do application. The sprint will walk students through adding voice to text functionality to the To-Do application.
+
+**📕Feature: Voice to Text**
+1. [**📖 Add ability to use voice to add task name**](/Track_2_ToDo_App/Sprint-04%20-%20Voice%20To%20Text/Feature%201%20-%20Add%20Voice/User%20Story%201%20-%20Add%20Voice.md)
+
+
+## Sprint 5 - Advanced AI Recommendations
+This sprint is designed to help students add advanced AI recommendations to the To-Do application. The sprint will walk students through creating recommendations for tasks that the user hasd added to the To-Do application.
+
+**📕Feature: Advanced AI Recommendations**
+1. [**📖 Get Recommendations from Generative AI based on To-Do name**](/Track_2_ToDo_App/Sprint-05%20-%20Advanced%20AI%20recommendations/Feature%201%20-%20Get%20Generative%20AI%20recommendation/User%20Story%201%20-%20Get%20Gen%20AI%20recommendation.md)
+2. [**📖 Store the recommendations in the DB for a task**](/Track_2_ToDo_App/Sprint-05%20-%20Advanced%20AI%20recommendations/Feature%201%20-%20Get%20Generative%20AI%20recommendation/User%20Story%202%20-%20Cache%20recommendations%20in%20DB.md)
+3. [**📖 Allow the user to refresh the recommendations**](/Track_2_ToDo_App/Sprint-05%20-%20Advanced%20AI%20recommendations/Feature%201%20-%20Get%20Generative%20AI%20recommendation/User%20Story%203%20-%20Refresh%20Recommendations.md)
+
+
+## Sprint 6 - Add additional details about to-do item
+This sprint is designed to help students add additional details to the To-Do application. The sprint will walk students through adding details about the task such as Due Date, Priority, Additional Notes, and whether or not the Task has been completed.
+
+**📕Feature: Add additional about to-do item**
+1. [**📖 Add Due Date, Priority, Notes and Completion Status to To-Do item**](/Track_2_ToDo_App/Sprint-06%20-%20Advanced%20To-Do%20Details/Feature%201%20-%20Add%20Additional%20To-Do%20Details/User%20Story%201%20-%20Add%20additional%20details%20to%20to-do%20item.md)
+
+
+## Sprint 7 - Advanced Styling in your Web Application
+This sprint is designed to help students add advanced styling to the To-Do application. The sprint will walk students through adding advanced styling features such as a tabbed interface, modal dialog, and advanced rules to ensure that a blank to-do is not added.
+
+**📕Feature: Advanced Web App Styling**
+1. [**📖 Add completed checkbox and due date details to main list**](/Track_2_ToDo_App/Sprint-07%20-%20Advanced%20Styling%20Your%20Web%20App/Feature%201%20-%20Advanced%20Styling/User%20Story%201%20-%20Add%20Completed%20Checkbox.md)
+2. [**📖 Add a tabbed interface to show different views**](/Track_2_ToDo_App/Sprint-07%20-%20Advanced%20Styling%20Your%20Web%20App/Feature%201%20-%20Advanced%20Styling/User%20Story%202%20-%20Add%20Tabbed%20Interface.md)
+3. [**📖 Prevent User from adding blank task and limit characters**](/Track_2_ToDo_App/Sprint-07%20-%20Advanced%20Styling%20Your%20Web%20App/Feature%201%20-%20Advanced%20Styling/User%20Story%203%20-%20Prevent%20User%20from%20adding%20blank%20task.md)
+4. [**📖 Confirm before deleting a task**](/Track_2_ToDo_App/Sprint-07%20-%20Advanced%20Styling%20Your%20Web%20App/Feature%201%20-%20Advanced%20Styling/User%20Story%204%20-%20Confirm%20Delete.md)
+5. [**📖 Show spinner when loading recommendations**](/Track_2_ToDo_App/Sprint-07%20-%20Advanced%20Styling%20Your%20Web%20App/Feature%201%20-%20Advanced%20Styling/User%20Story%205%20-%20Show%20Spinner.md)
+
+## Sprint 8 - Deploy to the Cloud
+This sprint is designed to help students deploy the To-Do application to the cloud. The sprint will walk students through deploying the To-Do application to the Microsoft Azure cloud.
+
+**TBD**
+
+
+[🔼 Home ](/Track_2_ToDo_App/README.md)
\ No newline at end of file
diff --git a/Track_2_ToDo_App/content-images/MSFT_AnyonecanCode_Banner_small.png b/Track_2_ToDo_App/content-images/MSFT_AnyonecanCode_Banner_small.png
new file mode 100644
index 00000000..d1ea2042
Binary files /dev/null and b/Track_2_ToDo_App/content-images/MSFT_AnyonecanCode_Banner_small.png differ
diff --git a/Track_2_ToDo_App/content-images/MSFT_EveryoneCanCode_Banner.png b/Track_2_ToDo_App/content-images/MSFT_EveryoneCanCode_Banner.png
new file mode 100644
index 00000000..32b5a950
Binary files /dev/null and b/Track_2_ToDo_App/content-images/MSFT_EveryoneCanCode_Banner.png differ
diff --git a/Track_2_ToDo_App/content-images/Sprint 00/github/AccountFrontpage.png b/Track_2_ToDo_App/content-images/Sprint 00/github/AccountFrontpage.png
new file mode 100644
index 00000000..e25fbc9f
Binary files /dev/null and b/Track_2_ToDo_App/content-images/Sprint 00/github/AccountFrontpage.png differ
diff --git a/Track_2_ToDo_App/content-images/Sprint 00/github/CreateAnAccount.png b/Track_2_ToDo_App/content-images/Sprint 00/github/CreateAnAccount.png
new file mode 100644
index 00000000..949f5a3b
Binary files /dev/null and b/Track_2_ToDo_App/content-images/Sprint 00/github/CreateAnAccount.png differ
diff --git a/Track_2_ToDo_App/content-images/Sprint 00/github/CreateCodespace.png b/Track_2_ToDo_App/content-images/Sprint 00/github/CreateCodespace.png
new file mode 100644
index 00000000..44544009
Binary files /dev/null and b/Track_2_ToDo_App/content-images/Sprint 00/github/CreateCodespace.png differ
diff --git a/Track_2_ToDo_App/content-images/Sprint 00/github/CreateCodespaces.png b/Track_2_ToDo_App/content-images/Sprint 00/github/CreateCodespaces.png
new file mode 100644
index 00000000..19b7ec56
Binary files /dev/null and b/Track_2_ToDo_App/content-images/Sprint 00/github/CreateCodespaces.png differ
diff --git a/Track_2_ToDo_App/content-images/Sprint 00/github/EditProfile.gif b/Track_2_ToDo_App/content-images/Sprint 00/github/EditProfile.gif
new file mode 100644
index 00000000..d76d7ff5
Binary files /dev/null and b/Track_2_ToDo_App/content-images/Sprint 00/github/EditProfile.gif differ
diff --git a/Track_2_ToDo_App/content-images/Sprint 00/github/EnterEmail.png b/Track_2_ToDo_App/content-images/Sprint 00/github/EnterEmail.png
new file mode 100644
index 00000000..f2f79394
Binary files /dev/null and b/Track_2_ToDo_App/content-images/Sprint 00/github/EnterEmail.png differ
diff --git a/Track_2_ToDo_App/content-images/Sprint 00/github/EnterPassword.png b/Track_2_ToDo_App/content-images/Sprint 00/github/EnterPassword.png
new file mode 100644
index 00000000..ae719b60
Binary files /dev/null and b/Track_2_ToDo_App/content-images/Sprint 00/github/EnterPassword.png differ
diff --git a/Track_2_ToDo_App/content-images/Sprint 00/github/EnterUserName.png b/Track_2_ToDo_App/content-images/Sprint 00/github/EnterUserName.png
new file mode 100644
index 00000000..735f3055
Binary files /dev/null and b/Track_2_ToDo_App/content-images/Sprint 00/github/EnterUserName.png differ
diff --git a/Track_2_ToDo_App/content-images/Sprint 00/github/ExplorerTab.png b/Track_2_ToDo_App/content-images/Sprint 00/github/ExplorerTab.png
new file mode 100644
index 00000000..9c0d7042
Binary files /dev/null and b/Track_2_ToDo_App/content-images/Sprint 00/github/ExplorerTab.png differ
diff --git a/Track_2_ToDo_App/content-images/Sprint 00/github/ForkTheRepository.png b/Track_2_ToDo_App/content-images/Sprint 00/github/ForkTheRepository.png
new file mode 100644
index 00000000..ced47e6d
Binary files /dev/null and b/Track_2_ToDo_App/content-images/Sprint 00/github/ForkTheRepository.png differ
diff --git a/Track_2_ToDo_App/content-images/Sprint 00/github/GithubSignUp.png b/Track_2_ToDo_App/content-images/Sprint 00/github/GithubSignUp.png
new file mode 100644
index 00000000..d895fa01
Binary files /dev/null and b/Track_2_ToDo_App/content-images/Sprint 00/github/GithubSignUp.png differ
diff --git a/Track_2_ToDo_App/content-images/Sprint 00/github/InstallRecommendedExtensions.png b/Track_2_ToDo_App/content-images/Sprint 00/github/InstallRecommendedExtensions.png
new file mode 100644
index 00000000..69432e30
Binary files /dev/null and b/Track_2_ToDo_App/content-images/Sprint 00/github/InstallRecommendedExtensions.png differ
diff --git a/Track_2_ToDo_App/content-images/Sprint 00/github/Microsoft_signup.png b/Track_2_ToDo_App/content-images/Sprint 00/github/Microsoft_signup.png
new file mode 100644
index 00000000..d4137532
Binary files /dev/null and b/Track_2_ToDo_App/content-images/Sprint 00/github/Microsoft_signup.png differ
diff --git a/Track_2_ToDo_App/content-images/Sprint 00/github/NoAnnouncements.png b/Track_2_ToDo_App/content-images/Sprint 00/github/NoAnnouncements.png
new file mode 100644
index 00000000..8637f816
Binary files /dev/null and b/Track_2_ToDo_App/content-images/Sprint 00/github/NoAnnouncements.png differ
diff --git a/Track_2_ToDo_App/content-images/Sprint 00/github/Settings.png b/Track_2_ToDo_App/content-images/Sprint 00/github/Settings.png
new file mode 100644
index 00000000..937561c4
Binary files /dev/null and b/Track_2_ToDo_App/content-images/Sprint 00/github/Settings.png differ
diff --git a/Track_2_ToDo_App/content-images/Sprint 00/github/StopCodespaces.png b/Track_2_ToDo_App/content-images/Sprint 00/github/StopCodespaces.png
new file mode 100644
index 00000000..b5050d76
Binary files /dev/null and b/Track_2_ToDo_App/content-images/Sprint 00/github/StopCodespaces.png differ
diff --git a/Track_2_ToDo_App/content-images/Sprint 00/github/Verification.png b/Track_2_ToDo_App/content-images/Sprint 00/github/Verification.png
new file mode 100644
index 00000000..60ec2f15
Binary files /dev/null and b/Track_2_ToDo_App/content-images/Sprint 00/github/Verification.png differ
diff --git a/Track_2_ToDo_App/content-images/Sprint 00/github/codespaceCreate.png b/Track_2_ToDo_App/content-images/Sprint 00/github/codespaceCreate.png
new file mode 100644
index 00000000..e6ab9d93
Binary files /dev/null and b/Track_2_ToDo_App/content-images/Sprint 00/github/codespaceCreate.png differ
diff --git a/Track_2_ToDo_App/content-images/Sprint 00/github/codespaceMenu.png b/Track_2_ToDo_App/content-images/Sprint 00/github/codespaceMenu.png
new file mode 100644
index 00000000..a352521b
Binary files /dev/null and b/Track_2_ToDo_App/content-images/Sprint 00/github/codespaceMenu.png differ
diff --git a/Track_2_ToDo_App/content-images/Sprint 00/github/homePage.png b/Track_2_ToDo_App/content-images/Sprint 00/github/homePage.png
new file mode 100644
index 00000000..190458cf
Binary files /dev/null and b/Track_2_ToDo_App/content-images/Sprint 00/github/homePage.png differ
diff --git a/Track_2_ToDo_App/content-images/Sprint 00/github/version.png b/Track_2_ToDo_App/content-images/Sprint 00/github/version.png
new file mode 100644
index 00000000..ec8f9454
Binary files /dev/null and b/Track_2_ToDo_App/content-images/Sprint 00/github/version.png differ
diff --git a/Track_2_ToDo_App/content-images/Sprint 00/local/git-downloaded-installer.png b/Track_2_ToDo_App/content-images/Sprint 00/local/git-downloaded-installer.png
new file mode 100644
index 00000000..4c3e6d74
Binary files /dev/null and b/Track_2_ToDo_App/content-images/Sprint 00/local/git-downloaded-installer.png differ
diff --git a/Track_2_ToDo_App/content-images/Sprint 00/local/git-finish-installation.png b/Track_2_ToDo_App/content-images/Sprint 00/local/git-finish-installation.png
new file mode 100644
index 00000000..70bfd2a4
Binary files /dev/null and b/Track_2_ToDo_App/content-images/Sprint 00/local/git-finish-installation.png differ
diff --git a/Track_2_ToDo_App/content-images/Sprint 00/local/git-install.png b/Track_2_ToDo_App/content-images/Sprint 00/local/git-install.png
new file mode 100644
index 00000000..5a62596c
Binary files /dev/null and b/Track_2_ToDo_App/content-images/Sprint 00/local/git-install.png differ
diff --git a/Track_2_ToDo_App/content-images/Sprint 00/local/git-installer-setup.png b/Track_2_ToDo_App/content-images/Sprint 00/local/git-installer-setup.png
new file mode 100644
index 00000000..080f7325
Binary files /dev/null and b/Track_2_ToDo_App/content-images/Sprint 00/local/git-installer-setup.png differ
diff --git a/Track_2_ToDo_App/content-images/Sprint 00/local/git-not-installed.png b/Track_2_ToDo_App/content-images/Sprint 00/local/git-not-installed.png
new file mode 100644
index 00000000..6b177d1c
Binary files /dev/null and b/Track_2_ToDo_App/content-images/Sprint 00/local/git-not-installed.png differ
diff --git a/Track_2_ToDo_App/content-images/Sprint 00/local/git-previously-installed.png b/Track_2_ToDo_App/content-images/Sprint 00/local/git-previously-installed.png
new file mode 100644
index 00000000..77f4f6f1
Binary files /dev/null and b/Track_2_ToDo_App/content-images/Sprint 00/local/git-previously-installed.png differ
diff --git a/Track_2_ToDo_App/content-images/Sprint 00/local/open-command-line-window.png b/Track_2_ToDo_App/content-images/Sprint 00/local/open-command-line-window.png
new file mode 100644
index 00000000..20a3b392
Binary files /dev/null and b/Track_2_ToDo_App/content-images/Sprint 00/local/open-command-line-window.png differ
diff --git a/Track_2_ToDo_App/content-images/Sprint 00/local/python-installation-complete.png b/Track_2_ToDo_App/content-images/Sprint 00/local/python-installation-complete.png
new file mode 100644
index 00000000..67334bf1
Binary files /dev/null and b/Track_2_ToDo_App/content-images/Sprint 00/local/python-installation-complete.png differ
diff --git a/Track_2_ToDo_App/content-images/Sprint 00/local/python-installation-wizard.png b/Track_2_ToDo_App/content-images/Sprint 00/local/python-installation-wizard.png
new file mode 100644
index 00000000..0452414e
Binary files /dev/null and b/Track_2_ToDo_App/content-images/Sprint 00/local/python-installation-wizard.png differ
diff --git a/Track_2_ToDo_App/content-images/Sprint 00/local/python-installer.png b/Track_2_ToDo_App/content-images/Sprint 00/local/python-installer.png
new file mode 100644
index 00000000..96e5a93a
Binary files /dev/null and b/Track_2_ToDo_App/content-images/Sprint 00/local/python-installer.png differ
diff --git a/Track_2_ToDo_App/content-images/Sprint 00/local/vscode-finish-installation.png b/Track_2_ToDo_App/content-images/Sprint 00/local/vscode-finish-installation.png
new file mode 100644
index 00000000..d191c24e
Binary files /dev/null and b/Track_2_ToDo_App/content-images/Sprint 00/local/vscode-finish-installation.png differ
diff --git a/Track_2_ToDo_App/content-images/Sprint 00/local/vscode-installer-accept-license.png b/Track_2_ToDo_App/content-images/Sprint 00/local/vscode-installer-accept-license.png
new file mode 100644
index 00000000..c196add1
Binary files /dev/null and b/Track_2_ToDo_App/content-images/Sprint 00/local/vscode-installer-accept-license.png differ
diff --git a/Track_2_ToDo_App/content-images/Sprint 00/local/vscode-installer-download.png b/Track_2_ToDo_App/content-images/Sprint 00/local/vscode-installer-download.png
new file mode 100644
index 00000000..a53dce73
Binary files /dev/null and b/Track_2_ToDo_App/content-images/Sprint 00/local/vscode-installer-download.png differ
diff --git a/Track_2_ToDo_App/content-images/anyone-can-code_1400x300.png b/Track_2_ToDo_App/content-images/anyone-can-code_1400x300.png
new file mode 100644
index 00000000..8f075478
Binary files /dev/null and b/Track_2_ToDo_App/content-images/anyone-can-code_1400x300.png differ
diff --git a/Track_2_ToDo_App/myApplication/README.MD b/Track_2_ToDo_App/myApplication/README.MD
new file mode 100644
index 00000000..9f91702f
--- /dev/null
+++ b/Track_2_ToDo_App/myApplication/README.MD
@@ -0,0 +1 @@
+This is an empty folder for the project. It will be used as the working source directly as you continue to build out your application through all of the sprints