From f4f1dd86d4454f9bc1fca7546b051b2db55a86b1 Mon Sep 17 00:00:00 2001 From: jkissane2 Date: Thu, 2 Apr 2026 10:18:51 -0400 Subject: [PATCH] Finished Banjo App I am proud of the work I have done on this project. I first started out with just the "lessons" endpoint and I didn't like how the material was organized so I added the "topics" endpoint and "unit" endpoint to make it easier to find lessons on a specific topic or unit. I also added the "notes" endpoint to make it easier to find reflections on specific lessons. I am really happy wth how my app turned out and I am glad I chose something I can actually use. I am excited to add more lesson plans in the future especially if I teach different classes to help me stay organized. --- .envrc | 1 + lesson_app/app/database.sqlite | Bin 0 -> 131072 bytes lesson_app/app/views.py | 61 +++++++++++++++++++++++++++++++++ planning.md | 7 ++-- 4 files changed, 66 insertions(+), 3 deletions(-) create mode 100644 .envrc create mode 100644 lesson_app/app/database.sqlite create mode 100644 lesson_app/app/views.py diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..4a96c22 --- /dev/null +++ b/.envrc @@ -0,0 +1 @@ +source .venv/bin/activate \ No newline at end of file diff --git a/lesson_app/app/database.sqlite b/lesson_app/app/database.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..77b281797c0d9362dc6b87a357e74b74d5763b72 GIT binary patch literal 131072 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 literal 0 HcmV?d00001 diff --git a/lesson_app/app/views.py b/lesson_app/app/views.py new file mode 100644 index 0000000..6b7fff5 --- /dev/null +++ b/lesson_app/app/views.py @@ -0,0 +1,61 @@ +from banjo.urls import route_get + +lessons_data = [ + { + "course": "Algebra 1", + "unit": "Unit 9: Quadratic Functions", + "topic": "Graphing Quadratic Functions", + "title": "Intro to Quadratic Graphs", + "objective": "Students will graph quadratic functions and identify key features.", + "materials": "Graph paper and calculators", + "warmup": "Review linear graphs", + "activity": "Introduce standard form", + "exit_ticket": "Short assessment", + "notes": "Use visuals" + }, + { + "course": "Algebra 1", + "unit": "Unit 5: Linear Functions", + "topic": "Slope Intercept Form", + "title": "Graphing Linear Equations", + "objective": "Students will graph lines in slope-intercept form.", + "materials": "Notebook and graph paper", + "warmup": "Review slope from a graph", + "activity": "Practice graphing from y = mx + b", + "exit_ticket": "Graph two linear equations", + "notes": "Remind students that b is the y-intercept" + }, + { + "course": "Algebra 1", + "unit": "Unit 6: Systems of Equations", + "topic": "Substitution", + "title": "Solving Systems by Substitution", + "objective": "Students will solve systems using substitution.", + "materials": "Guided notes and worksheet", + "warmup": "Solve a one-step equation", + "activity": "Model substitution step-by-step", + "exit_ticket": "Solve one system independently", + "notes": "Go slowly on substitution" + } +] + +@route_get("lessons") +def lessons(params): + return {"lessons": lessons_data} + +@route_get("units") +def units(params): + unit_names = sorted(set(lesson["unit"] for lesson in lessons_data)) + return {"units": unit_names} + +@route_get("topics") +def topics(params): + topic_names = sorted(set(lesson["topic"] for lesson in lessons_data)) + return {"topics": topic_names} + +@route_get("notes") +def notes(params): + notes_names = sorted(set(lesson["notes"] for lesson in lessons_data)) + return {"notes": notes_names} + + diff --git a/planning.md b/planning.md index 8cc0c7d..7d0bf4d 100644 --- a/planning.md +++ b/planning.md @@ -1,18 +1,19 @@ # Planning your app ## 1. Who will use your app? (Who is your app's target user?) - +This app is designed for teachers, specifically myself as a math teacher, who want to organize lesson plans efficiently. The user will host the app on their own computer for personal use. It can be used to organize lesson plans, track units, and refelct on lessons for future improvement. ## 2. What need or problem will your app solve? How do you know this is really a need for your target user? How does the target user currently deal with the problem? - +My app is designed to help teachers stay organized. I often struggle to keep my lesson plans organized across units and topics from year to year. I find myself always looking for a specific lessons and can't remember if its in my Google Drive. OneDrive, or in a binder in my filing cabinet. ## 3. How will your app's design meet the need you have identified? - +My app solves my issue by storing all lesson plans in one place, allowing easy searching for materials by topic and unit, and allowing teachers to add notes and reflections after each lesson so when they pull up the lesson in the future, they know what went smooth and what could use improvement. ## 4. How could your app possibly cause harm? (For example, could someone get hurt if data leaked or if someone used the app inappropriately?) What steps will you take to ensure that nobody is harmed by your app? +This app is unliekly to cause harm. It is intended for personal use by teachers. There is minimal risk since no sensitive data is required. To ensure saftey, no personal student data will be stored in the app.