This repository now contains complete lesson folders.
Change into one lesson folder first, then run:
uv synclesson_1_base_app: complete base project with create, read, and deletelesson_2_edit_notes: complete project that adds editing step by steplesson_3_note_details: complete project that adds a detail page for one notelesson_4_search_notes: complete project that adds search with query stringslesson_5_sort_notes: complete project that adds sorting for the note listlesson_6_validation_messages: complete project that adds validation and error messageslesson_7_note_categories: complete project that adds a second table and SQL joinslesson_8_category_summary: complete project that adds SQL aggregation withGROUP BY
Each lesson folder contains its own app.py, templates/, pyproject.toml, and README.md.
- Change into
lesson_1_base_app - Read and run the base project
- Change into
lesson_2_edit_notes - Compare both folders and follow the numbered comments in lesson 2
- Change into
lesson_3_note_details - Add the next "read" feature: a page for one single note
- Change into
lesson_4_search_notes - Learn filtering with query strings and SQL
LIKE - Change into
lesson_5_sort_notes - Learn safe sorting with a whitelist for
ORDER BY - Change into
lesson_6_validation_messages - Learn form validation and error handling
- Change into
lesson_7_note_categories - Learn relational data with categories and
JOIN - Change into
lesson_8_category_summary - Learn SQL aggregation with
COUNTandGROUP BY
The later lesson folders explain their new feature directly in the code with numbered comments. This keeps the base project clean and each later lesson focused on one feature.
lesson_1_base_app/app.py: base applesson_1_base_app/templates/index.html: base UIlesson_2_edit_notes/app.py: lesson 2 applesson_2_edit_notes/templates/index.html: lesson 2 UIlesson_3_note_details/app.py: lesson 3 applesson_3_note_details/templates/index.html: lesson 3 list pagelesson_3_note_details/templates/detail.html: lesson 3 detail pagelesson_4_search_notes/app.py: lesson 4 applesson_5_sort_notes/app.py: lesson 5 applesson_6_validation_messages/app.py: lesson 6 applesson_7_note_categories/app.py: lesson 7 applesson_8_category_summary/app.py: lesson 8 app