├── .gitignore ├── 2024-05-14 Event.md ├── CODEOWNERS ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.md ├── SECURITY.md ├── SUPPORT.md ├── Track_1_ToDo_App ├── README.md ├── Sprint-00 - Environment Setup │ ├── 01 - Setup GitHub Account.md │ ├── 02 - Setup To-Do Application Repository.md │ ├── 02a - Use GitHub CodeSpaces.md │ ├── 02b - Setup Local Development Environment on Windows.md │ ├── 02c - Setup Local Development Environment on Mac.md │ ├── images │ │ ├── CloneRepo-S0.png │ │ ├── CreateCodespaces.png │ │ ├── SetupVirtualEnvrionment-01.png │ │ ├── SetupVirtualEnvrionment-02.png │ │ ├── SetupVirtualEnvrionment-03.png │ │ ├── SetupVirtualEnvrionment-04.png │ │ ├── SetupVirtualEnvrionment-05.png │ │ ├── SetupVirtualEnvrionment-06.png │ │ ├── WindowsStore.png │ │ ├── github-new-repo-01.png │ │ ├── github-new-repo-02.png │ │ ├── github-new-repo-03.png │ │ ├── github_copilot_extension.jpg │ │ └── visual-studio-code-clone-repo-01.png │ ├── readme.md │ └── src │ │ └── requirements.txt ├── Sprint-01 - Basic Application │ ├── Feature 1 - Manage Todo List │ │ ├── User Story 1 - Add Item to List.MD │ │ └── User Story 2 - Remove Item from List.md │ ├── Feature 2 - Save To-Do List │ │ ├── User Story 1 - Save To-Do List to File.md │ │ └── User Story 2 - Load To-Do List from File.md │ ├── README.md │ ├── images │ │ ├── EditCode-S1-F1-US01-01.png │ │ ├── EditCode-S1-F1-US02-01.png │ │ ├── EditCode-S1-F1-US02-02.png │ │ ├── FirstApp-S01-F01-US01-01.png │ │ ├── InsertCode-S1-F2-US02-01.png │ │ ├── Need Screen Shot.png │ │ ├── NewFile-S01-F01-US01-01.png │ │ ├── RunApp-S1-F1-US01-01.png │ │ ├── RunApp-S1-F1-US01-02.png │ │ ├── RunApp-S1-F1-US01-03.png │ │ ├── RunApp-S1-F1-US02-01.png │ │ ├── RunApp-S1-F2-US01-01.png │ │ ├── newFile-S01-F01-US01-02.png │ │ ├── outcome-S1-F1-US1.png │ │ ├── outcome-S1-F1-US2.png │ │ └── visual-studio-code-install-python-extension.png │ └── src │ │ ├── README.md │ │ ├── app-s01-f01-us01 │ │ └── app.py │ │ ├── app-s01-f01-us02 │ │ └── app.py │ │ ├── app-s01-f02-us01 │ │ └── app.py │ │ └── app-s01-f02-us02 │ │ └── app.py ├── Sprint-02 - Web Application │ ├── Feature 1 - Web App Conversion │ │ ├── User Story 1 - Convert To Web App.md │ │ ├── User Story 2 - Add Item through Web Form.md │ │ └── User Story 3 - Remove Item through Web Form.md │ ├── Feature 2 - Basic Styling │ │ ├── User Story 1 - Add Basic Styling to the Web App.md │ │ ├── User Story 2 - Personalize Website.md │ │ ├── Using Microsoft Designer.md │ │ └── download image.md │ ├── README.md │ ├── images │ │ ├── CopyImage-S2-F2-US2-01.png │ │ ├── Directory01.png │ │ ├── NewFile-S2-F2-US2-01.png │ │ ├── ReplaceCode-S2-F1-US01-01.png │ │ ├── RunApp-S2-F2-US2-01.png │ │ ├── RunApp-S2-F2-US2-02.png │ │ ├── RunApp-S2-F2-US2-03.png │ │ ├── background_source_directory.png │ │ ├── background_source_directory_save_as.png │ │ ├── designer-01.png │ │ ├── designer-02.png │ │ ├── designer-03.png │ │ ├── designer-04.png │ │ ├── designer-05.png │ │ ├── designer-06.png │ │ ├── designer-07.png │ │ ├── designer-08.png │ │ ├── open-vs-terminal.png │ │ ├── outcome-S02-F02-US02.png │ │ ├── outcome-S02-f01-US01.png │ │ ├── outcome-S02-f01-US02.png │ │ ├── outcome-S02-f01-US03.png │ │ ├── outcome-S02-f02-US01.png │ │ └── save_to_do_list error.png │ └── src │ │ ├── README.md │ │ ├── app-s02-f01-us01 │ │ ├── app.py │ │ └── templates │ │ │ └── index.html │ │ ├── app-s02-f01-us02 │ │ ├── app.py │ │ └── templates │ │ │ └── index.html │ │ ├── app-s02-f01-us03 │ │ ├── app.py │ │ └── templates │ │ │ └── index.html │ │ ├── app-s02-f02-us01 │ │ ├── app.py │ │ └── templates │ │ │ └── index.html │ │ └── app-s02-f02-us02 │ │ ├── app.py │ │ ├── static │ │ ├── css │ │ │ └── style.css │ │ └── images │ │ │ ├── Designer01.jpeg │ │ │ ├── Designer02.jpeg │ │ │ └── favicon.ico │ │ └── templates │ │ └── index.html ├── Sprint-03 - Database Integration │ ├── Features 1 - Shift task storage to database │ │ └── User Story 1 - Move from File Storage to database.md │ ├── README.md │ ├── images │ │ ├── DatabaseFile-S3-F1-US1-01.png │ │ ├── DatabaseIntegration-S3-F1-US1-01.png │ │ └── replace_html_jinga_template.png │ └── src │ │ ├── README.md │ │ └── app-s03-f01-us01 │ │ ├── app.py │ │ ├── database.py │ │ ├── static │ │ ├── css │ │ │ └── style.css │ │ └── images │ │ │ ├── Designer01.jpeg │ │ │ ├── Designer02.jpeg │ │ │ └── favicon.ico │ │ └── templates │ │ └── index.html ├── Sprint-04 - Voice To Text │ ├── Feature 1 - Add Voice │ │ └── User Story 1 - Add Voice.md │ ├── README.md │ ├── images │ │ └── App_With_Voice_Button.png │ └── src │ │ ├── README.md │ │ └── app-s04-f01-us01 │ │ ├── app.py │ │ ├── database.py │ │ ├── static │ │ ├── css │ │ │ └── style.css │ │ ├── images │ │ │ ├── Designer01.jpeg │ │ │ ├── Designer02.jpeg │ │ │ └── favicon.ico │ │ └── js │ │ │ └── app.js │ │ └── templates │ │ └── index.html ├── Sprint-05 - Advanced AI recommendations │ ├── Feature 1 - Get Generative AI recommendation │ │ ├── User Story 1 - Get Gen AI recommendation.md │ │ ├── User Story 2 - Cache recommendations in DB.md │ │ └── User Story 3 - Refresh Recommendations.md │ ├── README.md │ ├── images │ │ ├── Recommendation_engine_changes-S05-F01-US03.png │ │ ├── outcome-S05-F01-US01.png │ │ ├── outcome-S05-F01-US03.png │ │ └── recommendation_engine_test-S5-F1-US1-01.png │ └── src │ │ ├── README.md │ │ ├── app-s05-f01-us01 │ │ ├── .env-example │ │ ├── app.py │ │ ├── database.py │ │ ├── recommendation_engine.py │ │ ├── services.py │ │ ├── static │ │ │ ├── css │ │ │ │ └── style.css │ │ │ ├── images │ │ │ │ ├── Designer01.jpeg │ │ │ │ ├── Designer02.jpeg │ │ │ │ └── favicon.ico │ │ │ └── js │ │ │ │ └── app.js │ │ └── templates │ │ │ └── index.html │ │ ├── app-s05-f01-us02 │ │ ├── .env-example │ │ ├── app.py │ │ ├── database.py │ │ ├── recommendation_engine.py │ │ ├── services.py │ │ ├── static │ │ │ ├── css │ │ │ │ └── style.css │ │ │ ├── images │ │ │ │ ├── Designer01.jpeg │ │ │ │ ├── Designer02.jpeg │ │ │ │ └── favicon.ico │ │ │ └── js │ │ │ │ └── app.js │ │ └── templates │ │ │ └── index.html │ │ └── app-s05-f01-us03 │ │ ├── .env-example │ │ ├── app.py │ │ ├── database.py │ │ ├── recommendation_engine.py │ │ ├── services.py │ │ ├── static │ │ ├── css │ │ │ └── style.css │ │ ├── images │ │ │ ├── Designer01.jpeg │ │ │ ├── Designer02.jpeg │ │ │ └── favicon.ico │ │ └── js │ │ │ └── app.js │ │ └── templates │ │ └── index.html ├── Sprint-06 - Advanced To-Do Details │ ├── Feature 1 - Add Additional To-Do Details │ │ └── User Story 1 - Add additional details to to-do item.md │ ├── README.md │ ├── images │ │ ├── outcome-S06-F01-US01-DETAILS-2.png │ │ ├── outcome-S06-F01-US01-DETAILS.png │ │ ├── outcome-S06-F01-US01-EDIT-2.png │ │ ├── outcome-S06-F01-US01-EDIT.png │ │ ├── outcome-S06-F01-US01-INDEX.png │ │ └── outcome-S06-F01-US01-RECOMMENDATIONS.png │ └── src │ │ ├── README.md │ │ └── app-s06-f01-us01 │ │ ├── .env-example │ │ ├── app.py │ │ ├── database.py │ │ ├── priority.py │ │ ├── recommendation_engine.py │ │ ├── services.py │ │ ├── static │ │ ├── css │ │ │ └── style.css │ │ ├── images │ │ │ ├── Designer01.jpeg │ │ │ ├── Designer02.jpeg │ │ │ └── favicon.ico │ │ └── js │ │ │ └── app.js │ │ ├── tab.py │ │ └── templates │ │ └── index.html ├── Sprint-07 - Advanced Styling Your Web App │ ├── Feature 1 - Advanced Styling │ │ ├── User Story 1 - Add Completed Checkbox.md │ │ ├── User Story 2 - Add Tabbed Interface.md │ │ ├── User Story 3 - Prevent User from adding blank task.md │ │ ├── User Story 4 - Confirm Delete.md │ │ └── User Story 5 - Show Spinner.md │ ├── README.md │ ├── images │ │ ├── ReplaceCode-S07-F01-US02-01.png │ │ ├── outcome-S07-F01-US01.png │ │ ├── outcome-S07-F01-US02.png │ │ ├── outcome-S07-F01-US03.png │ │ ├── outcome-S07-F01-US04.png │ │ ├── outcome-S07-F01-US05.png │ │ ├── tabbed-interface-S07-F01-US02-1.png │ │ ├── tabbed-interface-S07-F01-US02-2.png │ │ └── tabbed-interface-S07-F01-US02-3.png │ └── src │ │ ├── README.md │ │ ├── app-s07-f01-us01 │ │ ├── .env-example │ │ ├── app.py │ │ ├── context_processors.py │ │ ├── database.py │ │ ├── priority.py │ │ ├── recommendation_engine.py │ │ ├── services.py │ │ ├── static │ │ │ ├── css │ │ │ │ └── style.css │ │ │ ├── images │ │ │ │ ├── Designer01.jpeg │ │ │ │ ├── Designer02.jpeg │ │ │ │ └── favicon.ico │ │ │ └── js │ │ │ │ └── app.js │ │ ├── tab.py │ │ └── templates │ │ │ └── index.html │ │ ├── app-s07-f01-us02 │ │ ├── .env-example │ │ ├── app.py │ │ ├── context_processors.py │ │ ├── database.py │ │ ├── priority.py │ │ ├── recommendation_engine.py │ │ ├── services.py │ │ ├── static │ │ │ ├── css │ │ │ │ └── style.css │ │ │ ├── images │ │ │ │ ├── Designer01.jpeg │ │ │ │ ├── Designer02.jpeg │ │ │ │ └── favicon.ico │ │ │ └── js │ │ │ │ └── app.js │ │ ├── tab.py │ │ └── templates │ │ │ └── index.html │ │ ├── app-s07-f01-us03 │ │ ├── .env-example │ │ ├── app.py │ │ ├── context_processors.py │ │ ├── database.py │ │ ├── priority.py │ │ ├── recommendation_engine.py │ │ ├── services.py │ │ ├── static │ │ │ ├── css │ │ │ │ └── style.css │ │ │ ├── images │ │ │ │ ├── Designer01.jpeg │ │ │ │ ├── Designer02.jpeg │ │ │ │ └── favicon.ico │ │ │ └── js │ │ │ │ └── app.js │ │ ├── tab.py │ │ └── templates │ │ │ └── index.html │ │ ├── app-s07-f01-us04 │ │ ├── .env-example │ │ ├── app.py │ │ ├── context_processors.py │ │ ├── database.py │ │ ├── priority.py │ │ ├── recommendation_engine.py │ │ ├── services.py │ │ ├── static │ │ │ ├── css │ │ │ │ └── style.css │ │ │ ├── images │ │ │ │ ├── Designer01.jpeg │ │ │ │ ├── Designer02.jpeg │ │ │ │ └── favicon.ico │ │ │ └── js │ │ │ │ └── app.js │ │ ├── tab.py │ │ └── templates │ │ │ └── index.html │ │ └── app-s07-f01-us05 │ │ ├── .env-example │ │ ├── app.py │ │ ├── context_processors.py │ │ ├── database.py │ │ ├── priority.py │ │ ├── recommendation_engine.py │ │ ├── services.py │ │ ├── static │ │ ├── css │ │ │ └── style.css │ │ ├── images │ │ │ ├── Designer01.jpeg │ │ │ ├── Designer02.jpeg │ │ │ └── favicon.ico │ │ └── js │ │ │ └── app.js │ │ ├── tab.py │ │ └── templates │ │ └── index.html ├── Sprint-08 - Deploy to the Cloud │ ├── Feature 1 - Deploy to Azure.md │ │ ├── User Story 1 - Deploy to Azure -original.md │ │ ├── User Story 1 - Deploy to Azure.md │ │ ├── User Story 2 - Setup Authentication.md │ │ └── old │ │ │ └── User Story 1 - Deploy to Azure-cli.md │ ├── README.md │ ├── images │ │ ├── auzre-portal-app-service-list.png │ │ ├── auzre-portal-app-service-overview.png │ │ ├── auzre-portal-search-app-service.png │ │ ├── az-account-show.png │ │ ├── az-configure-web-db-01.png │ │ ├── az-create-web-and-db-01.png │ │ ├── az-portal-app-service-add-identity-provider.png │ │ ├── az-portal-app-service-add-identity-setup-01.png │ │ ├── az-portal-app-service-add-identity-setup-02.png │ │ ├── az-portal-app-service-add-identity-setup-03.png │ │ ├── az-portal-app-service-pane-authentication.png │ │ ├── az-portal-create-web-app.png │ │ ├── az-portal-createres.png │ │ ├── az-portal-find-app-service.png │ │ ├── az-portal-home-page-us2.png │ │ ├── az-portal-login.png │ │ ├── az-portal-resource-groups-01.png │ │ ├── az-portal-search.png │ │ ├── az-portal-security-information.png │ │ ├── az-portal-sql-option.png │ │ ├── az-portal-sql-review.png │ │ ├── az-portal-sql-srv.png │ │ ├── az-portal-srch-sql.png │ │ ├── az-portal-web-app-option.png │ │ ├── az-portal-webapp-env.png │ │ ├── az-portal-welcome-to-azure.png │ │ ├── az-review-and-create.png │ │ ├── azure-tools-upload-setting-01.png │ │ ├── azure-tools-upload-setting-02.png │ │ ├── azure-web-app-todo.png │ │ ├── sql-db-conn-string.png │ │ ├── visual-studio-code-azure-tools-extension-02.png │ │ ├── visual-studio-code-azure-tools-extension-03.png │ │ ├── visual-studio-code-azure-tools-extension-04.png │ │ ├── visual-studio-code-azure-tools-extension.png │ │ ├── visual-studio-code-azure-tools-login-02.png │ │ ├── visual-studio-code-azure-tools-login-03.png │ │ ├── visual-studio-code-azure-tools-login.png │ │ └── visual-studio-code-deploy-app-01.png │ └── src │ │ ├── README.md │ │ ├── app-s08-f01-us01 │ │ ├── .env-example │ │ ├── app.py │ │ ├── context_processors.py │ │ ├── database.py │ │ ├── priority.py │ │ ├── recommendation_engine.py │ │ ├── requirements.txt │ │ ├── services.py │ │ ├── static │ │ │ ├── css │ │ │ │ └── style.css │ │ │ ├── images │ │ │ │ ├── Designer01.jpeg │ │ │ │ ├── Designer02.jpeg │ │ │ │ └── favicon.ico │ │ │ └── js │ │ │ │ └── app.js │ │ ├── tab.py │ │ └── templates │ │ │ └── index.html │ │ └── app-s08-f01-us02 │ │ ├── .env-example │ │ ├── app.py │ │ ├── context_processors.py │ │ ├── database.py │ │ ├── priority.py │ │ ├── recommendation_engine.py │ │ ├── requirements.txt │ │ ├── services.py │ │ ├── static │ │ ├── css │ │ │ └── style.css │ │ ├── images │ │ │ ├── Designer01.jpeg │ │ │ ├── Designer02.jpeg │ │ │ └── favicon.ico │ │ └── js │ │ │ └── app.js │ │ ├── tab.py │ │ └── templates │ │ └── index.html ├── Where to Learn More.md └── content-images │ ├── MSFT_AnyonecanCode_Banner_small.png │ ├── MSFT_EveryoneCanCode_Banner.png │ ├── Sprint 00 │ ├── github │ │ ├── AccountFrontpage.png │ │ ├── CreateAnAccount.png │ │ ├── CreateCodespace.png │ │ ├── CreateCodespaces.png │ │ ├── EditProfile.gif │ │ ├── EnterEmail.png │ │ ├── EnterPassword.png │ │ ├── EnterUserName.png │ │ ├── ExplorerTab.png │ │ ├── ForkTheRepository.png │ │ ├── GithubSignUp.png │ │ ├── InstallRecommendedExtensions.png │ │ ├── Microsoft_signup.png │ │ ├── NoAnnouncements.png │ │ ├── Settings.png │ │ ├── StopCodespaces.png │ │ ├── Verification.png │ │ ├── codespaceCreate.png │ │ ├── codespaceMenu.png │ │ ├── homePage.png │ │ └── version.png │ └── local │ │ ├── git-downloaded-installer.png │ │ ├── git-finish-installation.png │ │ ├── git-install.png │ │ ├── git-installer-setup.png │ │ ├── git-not-installed.png │ │ ├── git-previously-installed.png │ │ ├── open-command-line-window.png │ │ ├── python-installation-complete.png │ │ ├── python-installation-wizard.png │ │ ├── python-installer.png │ │ ├── vscode-finish-installation.png │ │ ├── vscode-installer-accept-license.png │ │ └── vscode-installer-download.png │ ├── Sprint-01 - Basic Application │ ├── Feature 1 - Manage Todo List │ │ ├── User Story 1 - Add Item to List.MD │ │ └── User Story 2 - Remove Item from List.md │ ├── Feature 2 - Save To-Do List │ │ ├── User Story 1 - Save To-Do List to File.md │ │ └── User Story 2 - Load To-Do List from File.md │ ├── README.md │ ├── images │ │ ├── EditCode-S1-F1-US01-01.png │ │ ├── EditCode-S1-F1-US02-01.png │ │ ├── EditCode-S1-F1-US02-02.png │ │ ├── FirstApp-S01-F01-US01-01.png │ │ ├── InsertCode-S1-F2-US02-01.png │ │ ├── Need Screen Shot.png │ │ ├── NewFile-S01-F01-US01-01.png │ │ ├── RunApp-S1-F1-US01-01.png │ │ ├── RunApp-S1-F1-US01-02.png │ │ ├── RunApp-S1-F1-US01-03.png │ │ ├── RunApp-S1-F1-US02-01.png │ │ ├── RunApp-S1-F2-US01-01.png │ │ ├── newFile-S01-F01-US01-02.png │ │ ├── outcome-S1-F1-US1.png │ │ └── outcome-S1-F1-US2.png │ └── src │ │ ├── README.md │ │ ├── app-s01-f01-us01 │ │ └── app.py │ │ ├── app-s01-f01-us02 │ │ └── app.py │ │ ├── app-s01-f02-us01 │ │ └── app.py │ │ └── app-s01-f02-us02 │ │ └── app.py │ ├── anyone-can-code_1400x300.png │ ├── github-start-codespace-02.png │ └── github-start-codespace.png └── content-images ├── MSFT_EveryoneCanCode_Banner.png ├── everyone-can-code-content-reviewers.png └── everyone-can-code-core-team.png /2024-05-14 Event.md: -------------------------------------------------------------------------------- 1 | # May 14-15th, 2024 2 | 3 | ## Agenda 4 | times are represented in Central Time. 5 | 6 | - **Day 1** 7 | - 9:00 AM - 9:30 AM - **Kick-off Keynote** 8 | - 9:30 AM - 10:00 AM - **Global Keynote Ali Powell and Hazel Rice** 9 | - 10:00 AM - 10:30 AM - **Team Breakouts and Introductions** 10 | - 10:30 AM - 3:30 PM - **Hackathon / Development Sprints** 11 | - [Sprint 0: Environment Setup](/Track_1_ToDo_App/Sprint-00%20-%20Environment%20Setup/readme.md) 12 | - [Sprint 1: Console Application](/Track_1_ToDo_App/Sprint-01%20-%20Basic%20Application/README.md) 13 | - [Sprint 2: Web Application](/Track_1_ToDo_App/Sprint-02%20-%20Web%20Application/README.md) 14 | - [Sprint 3: Database Integration](/Track_1_ToDo_App/Sprint-03%20-%20Database%20Integration/README.md) 15 | - [Sprint 4: Voice To Text](/Track_1_ToDo_App/Sprint-04%20-%20Voice%20To%20Text/README.md) 16 | - 3:30 PM - 4:00 PM - **Day 1 Recap and Check-in** 17 | 18 | 19 | - **Day 2** 20 | - 9:00 AM - 9:30 AM - **Global keynote - Amanda Silver and Julia Liuson** 21 | - 9:30 AM - 10:30 AM - **Career Panel** 22 | - 10:30 AM - 3:30 PM - **Hackathon / Development Sprints** 23 | - [Sprint 5: Advanced AI recommendations](/Track_1_ToDo_App/Sprint-05%20-%20Advanced%20AI%20recommendations/README.md) 24 | - [Sprint 6: Advanced To-Do Details](/Track_1_ToDo_App//Sprint-06%20-%20Advanced%20To-Do%20Details/README.md) 25 | - [Sprint 7: Advanced Styling](/Track_1_ToDo_App/Sprint-07%20-%20Advanced%20Styling%20Your%20Web%20App/README.md) 26 | - [Sprint 8: Deploy to the Cloud](/Track_1_ToDo_App/Sprint-08%20-%20Deploy%20to%20the%20Cloud/README.md) 27 | - 3:30 PM - 4:00 PM - **Day 1 Recap and Check-in** 28 | -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- 1 | # Track 1 - To-Do Application 2 | /Track_1_ToDo_App/ @fcampise -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Microsoft Open Source Code of Conduct 2 | 3 | This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). 4 | 5 | Resources: 6 | 7 | - [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/) 8 | - [Microsoft Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) 9 | - Contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with questions or concerns 10 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) Microsoft Corporation. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE 22 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Security 4 | 5 | Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet) and [Xamarin](https://github.com/xamarin). 6 | 7 | If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://aka.ms/security.md/definition), please report it to us as described below. 8 | 9 | ## Reporting Security Issues 10 | 11 | **Please do not report security vulnerabilities through public GitHub issues.** 12 | 13 | Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://aka.ms/security.md/msrc/create-report). 14 | 15 | If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://aka.ms/security.md/msrc/pgp). 16 | 17 | You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://www.microsoft.com/msrc). 18 | 19 | Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue: 20 | 21 | * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.) 22 | * Full paths of source file(s) related to the manifestation of the issue 23 | * The location of the affected source code (tag/branch/commit or direct URL) 24 | * Any special configuration required to reproduce the issue 25 | * Step-by-step instructions to reproduce the issue 26 | * Proof-of-concept or exploit code (if possible) 27 | * Impact of the issue, including how an attacker might exploit the issue 28 | 29 | This information will help us triage your report more quickly. 30 | 31 | If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://aka.ms/security.md/msrc/bounty) page for more details about our active programs. 32 | 33 | ## Preferred Languages 34 | 35 | We prefer all communications to be in English. 36 | 37 | ## Policy 38 | 39 | Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://aka.ms/security.md/cvd). 40 | 41 | 42 | -------------------------------------------------------------------------------- /SUPPORT.md: -------------------------------------------------------------------------------- 1 | # Support 2 | 3 | ## How to file issues and get help 4 | 5 | This project uses GitHub Issues to track bugs and feature requests. Please search the existing 6 | issues before filing new issues to avoid duplicates. For new issues, file your bug or 7 | feature request as a new Issue. 8 | 9 | 10 | ## Microsoft Support Policy 11 | 12 | Support for this **PROJECT or PRODUCT** is limited to the resources listed above. 13 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-00 - Environment Setup/02 - Setup To-Do Application Repository.md: -------------------------------------------------------------------------------- 1 | # Setup To-Do Application Repository 2 | ⏲️ _Est. time to complete: 5 min._ ⏲️ 3 | 4 | ## 🎯Here is what you will learn 5 | You will learn the following: 6 | - How to create a new repository to host your project 7 | 8 | ## Create To-Do Application Repository 9 | The first thing that we will want to do as we think about building a new project is to spin up a new GitHub repository for that project. 10 | 11 | ### 1. Login to your GitHub Account 12 | Make sure that you are on the GitHub home page (i.e., [https://github.com](http://www.github.com)) and logged in via the account that you created in the last step. 13 | 14 | ### 2. Create New Repo 15 | 16 | #### 1. From the left pane of the homepage, select the _New_ button to create a new repository 17 | 18 | ![GitHub Home](./images/github-new-repo-01.png) 19 | 20 | #### 2. Fill out all of the information for the new repository: 21 | 22 | ![Github New Repo Form](./images/github-new-repo-02.png) 23 | 24 | 1. **Choose an owner** - Select the GitHub alias that you just created in the previous step 25 | 2. **Repository name** - You can use any name you would like to represent the project, in this case I chose the name _MyToDoApp_ 26 | 3. **Public/Private** - This option determines whether or not this repo is by default publically available to everyone. For this exercise we will start by having this repo be Private. 27 | 4. **Add a README file** - This creates a readme.md in the root of the project. We have selected to include this 28 | 5. **Add .gitignore** - Please select `Python` as the template to use for this file. 29 | 6. **Choose a License** - Please select `MIT License` as this is the default license that is being used for the Everyone Can Code event. 30 | 7. After setting all of these values, please select the _Create respository_ button. This will create a new repository and should look something like this: 31 | 32 | ![New Repo](./images/github-new-repo-03.png) 33 | 34 | 35 | 36 |
37 | 38 | [🔼 Home](/Track_1_ToDo_App/README.md) | [◀ Previous setup step](./01%20-%20Setup%20GitHub%20Account.md) | [Next setup step ▶](02a%20-%20Use%20GitHub%20CodeSpaces.md) 39 | 40 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-00 - Environment Setup/images/CloneRepo-S0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-00 - Environment Setup/images/CloneRepo-S0.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-00 - Environment Setup/images/CreateCodespaces.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-00 - Environment Setup/images/CreateCodespaces.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-00 - Environment Setup/images/SetupVirtualEnvrionment-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-00 - Environment Setup/images/SetupVirtualEnvrionment-01.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-00 - Environment Setup/images/SetupVirtualEnvrionment-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-00 - Environment Setup/images/SetupVirtualEnvrionment-02.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-00 - Environment Setup/images/SetupVirtualEnvrionment-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-00 - Environment Setup/images/SetupVirtualEnvrionment-03.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-00 - Environment Setup/images/SetupVirtualEnvrionment-04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-00 - Environment Setup/images/SetupVirtualEnvrionment-04.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-00 - Environment Setup/images/SetupVirtualEnvrionment-05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-00 - Environment Setup/images/SetupVirtualEnvrionment-05.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-00 - Environment Setup/images/SetupVirtualEnvrionment-06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-00 - Environment Setup/images/SetupVirtualEnvrionment-06.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-00 - Environment Setup/images/WindowsStore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-00 - Environment Setup/images/WindowsStore.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-00 - Environment Setup/images/github-new-repo-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-00 - Environment Setup/images/github-new-repo-01.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-00 - Environment Setup/images/github-new-repo-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-00 - Environment Setup/images/github-new-repo-02.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-00 - Environment Setup/images/github-new-repo-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-00 - Environment Setup/images/github-new-repo-03.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-00 - Environment Setup/images/github_copilot_extension.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-00 - Environment Setup/images/github_copilot_extension.jpg -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-00 - Environment Setup/images/visual-studio-code-clone-repo-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-00 - Environment Setup/images/visual-studio-code-clone-repo-01.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-00 - Environment Setup/readme.md: -------------------------------------------------------------------------------- 1 | # Sprint 0: Environment Setup 2 | 3 | ⏲️ _Est. time to complete: 35-60 min._ ⏲️ 4 | 5 | ## Here is what you will learn 🎯 6 | 7 | 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. 8 | 9 | ## Setup Instructions 10 | 11 | 1. [**Setup a GitHub Account**](/Track_1_ToDo_App/Sprint-00%20-%20Environment%20Setup/01%20-%20Setup%20GitHub%20Account.md) 12 | 2. [**Setup the To-Do App Repository**](/Track_1_ToDo_App/Sprint-00%20-%20Environment%20Setup/02%20-%20Setup%20To-Do%20Application%20Repository.md) 13 | 3. [**Setup GitHub Code Spaces**](/Track_1_ToDo_App/Sprint-00%20-%20Environment%20Setup/02a%20-%20Use%20GitHub%20CodeSpaces.md) 14 | 15 |
16 | click here if you would prefer to setup a local development environment 17 | 18 | - [**Windows Setup**](/Track_1_ToDo_App/Sprint-00%20-%20Environment%20Setup/02b%20-%20Setup%20Local%20Development%20Environment%20on%20Windows.md) 19 | - [**Mac Setup**](/Track_1_ToDo_App/Sprint-00%20-%20Environment%20Setup/02c%20-%20Setup%20Local%20Development%20Environment%20on%20Mac.md) 20 |
21 |
22 | 23 | [🔼 Home Page](../README.md) | [Next Sprint ▶](/Track_1_ToDo_App/Sprint-01%20-%20Basic%20Application/README.md) 24 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-00 - Environment Setup/src/requirements.txt: -------------------------------------------------------------------------------- 1 | openai 2 | flask 3 | flask[async] 4 | flask_sqlalchemy 5 | sqlalchemy 6 | semantic-kernel==0.9.5b1 7 | pyodbc 8 | fastapi -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-01 - Basic Application/README.md: -------------------------------------------------------------------------------- 1 | ## Sprint 1 - Basic Application 2 | ⏲️ _Est. time to complete: 45-60 min._ ⏲️ 3 | 4 | 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. 5 | 6 | > [!NOTE] 7 | > **🎓 Know before you start** 8 | > - [Development 101](https://www.youtube.com/watch?v=bkEBozq7aYM) 9 | > - [What is Python?](https://www.youtube.com/watch?v=7XOhibxgBlQ&list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6&index=2) (3:10 min) 10 | > - [Python Extension for Visual Studio Code](https://www.youtube.com/watch?v=CXZYvNRIAKM&list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6&index=4) (2:49 min) 11 | > 12 | 13 | **📕Feature: Manage To-Do List** 14 | 1. [**📖 Add Items to List**](/Track_1_ToDo_App/Sprint-01%20-%20Basic%20Application/Feature%201%20-%20Manage%20Todo%20List/User%20Story%201%20-%20Add%20Item%20to%20List.MD) 15 | 2. [**📖 Remove Items from List**](/Track_1_ToDo_App/Sprint-01%20-%20Basic%20Application/Feature%201%20-%20Manage%20Todo%20List/User%20Story%202%20-%20Remove%20Item%20from%20List.md) 16 | 17 | **📕Feature: Save To-Do List** 18 | 1. [**📖 Save List to File**](/Track_1_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 19 | ) 20 | 2. [**📖 Load List from File**](/Track_1_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) 21 | 22 | 23 | 24 | > [!NOTE] 25 | > 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! 26 | 27 |
28 | 29 | [🔼 Home ](/Track_1_ToDo_App/README.md) | [◀ Previous Sprint](/Track_1_ToDo_App/Sprint-00%20-%20Environment%20Setup/readme.md) | [Next sprint ▶](/Track_1_ToDo_App/Sprint-02%20-%20Web%20Application/README.md) 30 | 31 | 32 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-01 - Basic Application/images/EditCode-S1-F1-US01-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-01 - Basic Application/images/EditCode-S1-F1-US01-01.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-01 - Basic Application/images/EditCode-S1-F1-US02-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-01 - Basic Application/images/EditCode-S1-F1-US02-01.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-01 - Basic Application/images/EditCode-S1-F1-US02-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-01 - Basic Application/images/EditCode-S1-F1-US02-02.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-01 - Basic Application/images/FirstApp-S01-F01-US01-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-01 - Basic Application/images/FirstApp-S01-F01-US01-01.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-01 - Basic Application/images/InsertCode-S1-F2-US02-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-01 - Basic Application/images/InsertCode-S1-F2-US02-01.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-01 - Basic Application/images/Need Screen Shot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-01 - Basic Application/images/Need Screen Shot.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-01 - Basic Application/images/NewFile-S01-F01-US01-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-01 - Basic Application/images/NewFile-S01-F01-US01-01.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-01 - Basic Application/images/RunApp-S1-F1-US01-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-01 - Basic Application/images/RunApp-S1-F1-US01-01.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-01 - Basic Application/images/RunApp-S1-F1-US01-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-01 - Basic Application/images/RunApp-S1-F1-US01-02.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-01 - Basic Application/images/RunApp-S1-F1-US01-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-01 - Basic Application/images/RunApp-S1-F1-US01-03.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-01 - Basic Application/images/RunApp-S1-F1-US02-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-01 - Basic Application/images/RunApp-S1-F1-US02-01.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-01 - Basic Application/images/RunApp-S1-F2-US01-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-01 - Basic Application/images/RunApp-S1-F2-US01-01.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-01 - Basic Application/images/newFile-S01-F01-US01-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-01 - Basic Application/images/newFile-S01-F01-US01-02.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-01 - Basic Application/images/outcome-S1-F1-US1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-01 - Basic Application/images/outcome-S1-F1-US1.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-01 - Basic Application/images/outcome-S1-F1-US2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-01 - Basic Application/images/outcome-S1-F1-US2.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-01 - Basic Application/images/visual-studio-code-install-python-extension.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-01 - Basic Application/images/visual-studio-code-install-python-extension.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-01 - Basic Application/src/README.md: -------------------------------------------------------------------------------- 1 | # Sprint 1 - Source Code Directory 2 | This directory contains the completed source code after the end of each user story. The directory is structured as `app-s01-f01-us02` where 3 | - `s01` - represents the sprint number, in this case sprint 1 4 | - `f01` - represents the feature number, in this case feature 1 5 | - `us02` - represents the user story number, in this case user story 2 6 | 7 | > [!NOTE] 8 | > 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. 9 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-01 - Basic Application/src/app-s01-f01-us01/app.py: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | ## Sprint 1: Basic Application 3 | ## Feature 1: Create and Manage a To-Do List 4 | ## User Story 1: Add Item to List 5 | ############################################################################### 6 | 7 | todo_list = [] 8 | 9 | #continue to loop and display menu until user selects to exit the program 10 | while True: 11 | print() # Add a couple of blank lines 12 | print() 13 | print("To-do list: ") # Print the title of the list 14 | for todo in todo_list: # Loop through existing to-do items 15 | print(todo) 16 | 17 | # Print the menu 18 | print() # Add a of blank lines 19 | print("Actions:") 20 | print("A - Add to-do item") 21 | print("X - Exit") 22 | choice = input("Enter your choice (A or X): ") 23 | choice = choice.upper() #converts the choice to uppercase 24 | 25 | #user selected 'a' or 'A' - To Add an item to the list 26 | if choice == "A": 27 | todo = input("Enter the to-do item: ") 28 | todo_list.append(todo) 29 | continue #tells the program to go back to the start of the loop 30 | 31 | #user selected 'x' or 'X' to exit program 32 | if choice == "X": 33 | break #tells the program to exit the loop 34 | 35 | #user selected something else 36 | print("Invalid choice") 37 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-01 - Basic Application/src/app-s01-f01-us02/app.py: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | ## Sprint 1: Basic Application 3 | ## Feature 1: Create and Manage a To-Do List 4 | ## User Story 2: Remove Item from List 5 | ############################################################################### 6 | 7 | todo_list = [] 8 | 9 | #continue to loop and display menu until user selects to exit the program 10 | while True: 11 | print() # Add a couple of blank lines 12 | print() 13 | print("To-do list: ") # Print the title of the list 14 | item_number = 1 15 | for todo in todo_list: # Loop through existing to-do items 16 | print(f'{item_number}: {todo}') 17 | item_number += 1 18 | 19 | # Print the menu 20 | print() # Add a of blank lines 21 | print("Actions:") 22 | print("A - Add to-do item") 23 | print("R - Remove to-do item") 24 | print("X - Exit") 25 | choice = input("Enter your choice (A, R, or X): ") 26 | choice = choice.upper() #converts the choice to uppercase 27 | 28 | #user selected 'a' or 'A' - To Add an item to the list 29 | if choice == "A": 30 | todo = input("Enter the to-do item: ") 31 | todo_list.append(todo) 32 | continue #tells the program to go back to the start of the loop 33 | 34 | #user selected 'r' or 'R' - To Remove an item from the list 35 | if choice == "R": 36 | item_number = int(input("Enter the number of the item to remove: ")) 37 | if item_number > 0 and item_number <= len(todo_list): 38 | todo_list.pop(item_number - 1) 39 | else: 40 | print("Invalid item number") 41 | continue 42 | 43 | #user 1 selected 'x' or 'X' to exit program 44 | if choice == "X": 45 | break #tells the program to exit the loop 46 | 47 | #user selected something else 48 | print("Invalid choice") 49 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-01 - Basic Application/src/app-s01-f02-us01/app.py: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | ## Sprint 1: Basic Application 3 | ## Feature 2: Persist To-Do List 4 | ## User Story 1: Save To-Do List 5 | ############################################################################### 6 | 7 | todo_list = [] 8 | 9 | #continue to loop and display menu until user selects to exit the program 10 | while True: 11 | print() # Add a couple of blank lines 12 | print() 13 | print("To-do list: ") # Print the title of the list 14 | item_number = 1 15 | for todo in todo_list: # Loop through existing to-do items 16 | print(f'{item_number}: {todo}') 17 | item_number += 1 18 | 19 | # Print the menu 20 | print() # Add a of blank lines 21 | print("Actions:") 22 | print("A - Add to-do item") 23 | print("R - Remove to-do item") 24 | print("X - Exit") 25 | choice = input("Enter your choice (A, R, or X): ") 26 | choice = choice.upper() #converts the choice to uppercase 27 | 28 | #user selected 'a' or 'A' - To Add an item to the list 29 | if choice == "A": 30 | todo = input("Enter the to-do item: ") 31 | todo_list.append(todo) 32 | continue #tells the program to go back to the start of the loop 33 | 34 | #user selected 'r' or 'R' - To Remove an item from the list 35 | if choice == "R": 36 | item_number = int(input("Enter the number of the item to remove: ")) 37 | if item_number > 0 and item_number <= len(todo_list): 38 | todo_list.pop(item_number - 1) 39 | else: 40 | print("Invalid item number") 41 | continue 42 | 43 | #user 1 selected 'x' or 'X' to exit program 44 | if choice == "X": 45 | #on exit save your current list to a file 46 | print("Saving to-do list to file") 47 | with open("todo_list.txt", "w") as file: 48 | for todo in todo_list: 49 | file.write(todo + "\n") 50 | 51 | break #tells the program to exit the loop 52 | 53 | #user selected something else 54 | print("Invalid choice") 55 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-01 - Basic Application/src/app-s01-f02-us02/app.py: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | ## Feature 2: Persist To-Do List 3 | ## User Story 2: Load To-Do List 4 | ############################################################################### 5 | 6 | todo_list = [] 7 | 8 | # load the to-do list from a file 9 | try: 10 | with open("todo_list.txt", "r") as file: 11 | for line in file: 12 | todo_list.append(line.strip()) 13 | except FileNotFoundError: 14 | # ignore the error if the file does not exist, simply start with an empty list 15 | print("No saved items found") 16 | 17 | # continue to loop and display menu until user selects to exit the program 18 | while True: 19 | print() # add a couple of blank lines 20 | print() 21 | print("To-do list: ") # print the title of the list 22 | item_number = 1 23 | for todo in todo_list: # loop through existing to-do items 24 | print(f'{item_number}: {todo}') 25 | item_number += 1 26 | 27 | # print the menu 28 | print() # Add a of blank lines 29 | print("Actions:") 30 | print("A - Add to-do item") 31 | print("R - Remove to-do item") 32 | print("X - Exit") 33 | choice = input("Enter your choice (A, R, or X): ") 34 | choice = choice.upper() # converts the choice to uppercase 35 | 36 | # user selected 'a' or 'A' to add an item to the list 37 | if choice == "A": 38 | todo = input("Enter the to-do item: ") 39 | todo_list.append(todo) 40 | continue # tells the program to go back to the start of the loop 41 | 42 | # user selected 'r' or 'R' - To Remove an item from the list 43 | if choice == "R": 44 | item_number = int(input("Enter the number of the item to remove: ")) 45 | if item_number > 0 and item_number <= len(todo_list): 46 | todo_list.pop(item_number - 1) 47 | else: 48 | print("Invalid item number") 49 | continue 50 | 51 | # user 1 selected 'x' or 'X' to exit program 52 | if choice == "X": 53 | # on exit save your current list to a file 54 | print("Saving to-do list to file") 55 | with open("todo_list.txt", "w") as file: 56 | for todo in todo_list: 57 | file.write(todo + "\n") 58 | 59 | break # tells the program to exit the loop 60 | 61 | #user selected something else 62 | print("Invalid choice") 63 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-02 - Web Application/Feature 2 - Basic Styling/download image.md: -------------------------------------------------------------------------------- 1 | # Download Background Image to your PC 2 | 3 | ## 📋 Steps 4 | 5 | ### 1. Get Source Image 6 | If you want to use the pre-created image you can find it in this [**directory**](/Track_1_ToDo_App/Sprint-02%20-%20Web%20Application/src/app-s02-f02-us02/static/images/) 7 | 8 | ![Background source directory](../images/background_source_directory.png) 9 | 10 | ### 2. Save Image Locally 11 | 12 | 1. Select the `Designer02.jpeg` file which should bring up the picture within the repo. Simply 13 | 2. Right-click on the image and select **Save image as** to bring up a file dialogue box. 14 | 15 | 16 | ![save as](../images/background_source_directory_save_as.png) 17 | 18 | 3. In the file dialogue box, find a directory on your local machine to temporarily store the image. 19 | 20 |
21 | 22 | [🔼 Back Personalize Web Application User Story ](./User%20Story%202%20-%20Personalize%20Website.md#1-create-or-use-a-background-picture) -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-02 - Web Application/README.md: -------------------------------------------------------------------------------- 1 | # Sprint 2: Building a Web Application 2 | ⏲️ _Est. time to complete: 80 min._ ⏲️ 3 | 4 | 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. 5 | 6 | > [!NOTE] 7 | > **🎓 Know before you start** 8 | > - **to-do**: Web Apps Explained - Basics of Building a Web App\> 9 | 10 | **📕Feature: Web App Conversion** 11 | 1. [**📖 Convert Console App to Web App**](/Track_1_ToDo_App/Sprint-02%20-%20Web%20Application/Feature%201%20-%20Web%20App%20Conversion/User%20Story%201%20-%20Convert%20To%20Web%20App.md) 12 | 2. [**📖 Add Item through Web Form**](/Track_1_ToDo_App/Sprint-02%20-%20Web%20Application/Feature%201%20-%20Web%20App%20Conversion/User%20Story%202%20-%20Add%20Item%20through%20Web%20Form.md) 13 | 3. [**📖 Remove Item through Web Form**](/Track_1_ToDo_App/Sprint-02%20-%20Web%20Application/Feature%201%20-%20Web%20App%20Conversion/User%20Story%203%20-%20Remove%20Item%20through%20Web%20Form.md) 14 | 15 | **📕Feature: Basic Styling** 16 | 1. [**📖 Add Basic Styling to Web App**](/Track_1_ToDo_App/Sprint-02%20-%20Web%20Application/Feature%202%20-%20Basic%20Styling/User%20Story%201%20-%20Add%20Basic%20Styling%20to%20the%20Web%20App.md) 17 | 2. [**📖 Personalize Website**](/Track_1_ToDo_App/Sprint-02%20-%20Web%20Application/Feature%202%20-%20Basic%20Styling/User%20Story%202%20-%20Personalize%20Website.md) 18 |
19 | 20 | [🔼 Home ](/Track_1_ToDo_App/README.md) | [◀ Previous Sprint](/Track_1_ToDo_App/Sprint-01%20-%20Basic%20Application/README.md) | [Next sprint ▶](/Track_1_ToDo_App/Sprint-03%20-%20Database%20Integration/README.md) 21 | 22 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-02 - Web Application/images/CopyImage-S2-F2-US2-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-02 - Web Application/images/CopyImage-S2-F2-US2-01.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-02 - Web Application/images/Directory01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-02 - Web Application/images/Directory01.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-02 - Web Application/images/NewFile-S2-F2-US2-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-02 - Web Application/images/NewFile-S2-F2-US2-01.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-02 - Web Application/images/ReplaceCode-S2-F1-US01-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-02 - Web Application/images/ReplaceCode-S2-F1-US01-01.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-02 - Web Application/images/RunApp-S2-F2-US2-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-02 - Web Application/images/RunApp-S2-F2-US2-01.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-02 - Web Application/images/RunApp-S2-F2-US2-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-02 - Web Application/images/RunApp-S2-F2-US2-02.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-02 - Web Application/images/RunApp-S2-F2-US2-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-02 - Web Application/images/RunApp-S2-F2-US2-03.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-02 - Web Application/images/background_source_directory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-02 - Web Application/images/background_source_directory.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-02 - Web Application/images/background_source_directory_save_as.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-02 - Web Application/images/background_source_directory_save_as.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-02 - Web Application/images/designer-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-02 - Web Application/images/designer-01.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-02 - Web Application/images/designer-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-02 - Web Application/images/designer-02.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-02 - Web Application/images/designer-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-02 - Web Application/images/designer-03.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-02 - Web Application/images/designer-04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-02 - Web Application/images/designer-04.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-02 - Web Application/images/designer-05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-02 - Web Application/images/designer-05.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-02 - Web Application/images/designer-06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-02 - Web Application/images/designer-06.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-02 - Web Application/images/designer-07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-02 - Web Application/images/designer-07.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-02 - Web Application/images/designer-08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-02 - Web Application/images/designer-08.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-02 - Web Application/images/open-vs-terminal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-02 - Web Application/images/open-vs-terminal.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-02 - Web Application/images/outcome-S02-F02-US02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-02 - Web Application/images/outcome-S02-F02-US02.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-02 - Web Application/images/outcome-S02-f01-US01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-02 - Web Application/images/outcome-S02-f01-US01.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-02 - Web Application/images/outcome-S02-f01-US02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-02 - Web Application/images/outcome-S02-f01-US02.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-02 - Web Application/images/outcome-S02-f01-US03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-02 - Web Application/images/outcome-S02-f01-US03.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-02 - Web Application/images/outcome-S02-f02-US01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-02 - Web Application/images/outcome-S02-f02-US01.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-02 - Web Application/images/save_to_do_list error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-02 - Web Application/images/save_to_do_list error.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-02 - Web Application/src/README.md: -------------------------------------------------------------------------------- 1 | # Sprint 2 - Source Code Directory 2 | This directory contains the completed source code after the end of each user story. The directory is structured as `app-s02-f02-us02` where 3 | - `s02` - represents the sprint number, in this case sprint 2 4 | - `f02` - represents the feature number, in this case feature 2 5 | - `us02` - represents the user story number, in this case user story 2 6 | 7 | > [!NOTE] 8 | > 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. -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-02 - Web Application/src/app-s02-f01-us01/app.py: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | ## Sprint 02 - Web Application 3 | ## Feature 1: Web App Conversion 4 | ## User Story 1: Make a Web Application from the basic application code 5 | ############################################################################### 6 | import os 7 | from flask import Flask, render_template, request, redirect, url_for 8 | 9 | app = Flask(__name__) 10 | basedir = os.path.abspath(os.path.dirname(__file__)) # Get the directory of the this file 11 | todo_file = os.path.join(basedir, 'todo_list.txt') # Create the path to the to-do list file using the directory 12 | 13 | todo_list = [] 14 | 15 | # Load the to-do list from a file 16 | try: 17 | print("Loading the to-do list from the file") 18 | with open(todo_file, "r") as file: 19 | for line in file: 20 | print(line) 21 | todo_list.append(line.strip()) 22 | except FileNotFoundError as e: 23 | print(f"Error details: {e}") 24 | pass 25 | 26 | @app.route("/") 27 | def index(): 28 | return render_template("index.html", todo_list=todo_list) 29 | 30 | if __name__ == "__main__": 31 | app.run(debug=True) -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-02 - Web Application/src/app-s02-f01-us01/templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | To-Do List 5 | 6 | 7 |

To-Do List

8 |
    9 | {% for todo in todo_list %} 10 |
  1. {{ todo }}
  2. 11 | {% endfor %} 12 |
13 | 14 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-02 - Web Application/src/app-s02-f01-us02/app.py: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | ## Sprint 02 - Web Application 3 | ## Feature 1: Web App Conversion 4 | ## User Story 2: Add to-do items through the web interface 5 | ############################################################################### 6 | import os 7 | from flask import Flask, render_template, request, redirect, url_for 8 | 9 | app = Flask(__name__) 10 | basedir = os.path.abspath(os.path.dirname(__file__)) # Get the directory of the this file 11 | todo_file = os.path.join(basedir, 'todo_list.txt') # Create the path to the to-do list file using the directory 12 | 13 | todo_list = [] 14 | 15 | # Load the to-do list from a file 16 | try: 17 | print("Loading the to-do list from the file") 18 | with open(todo_file, "r") as file: 19 | for line in file: 20 | print(line) 21 | todo_list.append(line.strip()) 22 | except FileNotFoundError as e: 23 | print(f"Error details: {e}") 24 | pass 25 | 26 | @app.route("/") 27 | def index(): 28 | return render_template("index.html", todo_list=todo_list) 29 | 30 | @app.route("/add", methods=["POST"]) 31 | def add_todo(): 32 | todo = request.form["todo"] 33 | todo_list.append(todo) 34 | save_todo_list() 35 | return redirect(url_for("index")) 36 | 37 | def save_todo_list(): 38 | with open(todo_file, "w") as file: 39 | for todo in todo_list: 40 | file.write(todo + "\n") 41 | 42 | if __name__ == "__main__": 43 | app.run(debug=True) -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-02 - Web Application/src/app-s02-f01-us02/templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | To-Do List 5 | 6 | 7 |

To-Do List

8 |
    9 | {% for todo in todo_list %} 10 |
  1. {{ todo }}
  2. 11 | {% endfor %} 12 |
13 |
14 | 15 | 16 | 17 |
18 | 19 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-02 - Web Application/src/app-s02-f01-us03/app.py: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | ## Sprint 2: Web Application 3 | ## Feature 2: Persist To-Do List 4 | ## User Story 2: Load To-Do List 5 | ############################################################################### 6 | import os 7 | from flask import Flask, render_template, request, redirect, url_for 8 | 9 | app = Flask(__name__) 10 | basedir = os.path.abspath(os.path.dirname(__file__)) # Get the directory of the this file 11 | todo_file = os.path.join(basedir, 'todo_list.txt') # Create the path to the to-do list file using the directory 12 | 13 | todo_list = [] 14 | 15 | # Load the to-do list from a file 16 | try: 17 | print("Loading the to-do list from the file") 18 | with open(todo_file, "r+") as file: 19 | for line in file: 20 | print(line) 21 | todo_list.append(line.strip()) 22 | except FileNotFoundError as e: 23 | print(f"Error details: {e}") 24 | pass 25 | 26 | @app.route("/") 27 | def index(): 28 | return render_template("index.html", todo_list=todo_list) 29 | 30 | @app.route("/add", methods=["POST"]) 31 | def add_todo(): 32 | todo = request.form["todo"] 33 | todo_list.append(todo) 34 | save_todo_list() 35 | return redirect(url_for("index")) 36 | 37 | @app.route("/remove", methods=["POST"]) 38 | def remove_todo(): 39 | item_number = int(request.form["item_number"]) 40 | if 0 < item_number <= len(todo_list): 41 | todo_list.pop(item_number - 1) 42 | save_todo_list() 43 | return redirect(url_for("index")) 44 | 45 | def save_todo_list(): 46 | with open(todo_file, "w") as file: 47 | for todo in todo_list: 48 | file.write(todo + "\n") 49 | 50 | if __name__ == "__main__": 51 | app.run(debug=True) -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-02 - Web Application/src/app-s02-f01-us03/templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | To-Do List 5 | 6 | 7 |

To-Do List

8 |
    9 | {% for todo in todo_list %} 10 |
  1. {{ todo }}
  2. 11 | {% endfor %} 12 |
13 |
14 | 15 | 16 | 17 |
18 |
19 | 20 | 21 | 22 |
23 | 24 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-02 - Web Application/src/app-s02-f02-us01/app.py: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | ## Sprint 2: Web Application 3 | ## Feature 2: Personalize Web Application 4 | ## User Story 1: Add Basic Styling 5 | ############################################################################### 6 | import os 7 | from flask import Flask, render_template, request, redirect, url_for 8 | 9 | app = Flask(__name__) 10 | basedir = os.path.abspath(os.path.dirname(__file__)) # Get the directory of the this file 11 | todo_file = os.path.join(basedir, 'todo_list.txt') # Create the path to the to-do list file using the directory 12 | 13 | todo_list = [] 14 | 15 | # Load the to-do list from a file 16 | try: 17 | print("Loading the to-do list from the file") 18 | with open(todo_file, "r+") as file: 19 | for line in file: 20 | print(line) 21 | todo_list.append(line.strip()) 22 | except FileNotFoundError as e: 23 | print(f"Error details: {e}") 24 | pass 25 | 26 | @app.route("/") 27 | def index(): 28 | return render_template("index.html", todo_list=todo_list) 29 | 30 | @app.route("/add", methods=["POST"]) 31 | def add_todo(): 32 | todo = request.form["todo"] 33 | todo_list.append(todo) 34 | save_todo_list() 35 | return redirect(url_for("index")) 36 | 37 | @app.route("/remove", methods=["POST"]) 38 | def remove_todo(): 39 | item_number = int(request.form["item_number"]) 40 | if 0 < item_number <= len(todo_list): 41 | todo_list.pop(item_number - 1) 42 | save_todo_list() 43 | return redirect(url_for("index")) 44 | 45 | def save_todo_list(): 46 | with open(todo_file, "w") as file: 47 | for todo in todo_list: 48 | file.write(todo + "\n") 49 | 50 | if __name__ == "__main__": 51 | app.run(debug=True) -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-02 - Web Application/src/app-s02-f02-us01/templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | To-Do List 5 | 6 | 7 | 8 |
9 |

To-Do List

10 |
11 |
12 |
    13 | {% for todo in todo_list %} 14 |
  1. {{ todo }}
  2. 15 | {% endfor %} 16 |
17 |
18 |
19 |
20 |
21 |
22 | 23 | 24 |
25 | 26 |
27 |
28 |
29 |
30 |
31 | 32 | 33 |
34 | 35 |
36 |
37 |
38 |
39 | 40 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-02 - Web Application/src/app-s02-f02-us02/app.py: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | ## Sprint 2: Web Application 3 | ## Feature 2: Personalize Web Application 4 | ## User Story 2: Personalize Web Application 5 | ############################################################################### 6 | import os 7 | from flask import Flask, render_template, request, redirect, url_for 8 | 9 | app = Flask(__name__) 10 | basedir = os.path.abspath(os.path.dirname(__file__)) # Get the directory of the this file 11 | todo_file = os.path.join(basedir, 'todo_list.txt') # Create the path to the to-do list file using the directory 12 | 13 | todo_list = [] 14 | 15 | # Load the to-do list from a file 16 | try: 17 | print("Loading the to-do list from the file") 18 | with open(todo_file, "r+") as file: 19 | for line in file: 20 | print(line) 21 | todo_list.append(line.strip()) 22 | except FileNotFoundError as e: 23 | print(f"Error details: {e}") 24 | pass 25 | 26 | @app.route("/") 27 | def index(): 28 | return render_template("index.html", todo_list=todo_list) 29 | 30 | @app.route("/add", methods=["POST"]) 31 | def add_todo(): 32 | todo = request.form["todo"] 33 | todo_list.append(todo) 34 | save_todo_list() 35 | return redirect(url_for("index")) 36 | 37 | @app.route("/remove", methods=["POST"]) 38 | def remove_todo(): 39 | item_number = int(request.form["item_number"]) 40 | if 0 < item_number <= len(todo_list): 41 | todo_list.pop(item_number - 1) 42 | save_todo_list() 43 | return redirect(url_for("index")) 44 | 45 | def save_todo_list(): 46 | with open(todo_file, "w") as file: 47 | for todo in todo_list: 48 | file.write(todo + "\n") 49 | 50 | if __name__ == "__main__": 51 | app.run(debug=True) -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-02 - Web Application/src/app-s02-f02-us02/static/css/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: f0f0f0; /* light grey */ 3 | color: darkslategray; /* default font color */ 4 | font-family: Arial, sans-serif; 5 | background-image: url("../images/Designer02.jpeg"); 6 | background-repeat: no-repeat; 7 | background-position: center; 8 | background-size:cover; 9 | } 10 | 11 | label { 12 | color: white 13 | } 14 | 15 | h1 { 16 | color: darkgray; /* font for the h1 header*/ 17 | } 18 | 19 | .list-group-item { 20 | color: #333; /* dark grey */ 21 | } 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-02 - Web Application/src/app-s02-f02-us02/static/images/Designer01.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-02 - Web Application/src/app-s02-f02-us02/static/images/Designer01.jpeg -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-02 - Web Application/src/app-s02-f02-us02/static/images/Designer02.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-02 - Web Application/src/app-s02-f02-us02/static/images/Designer02.jpeg -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-02 - Web Application/src/app-s02-f02-us02/static/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-02 - Web Application/src/app-s02-f02-us02/static/images/favicon.ico -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-02 - Web Application/src/app-s02-f02-us02/templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | My To-Do List 5 | 6 | 7 | 8 | 9 | 10 |
11 |
12 |
13 |
14 |
15 |
16 |

My To-Do List

17 |
18 |
19 |
20 |
21 |
    22 | {% for todo in todo_list %} 23 |
  1. {{ todo }}
  2. 24 | {% endfor %} 25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 | 33 | 34 |
35 | 36 |
37 |
38 |
39 |
40 |
41 | 42 | 43 |
44 | 45 |
46 |
47 |
48 |
49 | 50 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-03 - Database Integration/README.md: -------------------------------------------------------------------------------- 1 | # Sprint 3: Database Integration 2 | ⏲️ _Est. time to complete: 25 min._ ⏲️ 3 | 4 | In this sprint we will be taking the web application from Sprint 2 and adding in the ability to store tasks in a database to persist any changes that are made. This will allow users to access their tasks from any device with internet connectivity and not have to worry about concurrent users competing to write to a local file. 5 | 6 | **📕Feature: Shift task storage to database** 7 | 1. [**📖 Convert file storage to database storage**](/Track_1_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) 8 | 9 | 10 | 11 |
12 | 13 | 14 | [🔼 Home ](/Track_1_ToDo_App/README.md) | [◀ Previous Sprint](/Track_1_ToDo_App/Sprint-02%20-%20Web%20Application/README.md) | [Next sprint ▶](/Track_1_ToDo_App/Sprint-04%20-%20Voice%20To%20Text/README.md) 15 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-03 - Database Integration/images/DatabaseFile-S3-F1-US1-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-03 - Database Integration/images/DatabaseFile-S3-F1-US1-01.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-03 - Database Integration/images/DatabaseIntegration-S3-F1-US1-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-03 - Database Integration/images/DatabaseIntegration-S3-F1-US1-01.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-03 - Database Integration/images/replace_html_jinga_template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-03 - Database Integration/images/replace_html_jinga_template.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-03 - Database Integration/src/README.md: -------------------------------------------------------------------------------- 1 | # Sprint 3 - Source Code Directory 2 | This directory contains the completed source code after the end of each user story. The directory is structured as `app-s03-f01-us01` where 3 | - `s03` - represents the sprint number, in this case sprint 3 4 | - `f01` - represents the feature number, in this case feature 1 5 | - `us01` - represents the user story number, in this case user story 1 6 | 7 | > [!NOTE] 8 | > 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. -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-03 - Database Integration/src/app-s03-f01-us01/app.py: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | ## Sprint 3: Database Integration 3 | ## Feature 2: Persist To-Do List 4 | ## User Story 2: Load To-Do List 5 | ############################################################################### 6 | import os 7 | from flask import Flask, render_template, request, redirect, url_for, g 8 | from database import db, Todo 9 | 10 | app = Flask(__name__) 11 | basedir = os.path.abspath(os.path.dirname(__file__)) # Get the directory of the this file 12 | todo_file = os.path.join(basedir, 'todo_list.txt') # Create the path to the to-do list file using the directory 13 | app.config["SQLALCHEMY_DATABASE_URI"] = 'sqlite:///' + os.path.join(basedir, 'todos.db') 14 | app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False 15 | 16 | db.init_app(app) 17 | 18 | with app.app_context(): 19 | db.create_all() 20 | 21 | @app.before_request 22 | def load_data_to_g(): 23 | todos = Todo.query.all() 24 | g.todos = todos 25 | g.todo = None 26 | 27 | @app.route("/") 28 | def index(): 29 | return render_template("index.html") 30 | 31 | @app.route("/add", methods=["POST"]) 32 | def add_todo(): 33 | # Get the data from the form 34 | todo = Todo( 35 | name=request.form["todo"], 36 | ) 37 | # Add the new ToDo to the list 38 | db.session.add(todo) 39 | db.session.commit() 40 | 41 | # Add the new ToDo to the list 42 | return redirect(url_for('index')) 43 | 44 | # Delete a ToDo 45 | @app.route('/remove/', methods=['GET', "POST"]) 46 | def remove_todo(id): 47 | db.session.delete(Todo.query.filter_by(id=id).first()) 48 | db.session.commit() 49 | return redirect(url_for('index')) 50 | 51 | if __name__ == "__main__": 52 | app.run(debug=True) -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-03 - Database Integration/src/app-s03-f01-us01/database.py: -------------------------------------------------------------------------------- 1 | from flask_sqlalchemy import SQLAlchemy 2 | from sqlalchemy import Integer, String, Boolean, func 3 | from sqlalchemy.orm import DeclarativeBase 4 | 5 | class Base(DeclarativeBase): 6 | pass 7 | 8 | db = SQLAlchemy(model_class=Base) 9 | 10 | class Todo(db.Model): 11 | id = db.Column(Integer, primary_key=True) 12 | name = db.Column(String(100), nullable=False) 13 | 14 | def __str__(self): 15 | return self.name 16 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-03 - Database Integration/src/app-s03-f01-us01/static/css/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: f0f0f0; /* light grey */ 3 | color: darkslategray; /* default font color */ 4 | font-family: Arial, sans-serif; 5 | background-image: url("../images/Designer02.jpeg"); 6 | background-repeat: no-repeat; 7 | background-position: center; 8 | background-size:cover; 9 | } 10 | 11 | label { 12 | color: white 13 | } 14 | 15 | h1 { 16 | color: darkgray; /* font for the h1 header*/ 17 | } 18 | 19 | .list-group-item { 20 | color: #333; /* dark grey */ 21 | } 22 | 23 | 24 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-03 - Database Integration/src/app-s03-f01-us01/static/images/Designer01.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-03 - Database Integration/src/app-s03-f01-us01/static/images/Designer01.jpeg -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-03 - Database Integration/src/app-s03-f01-us01/static/images/Designer02.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-03 - Database Integration/src/app-s03-f01-us01/static/images/Designer02.jpeg -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-03 - Database Integration/src/app-s03-f01-us01/static/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-03 - Database Integration/src/app-s03-f01-us01/static/images/favicon.ico -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-03 - Database Integration/src/app-s03-f01-us01/templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | My To-Do List 5 | 6 | 7 | 8 | 9 | 10 |
11 |
12 |
13 |
14 |

My To-Do List

15 |
16 |
17 |
18 |
19 |
20 |
    21 | {% for todo in g.todos %} 22 |
  1. 23 |
    24 |
    {{ todo.name }}
    25 |
    26 | 27 | 28 | 29 |
  2. 30 | {% endfor %} 31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 | 40 | 41 |
42 | 43 |
44 |
45 |
46 |
47 | 48 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-04 - Voice To Text/README.md: -------------------------------------------------------------------------------- 1 | # Sprint 4: Adding in Voice to Text 2 | ⏲️ _Est. time to complete: 30 min._ ⏲️ 3 | 4 | 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. 5 | 6 | > [!NOTE] 7 | > **💻 Note for Mac M1 Users** - If you are using a Mac M1 device, please note that you will need to use Chrome or Safari as the voice-to-text mechanism used here is not supported in Edge on Mac M1 devices. 8 | 9 | **📕Feature: Voice to Text** 10 | 1. [**📖 Add ability to use voice to add task name**](/Track_1_ToDo_App/Sprint-04%20-%20Voice%20To%20Text/Feature%201%20-%20Add%20Voice/User%20Story%201%20-%20Add%20Voice.md) 11 | 12 | 13 | 14 |
15 | 16 | [🔼 Home Page ](/Track_1_ToDo_App/README.md) | [◀ Previous Sprint](/Track_1_ToDo_App/Sprint-03%20-%20Database%20Integration/README.md) | [Next sprint ▶](/Track_1_ToDo_App/Sprint-05%20-%20Advanced%20AI%20recommendations/README.md) 17 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-04 - Voice To Text/images/App_With_Voice_Button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-04 - Voice To Text/images/App_With_Voice_Button.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-04 - Voice To Text/src/README.md: -------------------------------------------------------------------------------- 1 | # Sprint 4 - Source Code Directory 2 | This directory contains the completed source code after the end of each user story. The directory is structured as `app-s04-f01-us01` where 3 | - `s04` - represents the sprint number, in this case sprint 4 4 | - `f01` - represents the feature number, in this case feature 1 5 | - `us01` - represents the user story number, in this case user story 1 6 | 7 | > [!NOTE] 8 | > 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. -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-04 - Voice To Text/src/app-s04-f01-us01/app.py: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | ## Sprint 3: Database Integration 3 | ## Feature 1: Add Voice 4 | ## User Story 1: Add Voice to Text 5 | ############################################################################### 6 | import os 7 | from flask import Flask, render_template, request, redirect, url_for, g 8 | from database import db, Todo 9 | 10 | app = Flask(__name__) 11 | basedir = os.path.abspath(os.path.dirname(__file__)) # Get the directory of the this file 12 | todo_file = os.path.join(basedir, 'todo_list.txt') # Create the path to the to-do list file using the directory 13 | app.config["SQLALCHEMY_DATABASE_URI"] = 'sqlite:///' + os.path.join(basedir, 'todos.db') 14 | app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False 15 | 16 | db.init_app(app) 17 | 18 | with app.app_context(): 19 | db.create_all() 20 | 21 | @app.before_request 22 | def load_data_to_g(): 23 | todos = Todo.query.all() 24 | g.todos = todos 25 | g.todo = None 26 | 27 | @app.route("/") 28 | def index(): 29 | return render_template("index.html", todo_list=g.todos) 30 | 31 | @app.route("/add", methods=["POST"]) 32 | def add_todo(): 33 | # Get the data from the form 34 | todo = Todo( 35 | name=request.form["todo"], 36 | ) 37 | # Add the new ToDo to the list 38 | db.session.add(todo) 39 | db.session.commit() 40 | 41 | # Add the new ToDo to the list 42 | return redirect(url_for('index')) 43 | 44 | # Delete a ToDo 45 | @app.route('/remove/', methods=["POST"]) 46 | def remove_todo(id): 47 | db.session.delete(Todo.query.filter_by(id=id).first()) 48 | db.session.commit() 49 | return redirect(url_for('index')) 50 | 51 | if __name__ == "__main__": 52 | app.run(debug=True) -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-04 - Voice To Text/src/app-s04-f01-us01/database.py: -------------------------------------------------------------------------------- 1 | from flask_sqlalchemy import SQLAlchemy 2 | from sqlalchemy import Integer, String, Boolean, func 3 | from sqlalchemy.orm import DeclarativeBase 4 | 5 | class Base(DeclarativeBase): 6 | pass 7 | 8 | db = SQLAlchemy(model_class=Base) 9 | 10 | class Todo(db.Model): 11 | id = db.Column(Integer, primary_key=True) 12 | name = db.Column(String(100), nullable=False) 13 | 14 | def __str__(self): 15 | return self.name 16 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-04 - Voice To Text/src/app-s04-f01-us01/static/css/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: f0f0f0; /* light grey */ 3 | color: darkslategray; /* default font color */ 4 | font-family: Arial, sans-serif; 5 | background-image: url("../images/Designer02.jpeg"); 6 | background-repeat: no-repeat; 7 | background-position: center; 8 | background-size:cover; 9 | } 10 | 11 | h1 { 12 | color: darkgray; /* font for the h1 header*/ 13 | } 14 | 15 | .list-group-item { 16 | color: #333; /* dark grey */ 17 | } 18 | 19 | 20 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-04 - Voice To Text/src/app-s04-f01-us01/static/images/Designer01.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-04 - Voice To Text/src/app-s04-f01-us01/static/images/Designer01.jpeg -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-04 - Voice To Text/src/app-s04-f01-us01/static/images/Designer02.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-04 - Voice To Text/src/app-s04-f01-us01/static/images/Designer02.jpeg -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-04 - Voice To Text/src/app-s04-f01-us01/static/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-04 - Voice To Text/src/app-s04-f01-us01/static/images/favicon.ico -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-04 - Voice To Text/src/app-s04-f01-us01/static/js/app.js: -------------------------------------------------------------------------------- 1 | document.addEventListener("DOMContentLoaded", function() { 2 | const nameInput = document.getElementById("todo"); 3 | 4 | //add javascript to support speech recognition for the todo input field 5 | const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition; 6 | const recognition = new SpeechRecognition(); 7 | recognition.continuous = false; 8 | recognition.lang = "en-US"; 9 | recognition.interimResults = false; 10 | 11 | window.captureVoice = function() { 12 | recognition.start(); 13 | nameInput.value = "Your microphone is activated, speak to record voice"; 14 | }; 15 | 16 | recognition.onresult = function(event) { 17 | const transcript = event.results[0][0].transcript; 18 | const recognizedText = transcript.endsWith('.') ? transcript.slice(0, -1) : transcript; 19 | nameInput.value = recognizedText; 20 | }; 21 | 22 | recognition.onspeechend = function() { 23 | recognition.stop(); 24 | }; 25 | 26 | recognition.onnomatch = function(event) { 27 | nameInput.value = "I didn't recognize that prompt."; 28 | }; 29 | 30 | recognition.onerror = function(event) { 31 | nameInput.value = "Error occurred in recognition: " + event.error; 32 | }; 33 | }); -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/README.md: -------------------------------------------------------------------------------- 1 | # Sprint 5: Advanced AI Recommendations 2 | ⏲️ _Est. time to complete: 1 hour 10 min._ ⏲️ 3 | 4 | In this sprint you will be taking the application that you built in Sprint 4 and adding in AI recommendations to help users complete their tasks. This will be done by leveraging the Azure OpenAI API to generate recommendations based on the task name. 5 | 6 | **📕Feature: Advanced AI Recommendations** 7 | 1. [**📖 Get Recommendations from Generative AI based on To-Do name**](/Track_1_ToDo_App/Sprint-05%20-%20Advanced%20AI%20recommendations/Feature%201%20-%20Get%20Generative%20AI%20recommendation/User%20Story%201%20-%20Get%20Gen%20AI%20recommendation.md) 8 | 2. [**📖 Store the recommendations in the DB for a task**](/Track_1_ToDo_App/Sprint-05%20-%20Advanced%20AI%20recommendations/Feature%201%20-%20Get%20Generative%20AI%20recommendation/User%20Story%202%20-%20Cache%20recommendations%20in%20DB.md) 9 | 3. [**📖 Allow the user to refresh the recommendations**](/Track_1_ToDo_App/Sprint-05%20-%20Advanced%20AI%20recommendations/Feature%201%20-%20Get%20Generative%20AI%20recommendation/User%20Story%203%20-%20Refresh%20Recommendations.md) 10 | 11 |
12 | 13 | [🔼 Home ](/Track_1_ToDo_App/README.md) | [◀ Previous Sprint](/Track_1_ToDo_App/Sprint-04%20-%20Voice%20To%20Text/README.md) | [Next sprint ▶](/Track_1_ToDo_App/Sprint-06%20-%20Advanced%20To-Do%20Details/README.md) -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/images/Recommendation_engine_changes-S05-F01-US03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/images/Recommendation_engine_changes-S05-F01-US03.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/images/outcome-S05-F01-US01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/images/outcome-S05-F01-US01.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/images/outcome-S05-F01-US03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/images/outcome-S05-F01-US03.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/images/recommendation_engine_test-S5-F1-US1-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/images/recommendation_engine_test-S5-F1-US1-01.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/src/README.md: -------------------------------------------------------------------------------- 1 | # Sprint 5 - Source Code Directory 2 | This directory contains the completed source code after the end of each user story. The directory is structured as `app-s05-f01-us02` where 3 | - `s05` - represents the sprint number, in this case sprint 5 4 | - `f01` - represents the feature number, in this case feature 1 5 | - `us02` - represents the user story number, in this case user story 2 6 | 7 | > [!NOTE] 8 | > 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. -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/src/app-s05-f01-us01/.env-example: -------------------------------------------------------------------------------- 1 | DEBUG_APP="True" 2 | USE_AZURE_OPENAI="True" 3 | OPENAI_API_KEY="" 4 | OPENAI_ORG_ID="" 5 | OPEN_AI_DEPLOYMENT_NAME="gpt-3.5-turbo" 6 | AZURE_OPENAI_DEPLOYMENT_NAME="gpt-35-turbo" 7 | AZURE_OPENAI_ENDPOINT="" 8 | AZURE_OPENAI_API_KEY="" 9 | AZURE_OPENAI_VERSION="2023-05-15" 10 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/src/app-s05-f01-us01/app.py: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | ## Sprint 5: Advanced AI Recommendations 3 | ## Feature 1: Get Gen AI Recommendation 4 | ## User Story 1: Get Gen AI Recommendation 5 | ############################################################################ 6 | import os 7 | from flask import Flask, render_template, request, redirect, url_for, g 8 | from database import db, Todo 9 | from recommendation_engine import RecommendationEngine 10 | 11 | app = Flask(__name__) 12 | basedir = os.path.abspath(os.path.dirname(__file__)) # Get the directory of the this file 13 | todo_file = os.path.join(basedir, 'todo_list.txt') # Create the path to the to-do list file using the directory 14 | app.config["SQLALCHEMY_DATABASE_URI"] = 'sqlite:///' + os.path.join(basedir, 'todos.db') 15 | app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False 16 | 17 | db.init_app(app) 18 | 19 | with app.app_context(): 20 | db.create_all() 21 | 22 | @app.before_request 23 | def load_data_to_g(): 24 | todos = Todo.query.all() 25 | g.todos = todos 26 | g.todo = None 27 | 28 | @app.route("/") 29 | def index(): 30 | return render_template("index.html") 31 | 32 | @app.route("/add", methods=["POST"]) 33 | def add_todo(): 34 | # Get the data from the form 35 | todo = Todo( 36 | name=request.form["todo"], 37 | ) 38 | # Add the new ToDo to the list 39 | db.session.add(todo) 40 | db.session.commit() 41 | 42 | # Add the new ToDo to the list 43 | return redirect(url_for('index')) 44 | 45 | # Delete a ToDo 46 | @app.route('/remove/', methods=["POST"]) 47 | def remove_todo(id): 48 | db.session.delete(Todo.query.filter_by(id=id).first()) 49 | db.session.commit() 50 | return redirect(url_for('index')) 51 | 52 | # Show AI recommendations 53 | @app.route('/recommend/', methods=['GET']) 54 | async def recommend(id): 55 | recommendation_engine = RecommendationEngine() 56 | g.todo = db.session.query(Todo).filter_by(id=id).first() 57 | g.todo.recommendations = await recommendation_engine.get_recommendations(g.todo.name) 58 | 59 | return render_template('index.html') 60 | 61 | 62 | if __name__ == "__main__": 63 | app.run(debug=True) -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/src/app-s05-f01-us01/database.py: -------------------------------------------------------------------------------- 1 | from flask_sqlalchemy import SQLAlchemy 2 | from sqlalchemy import Integer, String, Boolean, func 3 | from sqlalchemy.orm import DeclarativeBase 4 | 5 | class Base(DeclarativeBase): 6 | pass 7 | 8 | db = SQLAlchemy(model_class=Base) 9 | 10 | class Todo(db.Model): 11 | id = db.Column(Integer, primary_key=True) 12 | name = db.Column(String(100), nullable=False) 13 | recommendations = [] # non-persistent field 14 | 15 | def __str__(self): 16 | return self.name 17 | 18 | 19 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/src/app-s05-f01-us01/services.py: -------------------------------------------------------------------------------- 1 | """ 2 | This module defines an enumeration representing different services. 3 | """ 4 | 5 | from enum import Enum 6 | 7 | 8 | class Service(Enum): 9 | """ 10 | Attributes: 11 | OpenAI (str): Represents the OpenAI service. 12 | AzureOpenAI (str): Represents the Azure OpenAI service. 13 | HuggingFace (str): Represents the HuggingFace service. 14 | """ 15 | 16 | OpenAI = "openai" 17 | AzureOpenAI = "azureopenai" 18 | HuggingFace = "huggingface" -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/src/app-s05-f01-us01/static/css/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: f0f0f0; /* light grey */ 3 | color: darkslategray; /* default font color */ 4 | font-family: Arial, sans-serif; 5 | background-image: url("../images/Designer02.jpeg"); 6 | background-repeat: no-repeat; 7 | background-position: center; 8 | background-size:cover; 9 | } 10 | 11 | h1 { 12 | color: darkgray; /* font for the h1 header*/ 13 | } 14 | 15 | .list-group-item { 16 | color: #333; /* dark grey */ 17 | } 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/src/app-s05-f01-us01/static/images/Designer01.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/src/app-s05-f01-us01/static/images/Designer01.jpeg -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/src/app-s05-f01-us01/static/images/Designer02.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/src/app-s05-f01-us01/static/images/Designer02.jpeg -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/src/app-s05-f01-us01/static/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/src/app-s05-f01-us01/static/images/favicon.ico -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/src/app-s05-f01-us01/static/js/app.js: -------------------------------------------------------------------------------- 1 | document.addEventListener("DOMContentLoaded", function() { 2 | const nameInput = document.getElementById("todo"); 3 | 4 | //add javascript to support speech recognition for the todo input field 5 | const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition; 6 | const recognition = new SpeechRecognition(); 7 | recognition.continuous = false; 8 | recognition.lang = "en-US"; 9 | recognition.interimResults = false; 10 | 11 | window.captureVoice = function() { 12 | recognition.start(); 13 | nameInput.value = "Your microphone is activated, speak to record voice"; 14 | }; 15 | 16 | recognition.onresult = function(event) { 17 | const transcript = event.results[0][0].transcript; 18 | const recognizedText = transcript.endsWith('.') ? transcript.slice(0, -1) : transcript; 19 | nameInput.value = recognizedText; 20 | }; 21 | 22 | recognition.onspeechend = function() { 23 | recognition.stop(); 24 | }; 25 | 26 | recognition.onnomatch = function(event) { 27 | nameInput.value = "I didn't recognize that prompt."; 28 | }; 29 | 30 | recognition.onerror = function(event) { 31 | nameInput.value = "Error occurred in recognition: " + event.error; 32 | }; 33 | }); -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/src/app-s05-f01-us02/.env-example: -------------------------------------------------------------------------------- 1 | DEBUG_APP="True" 2 | USE_AZURE_OPENAI="True" 3 | OPENAI_API_KEY="" 4 | OPENAI_ORG_ID="" 5 | OPEN_AI_DEPLOYMENT_NAME="gpt-3.5-turbo" 6 | AZURE_OPENAI_DEPLOYMENT_NAME="gpt-35-turbo" 7 | AZURE_OPENAI_ENDPOINT="" 8 | AZURE_OPENAI_API_KEY="" 9 | AZURE_OPENAI_VERSION="2023-05-15" 10 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/src/app-s05-f01-us02/database.py: -------------------------------------------------------------------------------- 1 | from flask_sqlalchemy import SQLAlchemy 2 | from sqlalchemy import Integer, String, Boolean, JSON, func 3 | from sqlalchemy.orm import DeclarativeBase 4 | 5 | class Base(DeclarativeBase): 6 | pass 7 | 8 | db = SQLAlchemy(model_class=Base) 9 | 10 | class Todo(db.Model): 11 | id = db.Column(Integer, primary_key=True) 12 | name = db.Column(String(100), nullable=False) 13 | recommendations = [] # non-persistent field 14 | recommendations_json = db.Column(db.JSON) 15 | 16 | def __str__(self): 17 | return self.name 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/src/app-s05-f01-us02/services.py: -------------------------------------------------------------------------------- 1 | """ 2 | This module defines an enumeration representing different services. 3 | """ 4 | 5 | from enum import Enum 6 | 7 | 8 | class Service(Enum): 9 | """ 10 | Attributes: 11 | OpenAI (str): Represents the OpenAI service. 12 | AzureOpenAI (str): Represents the Azure OpenAI service. 13 | HuggingFace (str): Represents the HuggingFace service. 14 | """ 15 | 16 | OpenAI = "openai" 17 | AzureOpenAI = "azureopenai" 18 | HuggingFace = "huggingface" -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/src/app-s05-f01-us02/static/css/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: f0f0f0; /* light grey */ 3 | color: darkslategray; /* default font color */ 4 | font-family: Arial, sans-serif; 5 | background-image: url("../images/Designer02.jpeg"); 6 | background-repeat: no-repeat; 7 | background-position: center; 8 | background-size:cover; 9 | } 10 | 11 | h1 { 12 | color: darkgray; /* font for the h1 header*/ 13 | } 14 | 15 | .list-group-item { 16 | color: #333; /* dark grey */ 17 | } 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/src/app-s05-f01-us02/static/images/Designer01.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/src/app-s05-f01-us02/static/images/Designer01.jpeg -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/src/app-s05-f01-us02/static/images/Designer02.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/src/app-s05-f01-us02/static/images/Designer02.jpeg -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/src/app-s05-f01-us02/static/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/src/app-s05-f01-us02/static/images/favicon.ico -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/src/app-s05-f01-us02/static/js/app.js: -------------------------------------------------------------------------------- 1 | document.addEventListener("DOMContentLoaded", function() { 2 | const nameInput = document.getElementById("todo"); 3 | 4 | //add javascript to support speech recognition for the todo input field 5 | const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition; 6 | const recognition = new SpeechRecognition(); 7 | recognition.continuous = false; 8 | recognition.lang = "en-US"; 9 | recognition.interimResults = false; 10 | 11 | window.captureVoice = function() { 12 | recognition.start(); 13 | nameInput.value = "Your microphone is activated, speak to record voice"; 14 | }; 15 | 16 | recognition.onresult = function(event) { 17 | const transcript = event.results[0][0].transcript; 18 | const recognizedText = transcript.endsWith('.') ? transcript.slice(0, -1) : transcript; 19 | nameInput.value = recognizedText; 20 | }; 21 | 22 | recognition.onspeechend = function() { 23 | recognition.stop(); 24 | }; 25 | 26 | recognition.onnomatch = function(event) { 27 | nameInput.value = "I didn't recognize that prompt."; 28 | }; 29 | 30 | recognition.onerror = function(event) { 31 | nameInput.value = "Error occurred in recognition: " + event.error; 32 | }; 33 | }); -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/src/app-s05-f01-us03/.env-example: -------------------------------------------------------------------------------- 1 | DEBUG_APP="True" 2 | USE_AZURE_OPENAI="True" 3 | OPENAI_API_KEY="" 4 | OPENAI_ORG_ID="" 5 | OPEN_AI_DEPLOYMENT_NAME="gpt-3.5-turbo" 6 | AZURE_OPENAI_DEPLOYMENT_NAME="gpt-35-turbo" 7 | AZURE_OPENAI_ENDPOINT="" 8 | AZURE_OPENAI_API_KEY="" 9 | AZURE_OPENAI_VERSION="2023-05-15" 10 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/src/app-s05-f01-us03/database.py: -------------------------------------------------------------------------------- 1 | from flask_sqlalchemy import SQLAlchemy 2 | from sqlalchemy import Integer, String, Boolean, JSON, func 3 | from sqlalchemy.orm import DeclarativeBase 4 | 5 | class Base(DeclarativeBase): 6 | pass 7 | 8 | db = SQLAlchemy(model_class=Base) 9 | 10 | class Todo(db.Model): 11 | id = db.Column(Integer, primary_key=True) 12 | name = db.Column(String(100), nullable=False) 13 | recommendations = [] 14 | recommendations_json = db.Column(db.JSON) 15 | 16 | def __str__(self): 17 | return self.name 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/src/app-s05-f01-us03/services.py: -------------------------------------------------------------------------------- 1 | """ 2 | This module defines an enumeration representing different services. 3 | """ 4 | 5 | from enum import Enum 6 | 7 | 8 | class Service(Enum): 9 | """ 10 | Attributes: 11 | OpenAI (str): Represents the OpenAI service. 12 | AzureOpenAI (str): Represents the Azure OpenAI service. 13 | HuggingFace (str): Represents the HuggingFace service. 14 | """ 15 | 16 | OpenAI = "openai" 17 | AzureOpenAI = "azureopenai" 18 | HuggingFace = "huggingface" -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/src/app-s05-f01-us03/static/css/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: f0f0f0; /* light grey */ 3 | color: darkslategray; /* default font color */ 4 | font-family: Arial, sans-serif; 5 | background-image: url("../images/Designer02.jpeg"); 6 | background-repeat: no-repeat; 7 | background-position: center; 8 | background-size:cover; 9 | } 10 | 11 | h1 { 12 | color: darkgray; /* font for the h1 header*/ 13 | } 14 | 15 | .list-group-item { 16 | color: #333; /* dark grey */ 17 | } 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/src/app-s05-f01-us03/static/images/Designer01.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/src/app-s05-f01-us03/static/images/Designer01.jpeg -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/src/app-s05-f01-us03/static/images/Designer02.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/src/app-s05-f01-us03/static/images/Designer02.jpeg -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/src/app-s05-f01-us03/static/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/src/app-s05-f01-us03/static/images/favicon.ico -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-05 - Advanced AI recommendations/src/app-s05-f01-us03/static/js/app.js: -------------------------------------------------------------------------------- 1 | document.addEventListener("DOMContentLoaded", function() { 2 | const nameInput = document.getElementById("todo"); 3 | 4 | //add javascript to support speech recognition for the todo input field 5 | const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition; 6 | const recognition = new SpeechRecognition(); 7 | recognition.continuous = false; 8 | recognition.lang = "en-US"; 9 | recognition.interimResults = false; 10 | 11 | window.captureVoice = function() { 12 | recognition.start(); 13 | nameInput.value = "Your microphone is activated, speak to record voice"; 14 | }; 15 | 16 | recognition.onresult = function(event) { 17 | const transcript = event.results[0][0].transcript; 18 | const recognizedText = transcript.endsWith('.') ? transcript.slice(0, -1) : transcript; 19 | nameInput.value = recognizedText; 20 | }; 21 | 22 | recognition.onspeechend = function() { 23 | recognition.stop(); 24 | }; 25 | 26 | recognition.onnomatch = function(event) { 27 | nameInput.value = "I didn't recognize that prompt."; 28 | }; 29 | 30 | recognition.onerror = function(event) { 31 | nameInput.value = "Error occurred in recognition: " + event.error; 32 | }; 33 | }); -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-06 - Advanced To-Do Details/README.md: -------------------------------------------------------------------------------- 1 | # Sprint 6: Advanced Task Details 2 | ⏲️ _Est. time to complete: 45 min._ ⏲️ 3 | 4 | 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 to-do item has been completed. 5 | 6 | **📕Feature: Add additional about to-do item** 7 | 1. [**📖 Add Due Date, Priority, Notes and Completion Status to To-Do item**](/Track_1_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) 8 | 9 | 10 |
11 | 12 | [🔼 Home ](/Track_1_ToDo_App/README.md) | [◀ Previous Sprint](/Track_1_ToDo_App/Sprint-05%20-%20Advanced%20AI%20recommendations/README.md) | [Next sprint ▶](/Track_1_ToDo_App/Sprint-07%20-%20Advanced%20Styling%20Your%20Web%20App/README.md) -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-06 - Advanced To-Do Details/images/outcome-S06-F01-US01-DETAILS-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-06 - Advanced To-Do Details/images/outcome-S06-F01-US01-DETAILS-2.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-06 - Advanced To-Do Details/images/outcome-S06-F01-US01-DETAILS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-06 - Advanced To-Do Details/images/outcome-S06-F01-US01-DETAILS.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-06 - Advanced To-Do Details/images/outcome-S06-F01-US01-EDIT-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-06 - Advanced To-Do Details/images/outcome-S06-F01-US01-EDIT-2.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-06 - Advanced To-Do Details/images/outcome-S06-F01-US01-EDIT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-06 - Advanced To-Do Details/images/outcome-S06-F01-US01-EDIT.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-06 - Advanced To-Do Details/images/outcome-S06-F01-US01-INDEX.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-06 - Advanced To-Do Details/images/outcome-S06-F01-US01-INDEX.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-06 - Advanced To-Do Details/images/outcome-S06-F01-US01-RECOMMENDATIONS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-06 - Advanced To-Do Details/images/outcome-S06-F01-US01-RECOMMENDATIONS.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-06 - Advanced To-Do Details/src/README.md: -------------------------------------------------------------------------------- 1 | # Sprint 6 - Source Code Directory 2 | This directory contains the completed source code after the end of each user story. The directory is structured as `app-s06-f01-us01` where 3 | - `s06` - represents the sprint number, in this case sprint 6 4 | - `f01` - represents the feature number, in this case feature 1 5 | - `us01` - represents the user story number, in this case user story 1 6 | 7 | > [!NOTE] 8 | > 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. -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-06 - Advanced To-Do Details/src/app-s06-f01-us01/.env-example: -------------------------------------------------------------------------------- 1 | DEBUG_APP="True" 2 | USE_AZURE_OPENAI="True" 3 | OPENAI_API_KEY="" 4 | OPENAI_ORG_ID="" 5 | OPEN_AI_DEPLOYMENT_NAME="gpt-3.5-turbo" 6 | AZURE_OPENAI_DEPLOYMENT_NAME="gpt-35-turbo" 7 | AZURE_OPENAI_ENDPOINT="" 8 | AZURE_OPENAI_API_KEY="" 9 | AZURE_OPENAI_VERSION="2023-05-15" 10 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-06 - Advanced To-Do Details/src/app-s06-f01-us01/database.py: -------------------------------------------------------------------------------- 1 | from flask_sqlalchemy import SQLAlchemy 2 | from sqlalchemy import Integer, String, Boolean, JSON, func 3 | from sqlalchemy.orm import DeclarativeBase 4 | 5 | class Base(DeclarativeBase): 6 | pass 7 | 8 | db = SQLAlchemy(model_class=Base) 9 | 10 | class Todo(db.Model): 11 | id = db.Column(Integer, primary_key=True) 12 | name = db.Column(String(100), nullable=False) 13 | notes = db.Column(String(100)) 14 | priority = db.Column(Integer, default=0) 15 | completed = db.Column(Boolean, default=False) 16 | recommendations_json = db.Column(db.JSON) #json serialized version of recommendations for storing in DB 17 | due_date = db.Column(String(50)) 18 | 19 | #transient variables (i.e., not stored in db) 20 | recommendations = [] #recommendations as a collection 21 | 22 | def __str__(self): 23 | return self.name 24 | 25 | def priority_str(self): 26 | """ 27 | Returns the priority as a string. 28 | """ 29 | str = "Not Set" 30 | if self.priority == 1: 31 | str = "High" 32 | elif self.priority == 2: 33 | str = "Medium" 34 | elif self.priority == 3: 35 | str = "Low" 36 | 37 | return str 38 | 39 | def completed_str(self): 40 | """ 41 | Returns the completed status as a string. 42 | """ 43 | if self.completed: 44 | return "Yes" 45 | else: 46 | return "No" 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-06 - Advanced To-Do Details/src/app-s06-f01-us01/priority.py: -------------------------------------------------------------------------------- 1 | from enum import Enum 2 | 3 | class Priority(Enum): 4 | NONE = 0, 5 | HIGH = 1, 6 | MEDIUM = 2, 7 | LOW = 3 8 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-06 - Advanced To-Do Details/src/app-s06-f01-us01/services.py: -------------------------------------------------------------------------------- 1 | """ 2 | This module defines an enumeration representing different services. 3 | """ 4 | 5 | from enum import Enum 6 | 7 | 8 | class Service(Enum): 9 | """ 10 | Attributes: 11 | OpenAI (str): Represents the OpenAI service. 12 | AzureOpenAI (str): Represents the Azure OpenAI service. 13 | HuggingFace (str): Represents the HuggingFace service. 14 | """ 15 | 16 | OpenAI = "openai" 17 | AzureOpenAI = "azureopenai" 18 | HuggingFace = "huggingface" -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-06 - Advanced To-Do Details/src/app-s06-f01-us01/static/css/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: f0f0f0; /* light grey */ 3 | color: darkslategray; /* default font color */ 4 | font-family: Arial, sans-serif; 5 | background-image: url("../images/Designer02.jpeg"); 6 | background-repeat: no-repeat; 7 | background-position: center; 8 | background-size:cover; 9 | } 10 | 11 | h1 { 12 | color: darkgray; /* font for the h1 header*/ 13 | } 14 | 15 | .list-group-item { 16 | color: #333; /* dark grey */ 17 | } 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-06 - Advanced To-Do Details/src/app-s06-f01-us01/static/images/Designer01.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-06 - Advanced To-Do Details/src/app-s06-f01-us01/static/images/Designer01.jpeg -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-06 - Advanced To-Do Details/src/app-s06-f01-us01/static/images/Designer02.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-06 - Advanced To-Do Details/src/app-s06-f01-us01/static/images/Designer02.jpeg -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-06 - Advanced To-Do Details/src/app-s06-f01-us01/static/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-06 - Advanced To-Do Details/src/app-s06-f01-us01/static/images/favicon.ico -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-06 - Advanced To-Do Details/src/app-s06-f01-us01/static/js/app.js: -------------------------------------------------------------------------------- 1 | document.addEventListener("DOMContentLoaded", function() { 2 | const nameInput = document.getElementById("todo"); 3 | 4 | //add javascript to support speech recognition for the todo input field 5 | const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition; 6 | const recognition = new SpeechRecognition(); 7 | recognition.continuous = false; 8 | recognition.lang = "en-US"; 9 | recognition.interimResults = false; 10 | 11 | window.captureVoice = function() { 12 | recognition.start(); 13 | nameInput.value = "Your microphone is activated, speak to record voice"; 14 | }; 15 | 16 | recognition.onresult = function(event) { 17 | const transcript = event.results[0][0].transcript; 18 | const recognizedText = transcript.endsWith('.') ? transcript.slice(0, -1) : transcript; 19 | nameInput.value = recognizedText; 20 | }; 21 | 22 | recognition.onspeechend = function() { 23 | recognition.stop(); 24 | }; 25 | 26 | recognition.onnomatch = function(event) { 27 | nameInput.value = "I didn't recognize that prompt."; 28 | }; 29 | 30 | recognition.onerror = function(event) { 31 | nameInput.value = "Error occurred in recognition: " + event.error; 32 | }; 33 | }); -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-06 - Advanced To-Do Details/src/app-s06-f01-us01/tab.py: -------------------------------------------------------------------------------- 1 | from enum import Enum 2 | 3 | class Tab(Enum): 4 | NONE = 0, 5 | DETAILS = 1, 6 | EDIT = 2, 7 | RECOMMENDATIONS = 3 8 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/README.md: -------------------------------------------------------------------------------- 1 | # Sprint 7: Advanced Styling For Your Web App 2 | ⏲️ _Est. time to complete: 1 hour 35 min._ ⏲️ 3 | 4 | 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. 5 | 6 | **📕Feature: Advanced Web App Styling** 7 | 1. [**📖 Add completed checkbox and due date details to main list**](/Track_1_ToDo_App/Sprint-07%20-%20Advanced%20Styling%20Your%20Web%20App/Feature%201%20-%20Advanced%20Styling/User%20Story%201%20-%20Add%20Completed%20Checkbox.md) 8 | 2. [**📖 Add a tabbed interface to show different views**](/Track_1_ToDo_App/Sprint-07%20-%20Advanced%20Styling%20Your%20Web%20App/Feature%201%20-%20Advanced%20Styling/User%20Story%202%20-%20Add%20Tabbed%20Interface.md) 9 | 3. [**📖 Prevent User from adding blank task and limit characters**](/Track_1_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) 10 | 4. [**📖 Confirm before deleting a task**](/Track_1_ToDo_App/Sprint-07%20-%20Advanced%20Styling%20Your%20Web%20App/Feature%201%20-%20Advanced%20Styling/User%20Story%204%20-%20Confirm%20Delete.md) 11 | 5. [**📖 Show spinner when loading recommendations**](/Track_1_ToDo_App/Sprint-07%20-%20Advanced%20Styling%20Your%20Web%20App/Feature%201%20-%20Advanced%20Styling/User%20Story%205%20-%20Show%20Spinner.md) 12 | 13 |
14 | 15 | [🔼 Home ](/Track_1_ToDo_App/README.md) | [◀ Previous Sprint](/Track_1_ToDo_App/Sprint-06%20-%20Advanced%20To-Do%20Details/README.md) | [Next sprint ▶](/Track_1_ToDo_App/Sprint-08%20-%20Deploy%20to%20the%20Cloud/README.md) -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/images/ReplaceCode-S07-F01-US02-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/images/ReplaceCode-S07-F01-US02-01.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/images/outcome-S07-F01-US01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/images/outcome-S07-F01-US01.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/images/outcome-S07-F01-US02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/images/outcome-S07-F01-US02.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/images/outcome-S07-F01-US03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/images/outcome-S07-F01-US03.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/images/outcome-S07-F01-US04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/images/outcome-S07-F01-US04.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/images/outcome-S07-F01-US05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/images/outcome-S07-F01-US05.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/images/tabbed-interface-S07-F01-US02-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/images/tabbed-interface-S07-F01-US02-1.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/images/tabbed-interface-S07-F01-US02-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/images/tabbed-interface-S07-F01-US02-2.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/images/tabbed-interface-S07-F01-US02-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/images/tabbed-interface-S07-F01-US02-3.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/README.md: -------------------------------------------------------------------------------- 1 | # Sprint 7 - Source Code Directory 2 | This directory contains the completed source code after the end of each user story. The directory is structured as `app-s07-f01-us01` where 3 | - `s07` - represents the sprint number, in this case sprint 7 4 | - `f01` - represents the feature number, in this case feature 1 5 | - `us01` - represents the user story number, in this case user story 1 6 | 7 | > [!NOTE] 8 | > 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. -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us01/.env-example: -------------------------------------------------------------------------------- 1 | DEBUG_APP="True" 2 | USE_AZURE_OPENAI="True" 3 | OPENAI_API_KEY="" 4 | OPENAI_ORG_ID="" 5 | OPEN_AI_DEPLOYMENT_NAME="gpt-3.5-turbo" 6 | AZURE_OPENAI_DEPLOYMENT_NAME="gpt-35-turbo" 7 | AZURE_OPENAI_ENDPOINT="" 8 | AZURE_OPENAI_API_KEY="" 9 | AZURE_OPENAI_VERSION="2023-05-15" 10 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us01/context_processors.py: -------------------------------------------------------------------------------- 1 | # context_processors.py 2 | 3 | from datetime import datetime 4 | 5 | def inject_current_date(): 6 | return {'current_date': datetime.now().strftime('%Y-%m-%d')} -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us01/database.py: -------------------------------------------------------------------------------- 1 | from flask_sqlalchemy import SQLAlchemy 2 | from sqlalchemy import Integer, String, Boolean, JSON, func 3 | from sqlalchemy.orm import DeclarativeBase 4 | 5 | class Base(DeclarativeBase): 6 | pass 7 | 8 | db = SQLAlchemy(model_class=Base) 9 | 10 | class Todo(db.Model): 11 | id = db.Column(Integer, primary_key=True) 12 | name = db.Column(String(100), nullable=False) 13 | notes = db.Column(String(100)) 14 | priority = db.Column(Integer, default=0) 15 | completed = db.Column(Boolean, default=False) 16 | recommendations_json = db.Column(db.JSON) #json serialized version of recommendations for storing in DB 17 | due_date = db.Column(String(50)) 18 | 19 | #transient variables (i.e., not stored in db) 20 | recommendations = [] #recommendations as a collection 21 | 22 | def __str__(self): 23 | return self.name 24 | 25 | def priority_str(self): 26 | """ 27 | Returns the priority as a string. 28 | """ 29 | str = "Not Set" 30 | if self.priority == 1: 31 | str = "High" 32 | elif self.priority == 2: 33 | str = "Medium" 34 | elif self.priority == 3: 35 | str = "Low" 36 | 37 | return str 38 | 39 | def completed_str(self): 40 | """ 41 | Returns the completed status as a string. 42 | """ 43 | if self.completed: 44 | return "Yes" 45 | else: 46 | return "No" 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us01/priority.py: -------------------------------------------------------------------------------- 1 | from enum import Enum 2 | 3 | class Priority(Enum): 4 | NONE = 0, 5 | HIGH = 1, 6 | MEDIUM = 2, 7 | LOW = 3 8 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us01/services.py: -------------------------------------------------------------------------------- 1 | """ 2 | This module defines an enumeration representing different services. 3 | """ 4 | 5 | from enum import Enum 6 | 7 | 8 | class Service(Enum): 9 | """ 10 | Attributes: 11 | OpenAI (str): Represents the OpenAI service. 12 | AzureOpenAI (str): Represents the Azure OpenAI service. 13 | HuggingFace (str): Represents the HuggingFace service. 14 | """ 15 | 16 | OpenAI = "openai" 17 | AzureOpenAI = "azureopenai" 18 | HuggingFace = "huggingface" -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us01/static/css/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: f0f0f0; /* light grey */ 3 | color: darkslategray; /* default font color */ 4 | font-family: Arial, sans-serif; 5 | background-image: url("../images/Designer02.jpeg"); 6 | background-repeat: no-repeat; 7 | background-position: center; 8 | background-size:cover; 9 | } 10 | 11 | h1 { 12 | color: darkgray; /* font for the h1 header*/ 13 | } 14 | 15 | .list-group-item { 16 | color: #333; /* dark grey */ 17 | } 18 | 19 | .form-check input[type="checkbox"]:checked + .title { 20 | text-decoration: line-through; 21 | } 22 | 23 | .title { 24 | display: inline-flex; 25 | font-weight: bold; 26 | color: #333; 27 | } 28 | 29 | .subtitle { 30 | font-size: 14px; 31 | color: #666; 32 | padding-left: 20px; 33 | } 34 | 35 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us01/static/images/Designer01.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us01/static/images/Designer01.jpeg -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us01/static/images/Designer02.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us01/static/images/Designer02.jpeg -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us01/static/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us01/static/images/favicon.ico -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us01/static/js/app.js: -------------------------------------------------------------------------------- 1 | document.addEventListener("DOMContentLoaded", function () { 2 | const nameInput = document.getElementById("todo"); 3 | 4 | window.handleClick = function (event, cb) { 5 | event.stopPropagation(); 6 | const rootUrl = window.location.origin; 7 | const cbId = cb.id; 8 | const cbChecked = cb.checked; 9 | window.location.href = `${rootUrl}/completed/${cbId}/${cbChecked}`; 10 | }; 11 | 12 | //add javascript to support speech recognition for the todo input field 13 | const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition; 14 | const recognition = new SpeechRecognition(); 15 | recognition.continuous = false; 16 | recognition.lang = "en-US"; 17 | recognition.interimResults = false; 18 | 19 | window.captureVoice = function () { 20 | recognition.start(); 21 | nameInput.value = "Your microphone is activated, speak to record voice"; 22 | }; 23 | 24 | recognition.onresult = function (event) { 25 | const transcript = event.results[0][0].transcript; 26 | const recognizedText = transcript.endsWith('.') ? transcript.slice(0, -1) : transcript; 27 | nameInput.value = recognizedText; 28 | }; 29 | 30 | recognition.onspeechend = function () { 31 | recognition.stop(); 32 | }; 33 | 34 | recognition.onnomatch = function (event) { 35 | nameInput.value = "I didn't recognize that prompt."; 36 | }; 37 | 38 | recognition.onerror = function (event) { 39 | nameInput.value = "Error occurred in recognition: " + event.error; 40 | }; 41 | }); -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us01/tab.py: -------------------------------------------------------------------------------- 1 | from enum import Enum 2 | 3 | class Tab(Enum): 4 | NONE = 0, 5 | DETAILS = 1, 6 | EDIT = 2, 7 | RECOMMENDATIONS = 3 8 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us02/.env-example: -------------------------------------------------------------------------------- 1 | DEBUG_APP="True" 2 | USE_AZURE_OPENAI="True" 3 | OPENAI_API_KEY="" 4 | OPENAI_ORG_ID="" 5 | OPEN_AI_DEPLOYMENT_NAME="gpt-3.5-turbo" 6 | AZURE_OPENAI_DEPLOYMENT_NAME="gpt-35-turbo" 7 | AZURE_OPENAI_ENDPOINT="" 8 | AZURE_OPENAI_API_KEY="" 9 | AZURE_OPENAI_VERSION="2023-05-15" 10 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us02/context_processors.py: -------------------------------------------------------------------------------- 1 | # context_processors.py 2 | 3 | from datetime import datetime 4 | 5 | def inject_current_date(): 6 | return {'current_date': datetime.now().strftime('%Y-%m-%d')} -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us02/database.py: -------------------------------------------------------------------------------- 1 | from flask_sqlalchemy import SQLAlchemy 2 | from sqlalchemy import Integer, String, Boolean, JSON, func 3 | from sqlalchemy.orm import DeclarativeBase 4 | 5 | class Base(DeclarativeBase): 6 | pass 7 | 8 | db = SQLAlchemy(model_class=Base) 9 | 10 | class Todo(db.Model): 11 | id = db.Column(Integer, primary_key=True) 12 | name = db.Column(String(100), nullable=False) 13 | notes = db.Column(String(100)) 14 | priority = db.Column(Integer, default=0) 15 | completed = db.Column(Boolean, default=False) 16 | recommendations_json = db.Column(db.JSON) #json serialized version of recommendations for storing in DB 17 | due_date = db.Column(String(50)) 18 | 19 | #transient variables (i.e., not stored in db) 20 | recommendations = [] #recommendations as a collection 21 | 22 | def __str__(self): 23 | return self.name 24 | 25 | 26 | def priority_str(self): 27 | """ 28 | Returns the priority as a string. 29 | """ 30 | str = "Not Set" 31 | if self.priority == 1: 32 | str = "High" 33 | elif self.priority == 2: 34 | str = "Medium" 35 | elif self.priority == 3: 36 | str = "Low" 37 | 38 | return str 39 | 40 | def completed_str(self): 41 | """ 42 | Returns the completed status as a string. 43 | """ 44 | if self.completed: 45 | return "Yes" 46 | else: 47 | return "No" 48 | 49 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us02/priority.py: -------------------------------------------------------------------------------- 1 | from enum import Enum 2 | 3 | class Priority(Enum): 4 | NONE = 0, 5 | HIGH = 1, 6 | MEDIUM = 2, 7 | LOW = 3 8 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us02/services.py: -------------------------------------------------------------------------------- 1 | """ 2 | This module defines an enumeration representing different services. 3 | """ 4 | 5 | from enum import Enum 6 | 7 | 8 | class Service(Enum): 9 | """ 10 | Attributes: 11 | OpenAI (str): Represents the OpenAI service. 12 | AzureOpenAI (str): Represents the Azure OpenAI service. 13 | HuggingFace (str): Represents the HuggingFace service. 14 | """ 15 | 16 | OpenAI = "openai" 17 | AzureOpenAI = "azureopenai" 18 | HuggingFace = "huggingface" -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us02/static/css/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: f0f0f0; /* light grey */ 3 | color: darkslategray; /* default font color */ 4 | font-family: Arial, sans-serif; 5 | background-image: url("../images/Designer02.jpeg"); 6 | background-repeat: no-repeat; 7 | background-position: center; 8 | background-size:cover; 9 | } 10 | 11 | h1 { 12 | color: darkgray; /* font for the h1 header*/ 13 | } 14 | 15 | .list-group-item { 16 | color: #333; /* dark grey */ 17 | } 18 | 19 | .form-check input[type="checkbox"]:checked + .title { 20 | text-decoration: line-through; 21 | } 22 | 23 | .title { 24 | display: inline-flex; 25 | font-weight: bold; 26 | color: #333; 27 | } 28 | 29 | .subtitle { 30 | font-size: 14px; 31 | color: #666; 32 | padding-left: 20px; 33 | } 34 | 35 | .card { 36 | border-top: none !important; 37 | } 38 | 39 | .nav-link { 40 | background-color: white; 41 | } 42 | 43 | .highlighted-item { 44 | background-color: #f2f2f2; 45 | } 46 | 47 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us02/static/images/Designer01.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us02/static/images/Designer01.jpeg -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us02/static/images/Designer02.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us02/static/images/Designer02.jpeg -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us02/static/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us02/static/images/favicon.ico -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us02/tab.py: -------------------------------------------------------------------------------- 1 | from enum import Enum 2 | 3 | class Tab(Enum): 4 | NONE = 0, 5 | DETAILS = 1, 6 | EDIT = 2, 7 | RECOMMENDATIONS = 3 8 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us03/.env-example: -------------------------------------------------------------------------------- 1 | DEBUG_APP="True" 2 | USE_AZURE_OPENAI="True" 3 | OPENAI_API_KEY="" 4 | OPENAI_ORG_ID="" 5 | OPEN_AI_DEPLOYMENT_NAME="gpt-3.5-turbo" 6 | AZURE_OPENAI_DEPLOYMENT_NAME="gpt-35-turbo" 7 | AZURE_OPENAI_ENDPOINT="" 8 | AZURE_OPENAI_API_KEY="" 9 | AZURE_OPENAI_VERSION="2023-05-15" 10 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us03/context_processors.py: -------------------------------------------------------------------------------- 1 | # context_processors.py 2 | 3 | from datetime import datetime 4 | 5 | def inject_current_date(): 6 | return {'current_date': datetime.now().strftime('%Y-%m-%d')} -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us03/database.py: -------------------------------------------------------------------------------- 1 | from flask_sqlalchemy import SQLAlchemy 2 | from sqlalchemy import Integer, String, Boolean, JSON, func 3 | from sqlalchemy.orm import DeclarativeBase 4 | 5 | class Base(DeclarativeBase): 6 | pass 7 | 8 | db = SQLAlchemy(model_class=Base) 9 | 10 | class Todo(db.Model): 11 | id = db.Column(Integer, primary_key=True) 12 | name = db.Column(String(100), nullable=False) 13 | notes = db.Column(String(100)) 14 | priority = db.Column(Integer, default=0) 15 | completed = db.Column(Boolean, default=False) 16 | recommendations_json = db.Column(db.JSON) #json serialized version of recommendations for storing in DB 17 | due_date = db.Column(String(50)) 18 | 19 | #transient variables (i.e., not stored in db) 20 | recommendations = [] #recommendations as a collection 21 | 22 | def __str__(self): 23 | return self.name 24 | 25 | def priority_str(self): 26 | """ 27 | Returns the priority as a string. 28 | """ 29 | str = "Not Set" 30 | if self.priority == 1: 31 | str = "High" 32 | elif self.priority == 2: 33 | str = "Medium" 34 | elif self.priority == 3: 35 | str = "Low" 36 | 37 | return str 38 | 39 | def completed_str(self): 40 | """ 41 | Returns the completed status as a string. 42 | """ 43 | if self.completed: 44 | return "Yes" 45 | else: 46 | return "No" 47 | 48 | 49 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us03/priority.py: -------------------------------------------------------------------------------- 1 | from enum import Enum 2 | 3 | class Priority(Enum): 4 | NONE = 0, 5 | HIGH = 1, 6 | MEDIUM = 2, 7 | LOW = 3 8 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us03/services.py: -------------------------------------------------------------------------------- 1 | """ 2 | This module defines an enumeration representing different services. 3 | """ 4 | 5 | from enum import Enum 6 | 7 | 8 | class Service(Enum): 9 | """ 10 | Attributes: 11 | OpenAI (str): Represents the OpenAI service. 12 | AzureOpenAI (str): Represents the Azure OpenAI service. 13 | HuggingFace (str): Represents the HuggingFace service. 14 | """ 15 | 16 | OpenAI = "openai" 17 | AzureOpenAI = "azureopenai" 18 | HuggingFace = "huggingface" -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us03/static/css/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: f0f0f0; /* light grey */ 3 | color: darkslategray; /* default font color */ 4 | font-family: Arial, sans-serif; 5 | background-image: url("../images/Designer02.jpeg"); 6 | background-repeat: no-repeat; 7 | background-position: center; 8 | background-size:cover; 9 | } 10 | 11 | h1 { 12 | color: darkgray; /* font for the h1 header*/ 13 | } 14 | 15 | .list-group-item { 16 | color: #333; /* dark grey */ 17 | } 18 | 19 | .form-check input[type="checkbox"]:checked + .title { 20 | text-decoration: line-through; 21 | } 22 | 23 | .title { 24 | display: inline-flex; 25 | font-weight: bold; 26 | color: #333; 27 | } 28 | 29 | .subtitle { 30 | font-size: 14px; 31 | color: #666; 32 | padding-left: 20px; 33 | } 34 | 35 | .card { 36 | border-top: none !important; 37 | } 38 | 39 | .nav-link { 40 | background-color: white; 41 | } 42 | 43 | .highlighted-item { 44 | background-color: #f2f2f2; 45 | } 46 | 47 | .limit-text { 48 | color: white; 49 | } 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us03/static/images/Designer01.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us03/static/images/Designer01.jpeg -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us03/static/images/Designer02.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us03/static/images/Designer02.jpeg -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us03/static/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us03/static/images/favicon.ico -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us03/tab.py: -------------------------------------------------------------------------------- 1 | from enum import Enum 2 | 3 | class Tab(Enum): 4 | NONE = 0, 5 | DETAILS = 1, 6 | EDIT = 2, 7 | RECOMMENDATIONS = 3 8 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us04/.env-example: -------------------------------------------------------------------------------- 1 | DEBUG_APP="True" 2 | USE_AZURE_OPENAI="True" 3 | OPENAI_API_KEY="" 4 | OPENAI_ORG_ID="" 5 | OPEN_AI_DEPLOYMENT_NAME="gpt-3.5-turbo" 6 | AZURE_OPENAI_DEPLOYMENT_NAME="gpt-35-turbo" 7 | AZURE_OPENAI_ENDPOINT="" 8 | AZURE_OPENAI_API_KEY="" 9 | AZURE_OPENAI_VERSION="2023-05-15" 10 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us04/context_processors.py: -------------------------------------------------------------------------------- 1 | # context_processors.py 2 | 3 | from datetime import datetime 4 | 5 | def inject_current_date(): 6 | return {'current_date': datetime.now().strftime('%Y-%m-%d')} -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us04/database.py: -------------------------------------------------------------------------------- 1 | from flask_sqlalchemy import SQLAlchemy 2 | from sqlalchemy import Integer, String, Boolean, JSON, func 3 | from sqlalchemy.orm import DeclarativeBase 4 | 5 | class Base(DeclarativeBase): 6 | pass 7 | 8 | db = SQLAlchemy(model_class=Base) 9 | 10 | class Todo(db.Model): 11 | id = db.Column(Integer, primary_key=True) 12 | name = db.Column(String(100), nullable=False) 13 | notes = db.Column(String(100)) 14 | priority = db.Column(Integer, default=0) 15 | completed = db.Column(Boolean, default=False) 16 | recommendations_json = db.Column(db.JSON) #json serialized version of recommendations for storing in DB 17 | due_date = db.Column(String(50)) 18 | 19 | #transient variables (i.e., not stored in db) 20 | recommendations = [] #recommendations as a collection 21 | 22 | def __str__(self): 23 | return self.name 24 | 25 | def priority_str(self): 26 | """ 27 | Returns the priority as a string. 28 | """ 29 | str = "Not Set" 30 | if self.priority == 1: 31 | str = "High" 32 | elif self.priority == 2: 33 | str = "Medium" 34 | elif self.priority == 3: 35 | str = "Low" 36 | 37 | return str 38 | 39 | def completed_str(self): 40 | """ 41 | Returns the completed status as a string. 42 | """ 43 | if self.completed: 44 | return "Yes" 45 | else: 46 | return "No" 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us04/priority.py: -------------------------------------------------------------------------------- 1 | from enum import Enum 2 | 3 | class Priority(Enum): 4 | NONE = 0, 5 | HIGH = 1, 6 | MEDIUM = 2, 7 | LOW = 3 8 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us04/services.py: -------------------------------------------------------------------------------- 1 | """ 2 | This module defines an enumeration representing different services. 3 | """ 4 | 5 | from enum import Enum 6 | 7 | 8 | class Service(Enum): 9 | """ 10 | Attributes: 11 | OpenAI (str): Represents the OpenAI service. 12 | AzureOpenAI (str): Represents the Azure OpenAI service. 13 | HuggingFace (str): Represents the HuggingFace service. 14 | """ 15 | 16 | OpenAI = "openai" 17 | AzureOpenAI = "azureopenai" 18 | HuggingFace = "huggingface" -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us04/static/css/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: f0f0f0; /* light grey */ 3 | color: darkslategray; /* default font color */ 4 | font-family: Arial, sans-serif; 5 | background-image: url("../images/Designer02.jpeg"); 6 | background-repeat: no-repeat; 7 | background-position: center; 8 | background-size:cover; 9 | } 10 | 11 | h1 { 12 | color: darkgray; /* font for the h1 header*/ 13 | } 14 | 15 | .list-group-item { 16 | color: #333; /* dark grey */ 17 | } 18 | 19 | .form-check input[type="checkbox"]:checked + .title { 20 | text-decoration: line-through; 21 | } 22 | 23 | .title { 24 | display: inline-flex; 25 | font-weight: bold; 26 | color: #333; 27 | } 28 | 29 | .subtitle { 30 | font-size: 14px; 31 | color: #666; 32 | padding-left: 20px; 33 | } 34 | 35 | .card { 36 | border-top: none !important; 37 | } 38 | 39 | .nav-link { 40 | background-color: white; 41 | } 42 | 43 | .highlighted-item { 44 | background-color: #f2f2f2; 45 | } 46 | 47 | .limit-text { 48 | color: white; 49 | } 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us04/static/images/Designer01.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us04/static/images/Designer01.jpeg -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us04/static/images/Designer02.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us04/static/images/Designer02.jpeg -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us04/static/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us04/static/images/favicon.ico -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us04/tab.py: -------------------------------------------------------------------------------- 1 | from enum import Enum 2 | 3 | class Tab(Enum): 4 | NONE = 0, 5 | DETAILS = 1, 6 | EDIT = 2, 7 | RECOMMENDATIONS = 3 8 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us05/.env-example: -------------------------------------------------------------------------------- 1 | DEBUG_APP="True" 2 | USE_AZURE_OPENAI="True" 3 | OPENAI_API_KEY="" 4 | OPENAI_ORG_ID="" 5 | OPEN_AI_DEPLOYMENT_NAME="gpt-3.5-turbo" 6 | AZURE_OPENAI_DEPLOYMENT_NAME="gpt-35-turbo" 7 | AZURE_OPENAI_ENDPOINT="" 8 | AZURE_OPENAI_API_KEY="" 9 | AZURE_OPENAI_VERSION="2023-05-15" 10 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us05/context_processors.py: -------------------------------------------------------------------------------- 1 | # context_processors.py 2 | 3 | from datetime import datetime 4 | 5 | def inject_current_date(): 6 | return {'current_date': datetime.now().strftime('%Y-%m-%d')} -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us05/database.py: -------------------------------------------------------------------------------- 1 | from flask_sqlalchemy import SQLAlchemy 2 | from sqlalchemy import Integer, String, Boolean, JSON, func 3 | from sqlalchemy.orm import DeclarativeBase 4 | 5 | class Base(DeclarativeBase): 6 | pass 7 | 8 | db = SQLAlchemy(model_class=Base) 9 | 10 | class Todo(db.Model): 11 | id = db.Column(Integer, primary_key=True) 12 | name = db.Column(String(100), nullable=False) 13 | notes = db.Column(String(100)) 14 | priority = db.Column(Integer, default=0) 15 | completed = db.Column(Boolean, default=False) 16 | recommendations_json = db.Column(db.JSON) #json serialized version of recommendations for storing in DB 17 | due_date = db.Column(String(50)) 18 | 19 | #transient variables (i.e., not stored in db) 20 | recommendations = [] #recommendations as a collection 21 | 22 | def __str__(self): 23 | return self.name 24 | 25 | def priority_str(self): 26 | """ 27 | Returns the priority as a string. 28 | """ 29 | str = "Not Set" 30 | if self.priority == 1: 31 | str = "High" 32 | elif self.priority == 2: 33 | str = "Medium" 34 | elif self.priority == 3: 35 | str = "Low" 36 | 37 | return str 38 | 39 | def completed_str(self): 40 | """ 41 | Returns the completed status as a string. 42 | """ 43 | if self.completed: 44 | return "Yes" 45 | else: 46 | return "No" 47 | 48 | 49 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us05/priority.py: -------------------------------------------------------------------------------- 1 | from enum import Enum 2 | 3 | class Priority(Enum): 4 | NONE = 0, 5 | HIGH = 1, 6 | MEDIUM = 2, 7 | LOW = 3 8 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us05/services.py: -------------------------------------------------------------------------------- 1 | """ 2 | This module defines an enumeration representing different services. 3 | """ 4 | 5 | from enum import Enum 6 | 7 | 8 | class Service(Enum): 9 | """ 10 | Attributes: 11 | OpenAI (str): Represents the OpenAI service. 12 | AzureOpenAI (str): Represents the Azure OpenAI service. 13 | HuggingFace (str): Represents the HuggingFace service. 14 | """ 15 | 16 | OpenAI = "openai" 17 | AzureOpenAI = "azureopenai" 18 | HuggingFace = "huggingface" -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us05/static/css/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: f0f0f0; /* light grey */ 3 | color: darkslategray; /* default font color */ 4 | font-family: Arial, sans-serif; 5 | background-image: url("../images/Designer02.jpeg"); 6 | background-repeat: no-repeat; 7 | background-position: center; 8 | background-size:cover; 9 | } 10 | 11 | h1 { 12 | color: darkgray; /* font for the h1 header*/ 13 | } 14 | 15 | .list-group-item { 16 | color: #333; /* dark grey */ 17 | } 18 | 19 | .form-check input[type="checkbox"]:checked + .title { 20 | text-decoration: line-through; 21 | } 22 | 23 | .title { 24 | display: inline-flex; 25 | font-weight: bold; 26 | color: #333; 27 | } 28 | 29 | .subtitle { 30 | font-size: 14px; 31 | color: #666; 32 | padding-left: 20px; 33 | } 34 | 35 | .card { 36 | border-top: none !important; 37 | } 38 | 39 | .nav-link { 40 | background-color: white; 41 | } 42 | 43 | .highlighted-item { 44 | background-color: #f2f2f2; 45 | } 46 | 47 | .limit-text { 48 | color: white; 49 | } 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us05/static/images/Designer01.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us05/static/images/Designer01.jpeg -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us05/static/images/Designer02.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us05/static/images/Designer02.jpeg -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us05/static/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us05/static/images/favicon.ico -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-07 - Advanced Styling Your Web App/src/app-s07-f01-us05/tab.py: -------------------------------------------------------------------------------- 1 | from enum import Enum 2 | 3 | class Tab(Enum): 4 | NONE = 0, 5 | DETAILS = 1, 6 | EDIT = 2, 7 | RECOMMENDATIONS = 3 8 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/README.md: -------------------------------------------------------------------------------- 1 | # Sprint 8: Deploy to the Cloud 2 | ⏲️ _Est. time to complete: 60 min._ ⏲️ 3 | 4 | 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. 5 | 6 | **📕Feature: Deploy to Azure** 7 | 1. If you are in the "_Everyone Can Code Event_" then please follow this user story: 8 | - [**📖 Deploy To-Do App to Azure - Shared Subscription**](/Track_1_ToDo_App/Sprint-08%20-%20Deploy%20to%20the%20Cloud/Feature%201%20-%20Deploy%20to%20Azure.md/User%20Story%201%20-%20Deploy%20to%20Azure%20-original.md) 9 | 10 | If you are doing this exercise with your own subscription then please follow this user story: 11 | - [**📖 Deploy To-Do App to Azure - Own Subscription**](/Track_1_ToDo_App/Sprint-08%20-%20Deploy%20to%20the%20Cloud/Feature%201%20-%20Deploy%20to%20Azure.md/User%20Story%201%20-%20Deploy%20to%20Azure.md) 12 | 13 | > [!CAUTION] 14 | > Please note that once **your to-do application** is deployed to the cloud it **is running on the public internet and is accessible by anyone that has the URL to view and/or edit the information. So, please do not put personal items in your to-do list**. We would also **highly recommend that you setup security on the website**. You can enable this through the next user story. 15 | 16 | 2. [**📖 Setup Authentication**](/Track_1_ToDo_App//Sprint-08%20-%20Deploy%20to%20the%20Cloud/Feature%201%20-%20Deploy%20to%20Azure.md/User%20Story%202%20-%20Setup%20Authentication.md) 17 | 18 |
19 | 20 | 21 | 3. **BONUS Activity**: If you have time, you can experiment with setting up different authentication providers for the website. At the time of this repo being created there are providers for Facebook, Google, Twitter, GitHub, Apple, and OpenID Connect. 22 | 23 |
24 | 25 | 26 | [🔼 Home ](/Track_1_ToDo_App/README.md) | [◀ Previous Sprint](/Public%20Repo%20Content/Sprint-07%20-%20Advanced%20Styling%20Your%20Web%20App/README.md) -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/auzre-portal-app-service-list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/auzre-portal-app-service-list.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/auzre-portal-app-service-overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/auzre-portal-app-service-overview.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/auzre-portal-search-app-service.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/auzre-portal-search-app-service.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-account-show.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-account-show.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-configure-web-db-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-configure-web-db-01.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-create-web-and-db-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-create-web-and-db-01.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-portal-app-service-add-identity-provider.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-portal-app-service-add-identity-provider.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-portal-app-service-add-identity-setup-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-portal-app-service-add-identity-setup-01.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-portal-app-service-add-identity-setup-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-portal-app-service-add-identity-setup-02.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-portal-app-service-add-identity-setup-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-portal-app-service-add-identity-setup-03.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-portal-app-service-pane-authentication.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-portal-app-service-pane-authentication.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-portal-create-web-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-portal-create-web-app.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-portal-createres.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-portal-createres.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-portal-find-app-service.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-portal-find-app-service.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-portal-home-page-us2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-portal-home-page-us2.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-portal-login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-portal-login.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-portal-resource-groups-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-portal-resource-groups-01.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-portal-search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-portal-search.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-portal-security-information.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-portal-security-information.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-portal-sql-option.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-portal-sql-option.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-portal-sql-review.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-portal-sql-review.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-portal-sql-srv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-portal-sql-srv.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-portal-srch-sql.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-portal-srch-sql.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-portal-web-app-option.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-portal-web-app-option.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-portal-webapp-env.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-portal-webapp-env.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-portal-welcome-to-azure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-portal-welcome-to-azure.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-review-and-create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/az-review-and-create.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/azure-tools-upload-setting-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/azure-tools-upload-setting-01.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/azure-tools-upload-setting-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/azure-tools-upload-setting-02.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/azure-web-app-todo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/azure-web-app-todo.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/sql-db-conn-string.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/sql-db-conn-string.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/visual-studio-code-azure-tools-extension-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/visual-studio-code-azure-tools-extension-02.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/visual-studio-code-azure-tools-extension-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/visual-studio-code-azure-tools-extension-03.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/visual-studio-code-azure-tools-extension-04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/visual-studio-code-azure-tools-extension-04.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/visual-studio-code-azure-tools-extension.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/visual-studio-code-azure-tools-extension.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/visual-studio-code-azure-tools-login-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/visual-studio-code-azure-tools-login-02.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/visual-studio-code-azure-tools-login-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/visual-studio-code-azure-tools-login-03.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/visual-studio-code-azure-tools-login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/visual-studio-code-azure-tools-login.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/visual-studio-code-deploy-app-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/images/visual-studio-code-deploy-app-01.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/src/README.md: -------------------------------------------------------------------------------- 1 | # Sprint 8 - Source Code Directory 2 | This directory contains the completed source code after the end of each user story. The directory is structured as `app-s08-f01-us01` where 3 | - `s08` - represents the sprint number, in this case sprint 8 4 | - `f01` - represents the feature number, in this case feature 1 5 | - `us01` - represents the user story number, in this case user story 1 6 | 7 | > [!NOTE] 8 | > 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. -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/src/app-s08-f01-us01/.env-example: -------------------------------------------------------------------------------- 1 | DEBUG_APP="True" 2 | USE_AZURE_OPENAI="True" 3 | OPENAI_API_KEY="" 4 | OPENAI_ORG_ID="" 5 | OPEN_AI_DEPLOYMENT_NAME="gpt-3.5-turbo" 6 | AZURE_OPENAI_DEPLOYMENT_NAME="gpt-35-turbo" 7 | AZURE_OPENAI_ENDPOINT="" 8 | AZURE_OPENAI_API_KEY="" 9 | AZURE_OPENAI_VERSION="2023-05-15" 10 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/src/app-s08-f01-us01/context_processors.py: -------------------------------------------------------------------------------- 1 | # context_processors.py 2 | 3 | from datetime import datetime 4 | 5 | def inject_current_date(): 6 | return {'current_date': datetime.now().strftime('%Y-%m-%d')} -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/src/app-s08-f01-us01/database.py: -------------------------------------------------------------------------------- 1 | from flask_sqlalchemy import SQLAlchemy 2 | from sqlalchemy import Integer, String, Boolean, JSON, func 3 | from sqlalchemy.orm import DeclarativeBase 4 | 5 | class Base(DeclarativeBase): 6 | pass 7 | 8 | db = SQLAlchemy(model_class=Base) 9 | 10 | class Todo(db.Model): 11 | id = db.Column(Integer, primary_key=True) 12 | name = db.Column(String(100), nullable=False) 13 | notes = db.Column(String(100)) 14 | priority = db.Column(Integer, default=0) 15 | completed = db.Column(Boolean, default=False) 16 | recommendations_json = db.Column(db.JSON) #json serialized version of recommendations for storing in DB 17 | due_date = db.Column(String(50)) 18 | 19 | #transient variables (i.e., not stored in db) 20 | recommendations = [] #recommendations as a collection 21 | 22 | def __str__(self): 23 | return self.name 24 | 25 | def priority_str(self): 26 | """ 27 | Returns the priority as a string. 28 | """ 29 | str = "Not Set" 30 | if self.priority == 1: 31 | str = "High" 32 | elif self.priority == 2: 33 | str = "Medium" 34 | elif self.priority == 3: 35 | str = "Low" 36 | 37 | return str 38 | 39 | def completed_str(self): 40 | """ 41 | Returns the completed status as a string. 42 | """ 43 | if self.completed: 44 | return "Yes" 45 | else: 46 | return "No" 47 | 48 | 49 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/src/app-s08-f01-us01/priority.py: -------------------------------------------------------------------------------- 1 | from enum import Enum 2 | 3 | class Priority(Enum): 4 | NONE = 0, 5 | HIGH = 1, 6 | MEDIUM = 2, 7 | LOW = 3 8 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/src/app-s08-f01-us01/requirements.txt: -------------------------------------------------------------------------------- 1 | openai 2 | flask 3 | flask[async] 4 | flask_sqlalchemy 5 | sqlalchemy 6 | semantic-kernel==0.9.5b1 7 | pyodbc 8 | fastapi 9 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/src/app-s08-f01-us01/services.py: -------------------------------------------------------------------------------- 1 | """ 2 | This module defines an enumeration representing different services. 3 | """ 4 | 5 | from enum import Enum 6 | 7 | 8 | class Service(Enum): 9 | """ 10 | Attributes: 11 | OpenAI (str): Represents the OpenAI service. 12 | AzureOpenAI (str): Represents the Azure OpenAI service. 13 | HuggingFace (str): Represents the HuggingFace service. 14 | """ 15 | 16 | OpenAI = "openai" 17 | AzureOpenAI = "azureopenai" 18 | HuggingFace = "huggingface" -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/src/app-s08-f01-us01/static/css/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: f0f0f0; /* light grey */ 3 | color: darkslategray; /* default font color */ 4 | font-family: Arial, sans-serif; 5 | background-image: url("../images/Designer02.jpeg"); 6 | background-repeat: no-repeat; 7 | background-position: center; 8 | background-size:cover; 9 | } 10 | 11 | h1 { 12 | color: darkgray; /* font for the h1 header*/ 13 | } 14 | 15 | .list-group-item { 16 | color: #333; /* dark grey */ 17 | } 18 | 19 | .form-check input[type="checkbox"]:checked + .title { 20 | text-decoration: line-through; 21 | } 22 | 23 | .title { 24 | display: inline-flex; 25 | font-weight: bold; 26 | color: #333; 27 | } 28 | 29 | .subtitle { 30 | font-size: 14px; 31 | color: #666; 32 | padding-left: 20px; 33 | } 34 | 35 | .card { 36 | border-top: none !important; 37 | } 38 | 39 | .nav-link { 40 | background-color: white; 41 | } 42 | 43 | .highlighted-item { 44 | background-color: #f2f2f2; 45 | } 46 | 47 | .limit-text { 48 | color: white; 49 | } 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/src/app-s08-f01-us01/static/images/Designer01.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/src/app-s08-f01-us01/static/images/Designer01.jpeg -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/src/app-s08-f01-us01/static/images/Designer02.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/src/app-s08-f01-us01/static/images/Designer02.jpeg -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/src/app-s08-f01-us01/static/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/src/app-s08-f01-us01/static/images/favicon.ico -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/src/app-s08-f01-us01/tab.py: -------------------------------------------------------------------------------- 1 | from enum import Enum 2 | 3 | class Tab(Enum): 4 | NONE = 0, 5 | DETAILS = 1, 6 | EDIT = 2, 7 | RECOMMENDATIONS = 3 8 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/src/app-s08-f01-us02/.env-example: -------------------------------------------------------------------------------- 1 | DEBUG_APP="True" 2 | USE_AZURE_OPENAI="True" 3 | OPENAI_API_KEY="" 4 | OPENAI_ORG_ID="" 5 | OPEN_AI_DEPLOYMENT_NAME="gpt-3.5-turbo" 6 | AZURE_OPENAI_DEPLOYMENT_NAME="gpt-35-turbo" 7 | AZURE_OPENAI_ENDPOINT="" 8 | AZURE_OPENAI_API_KEY="" 9 | AZURE_OPENAI_VERSION="2023-05-15" 10 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/src/app-s08-f01-us02/context_processors.py: -------------------------------------------------------------------------------- 1 | # context_processors.py 2 | 3 | from datetime import datetime 4 | 5 | def inject_current_date(): 6 | return {'current_date': datetime.now().strftime('%Y-%m-%d')} -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/src/app-s08-f01-us02/database.py: -------------------------------------------------------------------------------- 1 | from flask_sqlalchemy import SQLAlchemy 2 | from sqlalchemy import Integer, String, Boolean, JSON, func 3 | from sqlalchemy.orm import DeclarativeBase 4 | 5 | class Base(DeclarativeBase): 6 | pass 7 | 8 | db = SQLAlchemy(model_class=Base) 9 | 10 | class Todo(db.Model): 11 | id = db.Column(Integer, primary_key=True) 12 | name = db.Column(String(100), nullable=False) 13 | notes = db.Column(String(100)) 14 | priority = db.Column(Integer, default=0) 15 | completed = db.Column(Boolean, default=False) 16 | recommendations_json = db.Column(db.JSON) #json serialized version of recommendations for storing in DB 17 | due_date = db.Column(String(50)) 18 | 19 | #transient variables (i.e., not stored in db) 20 | recommendations = [] #recommendations as a collection 21 | 22 | def __str__(self): 23 | return self.name 24 | 25 | def priority_str(self): 26 | """ 27 | Returns the priority as a string. 28 | """ 29 | str = "Not Set" 30 | if self.priority == 1: 31 | str = "High" 32 | elif self.priority == 2: 33 | str = "Medium" 34 | elif self.priority == 3: 35 | str = "Low" 36 | 37 | return str 38 | 39 | def completed_str(self): 40 | """ 41 | Returns the completed status as a string. 42 | """ 43 | if self.completed: 44 | return "Yes" 45 | else: 46 | return "No" 47 | 48 | 49 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/src/app-s08-f01-us02/priority.py: -------------------------------------------------------------------------------- 1 | from enum import Enum 2 | 3 | class Priority(Enum): 4 | NONE = 0, 5 | HIGH = 1, 6 | MEDIUM = 2, 7 | LOW = 3 8 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/src/app-s08-f01-us02/requirements.txt: -------------------------------------------------------------------------------- 1 | openai 2 | flask 3 | flask[async] 4 | flask_sqlalchemy 5 | sqlalchemy 6 | semantic-kernel==0.9.5b1 7 | pyodbc 8 | fastapi 9 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/src/app-s08-f01-us02/services.py: -------------------------------------------------------------------------------- 1 | """ 2 | This module defines an enumeration representing different services. 3 | """ 4 | 5 | from enum import Enum 6 | 7 | 8 | class Service(Enum): 9 | """ 10 | Attributes: 11 | OpenAI (str): Represents the OpenAI service. 12 | AzureOpenAI (str): Represents the Azure OpenAI service. 13 | HuggingFace (str): Represents the HuggingFace service. 14 | """ 15 | 16 | OpenAI = "openai" 17 | AzureOpenAI = "azureopenai" 18 | HuggingFace = "huggingface" -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/src/app-s08-f01-us02/static/css/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: f0f0f0; /* light grey */ 3 | color: darkslategray; /* default font color */ 4 | font-family: Arial, sans-serif; 5 | background-image: url("../images/Designer02.jpeg"); 6 | background-repeat: no-repeat; 7 | background-position: center; 8 | background-size:cover; 9 | } 10 | 11 | h1 { 12 | color: darkgray; /* font for the h1 header*/ 13 | } 14 | 15 | .list-group-item { 16 | color: #333; /* dark grey */ 17 | } 18 | 19 | .form-check input[type="checkbox"]:checked + .title { 20 | text-decoration: line-through; 21 | } 22 | 23 | .title { 24 | display: inline-flex; 25 | font-weight: bold; 26 | color: #333; 27 | } 28 | 29 | .subtitle { 30 | font-size: 14px; 31 | color: #666; 32 | padding-left: 20px; 33 | } 34 | 35 | .card { 36 | border-top: none !important; 37 | } 38 | 39 | .nav-link { 40 | background-color: white; 41 | } 42 | 43 | .highlighted-item { 44 | background-color: #f2f2f2; 45 | } 46 | 47 | .limit-text { 48 | color: white; 49 | } 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/src/app-s08-f01-us02/static/images/Designer01.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/src/app-s08-f01-us02/static/images/Designer01.jpeg -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/src/app-s08-f01-us02/static/images/Designer02.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/src/app-s08-f01-us02/static/images/Designer02.jpeg -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/src/app-s08-f01-us02/static/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/src/app-s08-f01-us02/static/images/favicon.ico -------------------------------------------------------------------------------- /Track_1_ToDo_App/Sprint-08 - Deploy to the Cloud/src/app-s08-f01-us02/tab.py: -------------------------------------------------------------------------------- 1 | from enum import Enum 2 | 3 | class Tab(Enum): 4 | NONE = 0, 5 | DETAILS = 1, 6 | EDIT = 2, 7 | RECOMMENDATIONS = 3 8 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/Where to Learn More.md: -------------------------------------------------------------------------------- 1 | # 🎓 Where To Learn More 2 | 3 | ## Table of Contents 4 | 1. [GitHub](#github) 5 | 2. [Python](#Python) 6 | 3. [Flask](#flask--jinga) 7 | 4. [Bootstrap](#bootstrap) 8 | 5. [JavaScript](#javascript) 9 | 10 | ## GitHub 11 | - [GitHub Docs](https://docs.github.com/en) 12 | 13 | ## Python 14 | - [MS Learn Python Learning Path](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/) 15 | - [Python for Beginners Series (YouTube)](https://www.youtube.com/watch?v=jFCNu1-Xdsw&list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6) - 44 introductory videos on YouTube 16 | - [More Python for Beginners (YouTube)](https://www.youtube.com/watch?v=uQ5BZht9L3A) -- Advance Python Topics on YouTube 17 | - [Learn Python.org - Python 101](https://www.learnpython.org/) 18 | - [W3 Schools - Python 101](https://www.w3schools.com/python/) 19 | 20 | ## Flask / Jinga 21 | - [Flask Documentation](https://flask.palletsprojects.com/en/3.0.x/) 22 | - [Jinja Documentation](https://flask.palletsprojects.com/en/3.0.x/templating/) 23 | 24 | ## Bootstrap 25 | - [W3 Schools - Bootstrap tutorial](https://www.w3schools.com/bootstrap5/) 26 | 27 | ## Javascript 28 | - [Documenation](https://developer.mozilla.org/en-US/docs/Web/JavaScript) 29 | - [MS Learn Beginner's Series to JavaScript](https://learn.microsoft.com/en-us/shows/beginners-series-to-javascript/) 30 | - [W3 Schools - JavaScript 101](https://www.w3schools.com/js/) 31 | 32 | 33 | 34 |
35 | 36 | [🔼 Home ](/Track_1_ToDo_App/README.md) -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/MSFT_AnyonecanCode_Banner_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/MSFT_AnyonecanCode_Banner_small.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/MSFT_EveryoneCanCode_Banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/MSFT_EveryoneCanCode_Banner.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint 00/github/AccountFrontpage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint 00/github/AccountFrontpage.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint 00/github/CreateAnAccount.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint 00/github/CreateAnAccount.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint 00/github/CreateCodespace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint 00/github/CreateCodespace.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint 00/github/CreateCodespaces.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint 00/github/CreateCodespaces.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint 00/github/EditProfile.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint 00/github/EditProfile.gif -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint 00/github/EnterEmail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint 00/github/EnterEmail.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint 00/github/EnterPassword.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint 00/github/EnterPassword.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint 00/github/EnterUserName.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint 00/github/EnterUserName.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint 00/github/ExplorerTab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint 00/github/ExplorerTab.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint 00/github/ForkTheRepository.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint 00/github/ForkTheRepository.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint 00/github/GithubSignUp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint 00/github/GithubSignUp.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint 00/github/InstallRecommendedExtensions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint 00/github/InstallRecommendedExtensions.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint 00/github/Microsoft_signup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint 00/github/Microsoft_signup.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint 00/github/NoAnnouncements.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint 00/github/NoAnnouncements.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint 00/github/Settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint 00/github/Settings.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint 00/github/StopCodespaces.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint 00/github/StopCodespaces.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint 00/github/Verification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint 00/github/Verification.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint 00/github/codespaceCreate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint 00/github/codespaceCreate.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint 00/github/codespaceMenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint 00/github/codespaceMenu.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint 00/github/homePage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint 00/github/homePage.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint 00/github/version.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint 00/github/version.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint 00/local/git-downloaded-installer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint 00/local/git-downloaded-installer.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint 00/local/git-finish-installation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint 00/local/git-finish-installation.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint 00/local/git-install.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint 00/local/git-install.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint 00/local/git-installer-setup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint 00/local/git-installer-setup.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint 00/local/git-not-installed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint 00/local/git-not-installed.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint 00/local/git-previously-installed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint 00/local/git-previously-installed.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint 00/local/open-command-line-window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint 00/local/open-command-line-window.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint 00/local/python-installation-complete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint 00/local/python-installation-complete.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint 00/local/python-installation-wizard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint 00/local/python-installation-wizard.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint 00/local/python-installer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint 00/local/python-installer.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint 00/local/vscode-finish-installation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint 00/local/vscode-finish-installation.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint 00/local/vscode-installer-accept-license.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint 00/local/vscode-installer-accept-license.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint 00/local/vscode-installer-download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint 00/local/vscode-installer-download.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint-01 - Basic Application/README.md: -------------------------------------------------------------------------------- 1 | ## Sprint 1 - Basic Application 2 | ⏲️ _Est. time to complete: 30 min._ ⏲️ 3 | 4 | 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. 5 | 6 | > [!NOTE] 7 | > **🎓 Know before you start** 8 | > - [Development 101]() 9 | > - [What is Python?](https://www.youtube.com/watch?v=7XOhibxgBlQ&list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6&index=2) (3:10 min) 10 | > - [Python Extention for Visual Studio Code](https://www.youtube.com/watch?v=CXZYvNRIAKM&list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6&index=4) (2:49 min) 11 | > 12 | 13 | **📕Feature: Manage To-Do List** 14 | 1. [**📖 Add Items to List**](/Track_1_ToDo_App/Sprint-01%20-%20Basic%20Application/Feature%201%20-%20Manage%20Todo%20List/User%20Story%201%20-%20Add%20Item%20to%20List.MD) 15 | 2. [**📖 Remove Items from List**](/Track_1_ToDo_App/Sprint-01%20-%20Basic%20Application/Feature%201%20-%20Manage%20Todo%20List/User%20Story%202%20-%20Remove%20Item%20from%20List.md) 16 | 17 | **📕Feature: Save To-Do List** 18 | 1. [**📖 Save List to File**](/Track_1_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 19 | ) 20 | 2. [**📖 Load List from File**](/Track_1_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) 21 | 22 | 23 | 24 | > [!NOTE] 25 | > 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! 26 | 27 |
28 | 29 | [🔼 Workshop Home Page ](/Track_1_ToDo_App/Workshop-Format.md) | [◀ Previous Sprint](/Track_1_ToDo_App/Sprint-00%20-%20Environment%20Setup/readme.md) | [Next sprint ▶](/Track_1_ToDo_App/Sprint-02%20-%20Web%20Application/README.md) 30 | 31 | 32 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint-01 - Basic Application/images/EditCode-S1-F1-US01-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint-01 - Basic Application/images/EditCode-S1-F1-US01-01.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint-01 - Basic Application/images/EditCode-S1-F1-US02-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint-01 - Basic Application/images/EditCode-S1-F1-US02-01.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint-01 - Basic Application/images/EditCode-S1-F1-US02-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint-01 - Basic Application/images/EditCode-S1-F1-US02-02.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint-01 - Basic Application/images/FirstApp-S01-F01-US01-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint-01 - Basic Application/images/FirstApp-S01-F01-US01-01.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint-01 - Basic Application/images/InsertCode-S1-F2-US02-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint-01 - Basic Application/images/InsertCode-S1-F2-US02-01.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint-01 - Basic Application/images/Need Screen Shot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint-01 - Basic Application/images/Need Screen Shot.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint-01 - Basic Application/images/NewFile-S01-F01-US01-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint-01 - Basic Application/images/NewFile-S01-F01-US01-01.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint-01 - Basic Application/images/RunApp-S1-F1-US01-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint-01 - Basic Application/images/RunApp-S1-F1-US01-01.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint-01 - Basic Application/images/RunApp-S1-F1-US01-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint-01 - Basic Application/images/RunApp-S1-F1-US01-02.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint-01 - Basic Application/images/RunApp-S1-F1-US01-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint-01 - Basic Application/images/RunApp-S1-F1-US01-03.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint-01 - Basic Application/images/RunApp-S1-F1-US02-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint-01 - Basic Application/images/RunApp-S1-F1-US02-01.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint-01 - Basic Application/images/RunApp-S1-F2-US01-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint-01 - Basic Application/images/RunApp-S1-F2-US01-01.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint-01 - Basic Application/images/newFile-S01-F01-US01-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint-01 - Basic Application/images/newFile-S01-F01-US01-02.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint-01 - Basic Application/images/outcome-S1-F1-US1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint-01 - Basic Application/images/outcome-S1-F1-US1.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint-01 - Basic Application/images/outcome-S1-F1-US2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/Sprint-01 - Basic Application/images/outcome-S1-F1-US2.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint-01 - Basic Application/src/README.md: -------------------------------------------------------------------------------- 1 | # Sprint 1 - Source Code Directory 2 | This directory contains the completed source code after the end of each user story. The directory is structured as `app-s01-f01-us02` where 3 | - `s01` - represents the sprint number, in this case sprint 1 4 | - `f01` - represents the feature number, in this case feature 1 5 | - `us02` - represents the user story number, in this case user story 2 6 | 7 | > [!NOTE] 8 | > 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. 9 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint-01 - Basic Application/src/app-s01-f01-us01/app.py: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | ## Sprint 1: Basic Application 3 | ## Feature 1: Create and Manage a To-Do List 4 | ## User Story 1: Add Item to List 5 | ############################################################################### 6 | 7 | todo_list = [] 8 | 9 | #continue to loop and display menu until user selects to exit the program 10 | while True: 11 | print() # Add a couple of blank lines 12 | print() 13 | print("To-do list: ") # Print the title of the list 14 | for todo in todo_list: # Loop through existing to-do items 15 | print(todo) 16 | 17 | # Print the menu 18 | print() # Add a of blank lines 19 | print("Actions:") 20 | print("A - Add to-do item") 21 | print("X - Exit") 22 | choice = input("Enter your choice (A or X): ") 23 | choice = choice.upper() #converts the choice to uppercase 24 | 25 | #user selected 'a' or 'A' - To Add an item to the list 26 | if choice == "A": 27 | todo = input("Enter the to-do item: ") 28 | todo_list.append(todo) 29 | continue #tells the program to go back to the start of the loop 30 | 31 | #user selected 'x' or 'X' to exit program 32 | if choice == "X": 33 | break #tells the program to exit the loop 34 | 35 | #user selected something else 36 | print("Invalid choice") 37 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint-01 - Basic Application/src/app-s01-f01-us02/app.py: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | ## Sprint 1: Basic Application 3 | ## Feature 1: Create and Manage a To-Do List 4 | ## User Story 2: Remove Item from List 5 | ############################################################################### 6 | 7 | todo_list = [] 8 | 9 | #continue to loop and display menu until user selects to exit the program 10 | while True: 11 | print() # Add a couple of blank lines 12 | print() 13 | print("To-do list: ") # Print the title of the list 14 | item_number = 1 15 | for todo in todo_list: # Loop through existing to-do items 16 | print(f'{item_number}: {todo}') 17 | item_number += 1 18 | 19 | # Print the menu 20 | print() # Add a of blank lines 21 | print("Actions:") 22 | print("A - Add to-do item") 23 | print("R - Remove to-do item") 24 | print("X - Exit") 25 | choice = input("Enter your choice (A, R, or X): ") 26 | choice = choice.upper() #converts the choice to uppercase 27 | 28 | #user selected 'a' or 'A' - To Add an item to the list 29 | if choice == "A": 30 | todo = input("Enter the to-do item: ") 31 | todo_list.append(todo) 32 | continue #tells the program to go back to the start of the loop 33 | 34 | #user selected 'r' or 'R' - To Remove an item from the list 35 | if choice == "R": 36 | item_number = int(input("Enter the number of the item to remove: ")) 37 | if item_number > 0 and item_number <= len(todo_list): 38 | todo_list.pop(item_number - 1) 39 | else: 40 | print("Invalid item number") 41 | continue 42 | 43 | #user 1 selected 'x' or 'X' to exit program 44 | if choice == "X": 45 | break #tells the program to exit the loop 46 | 47 | #user selected something else 48 | print("Invalid choice") 49 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint-01 - Basic Application/src/app-s01-f02-us01/app.py: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | ## Sprint 1: Basic Application 3 | ## Feature 2: Persist To-Do List 4 | ## User Story 1: Save To-Do List 5 | ############################################################################### 6 | 7 | todo_list = [] 8 | 9 | #continue to loop and display menu until user selects to exit the program 10 | while True: 11 | print() # Add a couple of blank lines 12 | print() 13 | print("To-do list: ") # Print the title of the list 14 | item_number = 1 15 | for todo in todo_list: # Loop through existing to-do items 16 | print(f'{item_number}: {todo}') 17 | item_number += 1 18 | 19 | # Print the menu 20 | print() # Add a of blank lines 21 | print("Actions:") 22 | print("A - Add to-do item") 23 | print("R - Remove to-do item") 24 | print("X - Exit") 25 | choice = input("Enter your choice (A, R, or X): ") 26 | choice = choice.upper() #converts the choice to uppercase 27 | 28 | #user selected 'a' or 'A' - To Add an item to the list 29 | if choice == "A": 30 | todo = input("Enter the to-do item: ") 31 | todo_list.append(todo) 32 | continue #tells the program to go back to the start of the loop 33 | 34 | #user selected 'r' or 'R' - To Remove an item from the list 35 | if choice == "R": 36 | item_number = int(input("Enter the number of the item to remove: ")) 37 | if item_number > 0 and item_number <= len(todo_list): 38 | todo_list.pop(item_number - 1) 39 | else: 40 | print("Invalid item number") 41 | continue 42 | 43 | #user 1 selected 'x' or 'X' to exit program 44 | if choice == "X": 45 | #on exit save your current list to a file 46 | print("Saving to-do list to file") 47 | with open("todo_list.txt", "w") as file: 48 | for todo in todo_list: 49 | file.write(todo + "\n") 50 | 51 | break #tells the program to exit the loop 52 | 53 | #user selected something else 54 | print("Invalid choice") 55 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/Sprint-01 - Basic Application/src/app-s01-f02-us02/app.py: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | ## Feature 2: Persist To-Do List 3 | ## User Story 2: Load To-Do List 4 | ############################################################################### 5 | 6 | todo_list = [] 7 | 8 | # Load the to-do list from a file 9 | try: 10 | with open("todo_list.txt") as file: 11 | for line in file: 12 | todo_list.append(line.strip()) 13 | except FileNotFoundError: 14 | pass #ignore the error if the file does not exist, simply start with an empty list 15 | 16 | #continue to loop and display menu until user selects to exit the program 17 | while True: 18 | print() # Add a couple of blank lines 19 | print() 20 | print("To-do list: ") # Print the title of the list 21 | item_number = 1 22 | for todo in todo_list: # Loop through existing to-do items 23 | print(f'{item_number}: {todo}') 24 | item_number += 1 25 | 26 | # Print the menu 27 | print() # Add a of blank lines 28 | print("Actions:") 29 | print("A - Add to-do item") 30 | print("R - Remove to-do item") 31 | print("X - Exit") 32 | choice = input("Enter your choice (A, R, or X): ") 33 | choice = choice.upper() #converts the choice to uppercase 34 | 35 | #user selected 'a' or 'A' - To Add an item to the list 36 | if choice == "A": 37 | todo = input("Enter the to-do item: ") 38 | todo_list.append(todo) 39 | continue #tells the program to go back to the start of the loop 40 | 41 | #user selected 'r' or 'R' - To Remove an item from the list 42 | if choice == "R": 43 | item_number = int(input("Enter the number of the item to remove: ")) 44 | if item_number > 0 and item_number <= len(todo_list): 45 | todo_list.pop(item_number - 1) 46 | else: 47 | print("Invalid item number") 48 | continue 49 | 50 | #user 1 selected 'x' or 'X' to exit program 51 | if choice == "X": 52 | #on exit save your current list to a file 53 | print("Saving to-do list to file") 54 | with open("todo_list.txt", "w") as file: 55 | for todo in todo_list: 56 | file.write(todo + "\n") 57 | 58 | break #tells the program to exit the loop 59 | 60 | #user selected something else 61 | print("Invalid choice") 62 | -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/anyone-can-code_1400x300.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/anyone-can-code_1400x300.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/github-start-codespace-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/github-start-codespace-02.png -------------------------------------------------------------------------------- /Track_1_ToDo_App/content-images/github-start-codespace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/Track_1_ToDo_App/content-images/github-start-codespace.png -------------------------------------------------------------------------------- /content-images/MSFT_EveryoneCanCode_Banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/content-images/MSFT_EveryoneCanCode_Banner.png -------------------------------------------------------------------------------- /content-images/everyone-can-code-content-reviewers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/content-images/everyone-can-code-content-reviewers.png -------------------------------------------------------------------------------- /content-images/everyone-can-code-core-team.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/EveryoneCanCode-US/a18d2705d4220a3d82de8eb8e455361490b5258b/content-images/everyone-can-code-core-team.png --------------------------------------------------------------------------------