From 4f8ffcffab34911ca5048ee913db5382756aa32a Mon Sep 17 00:00:00 2001 From: Colin Farquhar Date: Thu, 7 May 2026 10:33:00 +0100 Subject: [PATCH 1/9] add backlog issues in json format --- org-cyf/data/backlog.json | 1311 +++++++++++++++++++++++++++++++++++++ 1 file changed, 1311 insertions(+) create mode 100644 org-cyf/data/backlog.json diff --git a/org-cyf/data/backlog.json b/org-cyf/data/backlog.json new file mode 100644 index 000000000..b7e2ffaa6 --- /dev/null +++ b/org-cyf/data/backlog.json @@ -0,0 +1,1311 @@ +{ + "courses": { + "itp": { + "modules": [ + { + "name": "Welcome to Code Your Future", + "sprints": [ + { + "backlog_tasks": [ + { + "category": "setup", + "src": "https://github.com/CodeYourFuture/Module-Welcome/issues/3", + "submit": "None", + "title": "Complete the start survey" + }, + { + "category": "setup", + "src": "https://github.com/CodeYourFuture/Module-Welcome/issues/2", + "submit": "None", + "title": "Fill out the GitHub Username Form" + }, + { + "category": "setup", + "src": "https://github.com/CodeYourFuture/Module-Welcome/issues/1", + "submit": "None", + "title": "Join Slack channels for your region and batch" + } + ], + "name": "Welcome to Code Your Future" + } + ] + }, + { + "name": "Onboarding", + "sprints": [ + { + "backlog_tasks": [ + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Onboarding/issues/108", + "submit": "None", + "title": "Fill out the GitHub Username Form" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Onboarding/issues/19", + "submit": "PR", + "title": "Form Controls" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Onboarding/issues/67", + "submit": "Issue", + "title": "Help me with my kid's homework" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Onboarding/issues/44", + "submit": "Issue", + "title": "Manage time with your calendar" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Onboarding/issues/9", + "submit": "None", + "title": "Naming accounts consistently" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Onboarding/issues/73", + "submit": "None", + "title": "Plan your life as a tech professional" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Onboarding/issues/68", + "submit": "Issue", + "title": "Tell us about yourself using GitHub" + }, + { + "category": "optional", + "src": "https://github.com/CodeYourFuture/Module-Onboarding/issues/22", + "submit": "PR", + "title": "Bikes for Refugees" + }, + { + "category": "recurring", + "src": "https://github.com/CodeYourFuture/Module-Onboarding/issues/918", + "submit": "None", + "title": "Attend a demo session" + }, + { + "category": "recurring", + "src": "https://github.com/CodeYourFuture/Module-Onboarding/issues/34", + "submit": "None", + "title": "Do the Prep" + }, + { + "category": "recurring", + "src": "https://github.com/CodeYourFuture/Module-Onboarding/issues/734", + "submit": "None", + "title": "Get Code Review and Iterate" + }, + { + "category": "setup", + "src": "https://github.com/CodeYourFuture/Module-Onboarding/issues/60", + "submit": "None", + "title": "Check module success criteria" + }, + { + "category": "setup", + "src": "https://github.com/CodeYourFuture/Module-Onboarding/issues/70", + "submit": "None", + "title": "Read and watch How This Works" + } + ], + "name": "Sprint 1" + }, + { + "backlog_tasks": [ + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Onboarding/issues/46", + "submit": "Issue", + "title": "Create your Development Plan" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Onboarding/issues/4", + "submit": "Issue", + "title": "Format data with Google Sheets" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Onboarding/issues/8", + "submit": "None", + "title": "Prepare for the Asking Questions workshop" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Onboarding/issues/17", + "submit": "PR", + "title": "Wireframe to Web Code" + }, + { + "category": "optional", + "src": "https://github.com/CodeYourFuture/Module-Onboarding/issues/62", + "submit": "Slack", + "title": "Optional Coursework feedback" + }, + { + "category": "optional", + "src": "https://github.com/CodeYourFuture/Module-Onboarding/issues/58", + "submit": "None", + "title": "Prepare to enroll as a trainee" + }, + { + "category": "recurring", + "src": "https://github.com/CodeYourFuture/Module-Onboarding/issues/34", + "submit": "None", + "title": "Do the Prep" + }, + { + "category": "recurring", + "src": "https://github.com/CodeYourFuture/Module-Onboarding/issues/734", + "submit": "None", + "title": "Get Code Review and Iterate" + } + ], + "name": "Sprint 2" + }, + { + "backlog_tasks": [ + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Onboarding/issues/38", + "submit": "Issue", + "title": "Communicate at work using Google Doc and Slides" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Onboarding/issues/40", + "submit": "Slack", + "title": "Developing a growth mindset " + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Onboarding/issues/5", + "submit": "Issue", + "title": "Evaluate, and interpret data with Google Sheets" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Onboarding/issues/935", + "submit": "None", + "title": "Mandatory Onboarding Codewars Katas" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Onboarding/issues/53", + "submit": "None", + "title": "Prepare for the Devtools workshop" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Onboarding/issues/6", + "submit": "Issue", + "title": "Query Data in Google Sheets with SQL" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Onboarding/issues/26", + "submit": "Slack", + "title": "Record a Goose" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Onboarding/issues/54", + "submit": "Issue", + "title": "Reflect on your plan to live as a tech professional" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Onboarding/issues/7", + "submit": "Issue", + "title": "SQL Problems using Google Sheets" + }, + { + "category": "optional", + "src": "https://github.com/CodeYourFuture/Module-Onboarding/issues/221", + "submit": "Slack", + "title": "Collect your self study courses" + }, + { + "category": "recurring", + "src": "https://github.com/CodeYourFuture/Module-Onboarding/issues/918", + "submit": "None", + "title": "Attend a demo session" + }, + { + "category": "recurring", + "src": "https://github.com/CodeYourFuture/Module-Onboarding/issues/34", + "submit": "None", + "title": "Do the Prep" + }, + { + "category": "recurring", + "src": "https://github.com/CodeYourFuture/Module-Onboarding/issues/734", + "submit": "None", + "title": "Get Code Review and Iterate" + }, + { + "category": "setup", + "src": "https://github.com/CodeYourFuture/Module-Onboarding/issues/39", + "submit": "Slack", + "title": "Enrolment Part 1: Join Codewars" + }, + { + "category": "setup", + "src": "https://github.com/CodeYourFuture/Module-Onboarding/issues/570", + "submit": "None", + "title": "Enrolment Part 2: Complete Step1 - Onboarding" + }, + { + "category": "setup", + "src": "https://github.com/CodeYourFuture/Module-Onboarding/issues/72", + "submit": "None", + "title": "Enrolment Part 3: Enroll as a Trainee" + } + ], + "name": "Sprint 3" + } + ] + }, + { + "name": "Structuring and testing data", + "sprints": [ + { + "backlog_tasks": [ + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Structuring-and-Testing-Data/issues/35", + "submit": "PR", + "title": "Complete Sprint 1 Coursework" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Structuring-and-Testing-Data/issues/899", + "submit": "None", + "title": "Mandatory Sprint 1 Codewars Katas" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Structuring-and-Testing-Data/issues/9", + "submit": "None", + "title": "Review your development plan" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Structuring-and-Testing-Data/issues/906", + "submit": "None", + "title": "Workshop Preparation: Asking Questions" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Structuring-and-Testing-Data/issues/1295", + "submit": "None", + "title": "Workshop Preparation: Screen Safari" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Structuring-and-Testing-Data/issues/449", + "submit": "Issue", + "title": "Writing an email for an internship" + }, + { + "category": "optional", + "src": "https://github.com/CodeYourFuture/Module-Structuring-and-Testing-Data/issues/902", + "submit": "None", + "title": "Stretch Codewars Katas" + }, + { + "category": "recurring", + "src": "https://github.com/CodeYourFuture/Module-Structuring-and-Testing-Data/issues/897", + "submit": "None", + "title": "Give a demo in a demo session" + }, + { + "category": "recurring", + "src": "https://github.com/CodeYourFuture/Module-Structuring-and-Testing-Data/issues/28", + "submit": "None", + "title": "Mentored pair programming" + }, + { + "category": "setup", + "src": "https://github.com/CodeYourFuture/Module-Structuring-and-Testing-Data/issues/3", + "submit": "None", + "title": "Check module success criteria" + }, + { + "category": "setup", + "src": "https://github.com/CodeYourFuture/Module-Structuring-and-Testing-Data/issues/218", + "submit": "None", + "title": "Check your setup" + }, + { + "category": "setup", + "src": "https://github.com/CodeYourFuture/Module-Structuring-and-Testing-Data/issues/39", + "submit": "None", + "title": "Do you need support to continue studying?" + } + ], + "name": "Sprint 1" + }, + { + "backlog_tasks": [ + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Structuring-and-Testing-Data/issues/11", + "submit": "Issue", + "title": "Ask a good question for real" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Structuring-and-Testing-Data/issues/16", + "submit": "None", + "title": "Asking for feedback" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Structuring-and-Testing-Data/issues/7", + "submit": "PR", + "title": "Complete Sprint 2 coursework" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Structuring-and-Testing-Data/issues/900", + "submit": "None", + "title": "Mandatory Sprint 2 Codewars Katas" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Structuring-and-Testing-Data/issues/24", + "submit": "None", + "title": "Play the CLI Treasure Hunt" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Structuring-and-Testing-Data/issues/18", + "submit": "Issue", + "title": "Writing a meeting request email" + }, + { + "category": "optional", + "src": "https://github.com/CodeYourFuture/Module-Structuring-and-Testing-Data/issues/902", + "submit": "None", + "title": "Stretch Codewars Katas" + }, + { + "category": "recurring", + "src": "https://github.com/CodeYourFuture/Module-Structuring-and-Testing-Data/issues/28", + "submit": "None", + "title": "Mentored pair programming" + } + ], + "name": "Sprint 2" + }, + { + "backlog_tasks": [ + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Structuring-and-Testing-Data/issues/6", + "submit": "PR", + "title": "Complete Sprint 3 implement and rewrite tests coursework" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Structuring-and-Testing-Data/issues/695", + "submit": "PR", + "title": "Complete Sprint 3 practice TDD coursework" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Structuring-and-Testing-Data/issues/1291", + "submit": "None", + "title": "Complete the mid-way survey" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Structuring-and-Testing-Data/issues/15", + "submit": "Issue", + "title": "Learn from rejections" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Structuring-and-Testing-Data/issues/901", + "submit": "None", + "title": "Mandatory Sprint 3 Codewars Katas" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Structuring-and-Testing-Data/issues/1", + "submit": "None", + "title": "Play the Bandit" + }, + { + "category": "optional", + "src": "https://github.com/CodeYourFuture/Module-Structuring-and-Testing-Data/issues/696", + "submit": "PR", + "title": "Complete Sprint 3 stretch coursework" + }, + { + "category": "optional", + "src": "https://github.com/CodeYourFuture/Module-Structuring-and-Testing-Data/issues/903", + "submit": "PR", + "title": "Refactoring Dead Code" + }, + { + "category": "optional", + "src": "https://github.com/CodeYourFuture/Module-Structuring-and-Testing-Data/issues/902", + "submit": "None", + "title": "Stretch Codewars Katas" + }, + { + "category": "optional", + "src": "https://github.com/CodeYourFuture/Module-Structuring-and-Testing-Data/issues/2", + "submit": "None", + "title": "Watch the VSCode Debugger Video" + }, + { + "category": "recurring", + "src": "https://github.com/CodeYourFuture/Module-Structuring-and-Testing-Data/issues/897", + "submit": "None", + "title": "Give a demo in a demo session" + }, + { + "category": "recurring", + "src": "https://github.com/CodeYourFuture/Module-Structuring-and-Testing-Data/issues/28", + "submit": "None", + "title": "Mentored pair programming" + } + ], + "name": "Sprint 3" + } + ] + }, + { + "name": "Data groups", + "sprints": [ + { + "backlog_tasks": [ + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Groups/issues/15", + "submit": "PR", + "title": "Complete sprint 1 exercises" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Groups/issues/23", + "submit": "Issue", + "title": "Create or review your CV" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Groups/issues/5", + "submit": "None", + "title": "Explore the network tab" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Groups/issues/936", + "submit": "None", + "title": "Mandatory Sprint 1 Codewars Katas" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Groups/issues/34", + "submit": "None", + "title": "Play the Bandit" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Groups/issues/22", + "submit": "None", + "title": "Read and practice: The Cycles of TDD" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Groups/issues/29", + "submit": "Issue", + "title": "Review your development plan" + }, + { + "category": "optional", + "src": "https://github.com/CodeYourFuture/Module-Data-Groups/issues/939", + "submit": "None", + "title": "Stretch Sprint 1 Codewars Katas" + }, + { + "category": "recurring", + "src": "https://github.com/CodeYourFuture/Module-Data-Groups/issues/31", + "submit": "None", + "title": "Codewars: Data Groups and Demos" + }, + { + "category": "recurring", + "src": "https://github.com/CodeYourFuture/Module-Data-Groups/issues/794", + "submit": "None", + "title": "Give a demo in a demo session" + }, + { + "category": "recurring", + "src": "https://github.com/CodeYourFuture/Module-Data-Groups/issues/38", + "submit": "None", + "title": "Mentored pair programming" + }, + { + "category": "setup", + "src": "https://github.com/CodeYourFuture/Module-Data-Groups/issues/6", + "submit": "None", + "title": "Check module success criteria" + } + ], + "name": "Sprint 1" + }, + { + "backlog_tasks": [ + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Groups/issues/14", + "submit": "PR", + "title": "Complete sprint 2 exercises" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Groups/issues/49", + "submit": "None", + "title": "Group Project: Tic-Tac-Toe - Steps 1 to 6" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Groups/issues/937", + "submit": "None", + "title": "Mandatory Sprint 2 Codewars Katas" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Groups/issues/34", + "submit": "None", + "title": "Play the Bandit" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Groups/issues/601", + "submit": "None", + "title": "Read about Mental Models" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Groups/issues/13", + "submit": "Issue", + "title": "Review a fellow trainee's CV" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Groups/issues/944", + "submit": "Issue", + "title": "Working with your team" + }, + { + "category": "optional", + "src": "https://github.com/CodeYourFuture/Module-Data-Groups/issues/945", + "submit": "Issue", + "title": "Giving feedback on the e-mails" + }, + { + "category": "optional", + "src": "https://github.com/CodeYourFuture/Module-Data-Groups/issues/53", + "submit": "Issue", + "title": "LinkedIn research " + }, + { + "category": "optional", + "src": "https://github.com/CodeYourFuture/Module-Data-Groups/issues/12", + "submit": "Slack", + "title": "Make a business proposal to take a risk" + }, + { + "category": "optional", + "src": "https://github.com/CodeYourFuture/Module-Data-Groups/issues/940", + "submit": "None", + "title": "Stretch Sprint 2 Codewars Katas" + }, + { + "category": "recurring", + "src": "https://github.com/CodeYourFuture/Module-Data-Groups/issues/32", + "submit": "None", + "title": "Codewars: Time traveller" + }, + { + "category": "recurring", + "src": "https://github.com/CodeYourFuture/Module-Data-Groups/issues/38", + "submit": "None", + "title": "Mentored pair programming" + } + ], + "name": "Sprint 2" + }, + { + "backlog_tasks": [ + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Groups/issues/20", + "submit": "PR", + "title": "Build a quote generator app" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Groups/issues/8", + "submit": "PR", + "title": "Build a todo-list app" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Groups/issues/26", + "submit": "PR", + "title": "Build an alarm clock app" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Groups/issues/2", + "submit": "None", + "title": "Do the Chrome Debugger Mini Workshop" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Groups/issues/50", + "submit": "Issue", + "title": "Group Project: Tic-Tac-Toe - Steps 7 to 10" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Groups/issues/938", + "submit": "None", + "title": "Mandatory Sprint 3 Codewars Katas" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Groups/issues/9", + "submit": "Slack", + "title": "Share one resource to the CYF community on Slack" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Groups/issues/10", + "submit": "None", + "title": "The Brag Diary" + }, + { + "category": "optional", + "src": "https://github.com/CodeYourFuture/Module-Data-Groups/issues/16", + "submit": "Slack", + "title": "Apply Magic Sauce" + }, + { + "category": "optional", + "src": "https://github.com/CodeYourFuture/Module-Data-Groups/issues/18", + "submit": "PR", + "title": "Build a reading list display" + }, + { + "category": "optional", + "src": "https://github.com/CodeYourFuture/Module-Data-Groups/issues/7", + "submit": "PR", + "title": "Build a slideshow app" + }, + { + "category": "optional", + "src": "https://github.com/CodeYourFuture/Module-Data-Groups/issues/941", + "submit": "None", + "title": "Stretch Sprint 3 Codewars Katas" + }, + { + "category": "recurring", + "src": "https://github.com/CodeYourFuture/Module-Data-Groups/issues/794", + "submit": "None", + "title": "Give a demo in a demo session" + }, + { + "category": "recurring", + "src": "https://github.com/CodeYourFuture/Module-Data-Groups/issues/38", + "submit": "None", + "title": "Mentored pair programming" + } + ], + "name": "Sprint 3" + } + ] + }, + { + "name": "Data flows", + "sprints": [ + { + "backlog_tasks": [ + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Flows/issues/30", + "submit": "Slack", + "title": "Check out an API response" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Flows/issues/371", + "submit": "None", + "title": "Mandatory Sprint 1 Codewars Katas" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Flows/issues/24", + "submit": "PR", + "title": "Object Destructuring" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Flows/issues/26", + "submit": "None", + "title": "Play the Bandit" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Flows/issues/247", + "submit": "None", + "title": "Read about team roles" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Flows/issues/44", + "submit": "Issue", + "title": "TV Show Project" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Flows/issues/474", + "submit": "None", + "title": "TV Show Project Level 0: Set up project" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Flows/issues/475", + "submit": "None", + "title": "TV Show Project Level 100: Display information about every episode of a single TV show." + }, + { + "category": "optional", + "src": "https://github.com/CodeYourFuture/Module-Data-Flows/issues/6", + "submit": "None", + "title": "Technical Writing" + }, + { + "category": "recurring", + "src": "https://github.com/CodeYourFuture/Module-Data-Flows/issues/323", + "submit": "None", + "title": "Give a demo in a demo session" + }, + { + "category": "recurring", + "src": "https://github.com/CodeYourFuture/Module-Data-Flows/issues/37", + "submit": "None", + "title": "Mentored pair programming" + }, + { + "category": "setup", + "src": "https://github.com/CodeYourFuture/Module-Data-Flows/issues/5", + "submit": "None", + "title": "Check module success criteria" + } + ], + "name": "Sprint 1" + }, + { + "backlog_tasks": [ + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Flows/issues/31", + "submit": "PR", + "title": "Book Library" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Flows/issues/12", + "submit": "Issue", + "title": "Linkedin Social Selling Index" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Flows/issues/372", + "submit": "None", + "title": "Mandatory Sprint 2 Codewars Katas" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Flows/issues/484", + "submit": "None", + "title": "Prepare a demo for Q&A workshop" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Flows/issues/476", + "submit": "None", + "title": "TV Show Project Level 200: Swap Codebases" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Flows/issues/477", + "submit": "None", + "title": "TV Show Project Level 300: Swap back to your old codebase" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Flows/issues/8", + "submit": "Issue", + "title": "Your LinkedIn tips" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Flows/issues/13", + "submit": "Issue", + "title": "Your SWOT analysis" + }, + { + "category": "optional", + "src": "https://github.com/CodeYourFuture/Module-Data-Flows/issues/7", + "submit": "None", + "title": "Review your Development Plan" + }, + { + "category": "recurring", + "src": "https://github.com/CodeYourFuture/Module-Data-Flows/issues/37", + "submit": "None", + "title": "Mentored pair programming" + } + ], + "name": "Sprint 2" + }, + { + "backlog_tasks": [ + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Flows/issues/373", + "submit": "None", + "title": "Mandatory Sprint 3 Codewars Katas" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Flows/issues/26", + "submit": "None", + "title": "Play the Bandit" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Flows/issues/25", + "submit": "PR", + "title": "Programmer Humour" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Flows/issues/11", + "submit": "Issue", + "title": "Review your peers' LinkedIn profile" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Flows/issues/51", + "submit": "None", + "title": "Think about what to do next" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Flows/issues/478", + "submit": "None", + "title": "TV Show Project Level 400: Fetch much more data" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Data-Flows/issues/479", + "submit": "None", + "title": "TV Show Project Level 500: Build a front page" + }, + { + "category": "optional", + "src": "https://github.com/CodeYourFuture/Module-Data-Flows/issues/1", + "submit": "PR", + "title": "Codewars API Project" + }, + { + "category": "optional", + "src": "https://github.com/CodeYourFuture/Module-Data-Flows/issues/23", + "submit": "None", + "title": "Hammock Driven Development" + }, + { + "category": "optional", + "src": "https://github.com/CodeYourFuture/Module-Data-Flows/issues/21", + "submit": "PR", + "title": "JavaScript Challenges" + }, + { + "category": "optional", + "src": "https://github.com/CodeYourFuture/Module-Data-Flows/issues/480", + "submit": "None", + "title": "TV Show Project Level 999: Stretch" + }, + { + "category": "recurring", + "src": "https://github.com/CodeYourFuture/Module-Data-Flows/issues/323", + "submit": "None", + "title": "Give a demo in a demo session" + }, + { + "category": "recurring", + "src": "https://github.com/CodeYourFuture/Module-Data-Flows/issues/37", + "submit": "None", + "title": "Mentored pair programming" + } + ], + "name": "Sprint 3" + } + ] + } + ], + "name": "Intro to Programming" + }, + "sdc": { + "modules": [ + { + "name": "Tools", + "sprints": [ + { + "backlog_tasks": [ + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Tools/issues/4", + "submit": "PR", + "title": "Individual shell tools exercises" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Tools/issues/3", + "submit": "PR", + "title": "Number systems exercises" + } + ], + "name": "Sprint 1" + }, + { + "backlog_tasks": [ + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Tools/issues/6", + "submit": "PR", + "title": "jq exercises" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Tools/issues/12", + "submit": "None", + "title": "Prepare for programming language concepts discussion" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Tools/issues/5", + "submit": "PR", + "title": "Shell pipelines exercises" + } + ], + "name": "Sprint 2" + }, + { + "backlog_tasks": [ + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Tools/issues/8", + "submit": "PR", + "title": "Implement shell tools (cat, ls, wc) in JavaScript with NodeJS" + } + ], + "name": "Sprint 3" + }, + { + "backlog_tasks": [ + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Tools/issues/10", + "submit": "PR", + "title": "Implement cowsay in Python" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Tools/issues/9", + "submit": "PR", + "title": "Implement shell tools (cat, ls, wc) in Python" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Tools/issues/480", + "submit": "None", + "title": "Install a JDK" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Tools/issues/137", + "submit": "Slack", + "title": "Write a general CV" + } + ], + "name": "Sprint 4" + }, + { + "backlog_tasks": [ + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Tools/issues/178", + "submit": "PR", + "title": "Prep Exercises" + }, + { + "category": "optional", + "src": "https://github.com/CodeYourFuture/Module-Tools/issues/179", + "submit": "PR", + "title": "Implement laptop allocation" + } + ], + "name": "Sprint 5" + } + ] + }, + { + "name": "Logic", + "sprints": [ + { + "backlog_tasks": [ + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Logic/issues/2", + "submit": "None", + "title": "Prepare your lesson on logic" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Logic/issues/3", + "submit": "None", + "title": "Solve the 1000 Wine Bottle Problem" + } + ], + "name": "Sprint 1" + } + ] + }, + { + "name": "Decomposition", + "sprints": [ + { + "backlog_tasks": [ + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Decomposition/issues/1", + "submit": "Issue", + "title": "Deploy Quote Frontend and Backend" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Decomposition/issues/22", + "submit": "None", + "title": "Make sure you have your CV Personal Statement" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Decomposition/issues/5", + "submit": "None", + "title": "Read about User Journey Mapping" + } + ], + "name": "Sprint 1" + }, + { + "backlog_tasks": [ + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Decomposition/issues/2", + "submit": "PR", + "title": "Chat App" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Decomposition/issues/6", + "submit": "None", + "title": "Read about Feature Prioritisation" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Decomposition/issues/3", + "submit": "Issue", + "title": "Refine your Chat Application ticket" + } + ], + "name": "Sprint 2" + }, + { + "backlog_tasks": [ + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Decomposition/issues/4", + "submit": "PR", + "title": "Middleware exercises" + } + ], + "name": "Sprint 3" + } + ] + }, + { + "name": "Legacy code", + "sprints": [ + { + "backlog_tasks": [ + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Legacy-Code/issues/24", + "submit": "None", + "title": "Practice a mock Behavioural Interview" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Legacy-Code/issues/6", + "submit": "PR", + "title": "Purple Forest: Bug Report: Can't log in from profile page" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Legacy-Code/issues/4", + "submit": "PR", + "title": "Purple Forest: Bug Report: Extra long blooms?" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Legacy-Code/issues/5", + "submit": "PR", + "title": "Purple Forest: Bug Report: Hashtag link doesn't work correctly" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Legacy-Code/issues/3", + "submit": "PR", + "title": "Purple Forest: Bug Report: Hashtag slowing down my browser" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Legacy-Code/issues/9", + "submit": "PR", + "title": "Purple Forest: New Feature: Rebloom" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Legacy-Code/issues/8", + "submit": "PR", + "title": "Purple Forest: New Feature: Unfollow" + } + ], + "name": "Sprint 1" + } + ] + }, + { + "name": "Complexity", + "sprints": [ + { + "backlog_tasks": [ + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Complexity/issues/3", + "submit": "PR", + "title": "Analyse and Refactor Functions" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Complexity/issues/1", + "submit": "None", + "title": "Complete Space and Time Complexity in Data Structure and Algorithms" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Complexity/issues/25", + "submit": "None", + "title": "Practice a mock Technical Interview" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Complexity/issues/4", + "submit": "None", + "title": "Prepare your lesson on complexity" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Complexity/issues/6", + "submit": "None", + "title": "Read Chapter 8 of How Computers Really Work" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Complexity/issues/2", + "submit": "None", + "title": "Research Complexity using the Google DSA path" + }, + { + "category": "optional", + "src": "https://github.com/CodeYourFuture/Module-Complexity/issues/5", + "submit": "None", + "title": "Codewars Fibonacci Series" + } + ], + "name": "Sprint 1" + }, + { + "backlog_tasks": [ + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Complexity/issues/9", + "submit": "PR", + "title": "Implement a linked list in Python" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Complexity/issues/10", + "submit": "PR", + "title": "Implement an LRU cache in Python" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Complexity/issues/11", + "submit": "PR", + "title": "Improve code with caches" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Complexity/issues/12", + "submit": "PR", + "title": "Improve code with precomputing" + }, + { + "category": "mandatory", + "src": "https://github.com/CodeYourFuture/Module-Complexity/issues/7", + "submit": "None", + "title": "Read about Acceptance Criteria" + }, + { + "category": "optional", + "src": "https://github.com/CodeYourFuture/Module-Complexity/issues/13", + "submit": "PR", + "title": "Implement a Skip List" + } + ], + "name": "Sprint 2" + } + ] + } + ], + "name": "Software Development" + } + } +} \ No newline at end of file From 8f00079f02d0aea29da77fe9e9ad0aed6d8102d1 Mon Sep 17 00:00:00 2001 From: Colin Farquhar Date: Thu, 7 May 2026 14:53:27 +0100 Subject: [PATCH 2/9] replace API call for issue list with filtering JSON - module/sprint hard-coded --- common-theme/layouts/_default/backlog.html | 11 ++- .../layouts/partials/block/backlog-issue.html | 2 +- .../layouts/partials/block/block.html | 2 +- .../partials/block/issues-list-as-blocks.html | 76 +++---------------- 4 files changed, 16 insertions(+), 75 deletions(-) diff --git a/common-theme/layouts/_default/backlog.html b/common-theme/layouts/_default/backlog.html index 2c7d02876..714311b0c 100644 --- a/common-theme/layouts/_default/backlog.html +++ b/common-theme/layouts/_default/backlog.html @@ -34,19 +34,18 @@ */}} {{ range $repos }} {{ $issueBlocks := partial "block/issues-list-as-blocks.html" (dict "backlog" . "backlog_filter" $backlog_filter "path" $currentPath) }} + {{ $issueBlocks = (index $issueBlocks 0).backlog_tasks }} {{ range $issueBlocks }} {{ $issue := . }} - {{ range .labels.nodes }} - {{if in .name "Recurring"}} + {{if eq .category "recurring"}} {{ $recurringTasks = $recurringTasks | append $issue }} - {{else if in .name "Setup"}} + {{else if eq .category "setup"}} {{ $setupTasks = $setupTasks | append $issue }} - {{else if in .name "Core"}} + {{else if eq .category "mandatory"}} {{ $mandatoryTasks = $mandatoryTasks | append $issue }} - {{else if in .name "Optional"}} + {{else if eq .category "optional"}} {{ $optionalTasks = $optionalTasks | append $issue }} {{ end }} - {{ end }} {{ end }} {{ end }} {{ $page.Scratch.Set "backlog-tasks" (dict "setup" $setupTasks "recurring" $recurringTasks "mandatory" $mandatoryTasks "optional" $optionalTasks) }} diff --git a/common-theme/layouts/partials/block/backlog-issue.html b/common-theme/layouts/partials/block/backlog-issue.html index 463e87c29..e4b012b61 100644 --- a/common-theme/layouts/partials/block/backlog-issue.html +++ b/common-theme/layouts/partials/block/backlog-issue.html @@ -1,6 +1,6 @@
- {{ .block.name }} + {{ .block.title }} 🔗 -{{ $query := `query($owner: String!, $repo: String!, $labels: [String!]) { - repository(owner: $owner, name: $repo) { - issues( - last: 100, - filterBy: { - states: OPEN, - labels: $labels - } - ) { - nodes { - title - url - number - labels( - first: 50 - orderBy: { - direction: DESC - field: NAME - } - ) { - nodes { - name - color - description - } - } - } - } - } -}` }} +{{ $issuesForModule := index (where site.Data.backlog.courses.itp.modules "name" "Onboarding") 0}} +{{ $issuesForSprint := where $issuesForModule.sprints "name" "Sprint 1" }} -{{ $request := dict - "method" "POST" - "body" (dict "query" $query "variables" $variables | jsonify) -}} -{{ $issueBlocks := slice }} -{{ with resources.GetRemote "https://api.github.com/graphql" (merge $request (partial "github-auth.html" .)) }} - {{ with .Content | unmarshal }} - {{ if not .data.repository }} - {{ errorf "GitHub repository %s/%s referenced on %s had no issues" site.Params.owner (index $variables "repo") $currentPath }} - {{ else }} - {{ with .data.repository.issues.nodes }} - {{ range sort . "title" "asc" }} - {{ $issueBlocks = $issueBlocks | append (dict "name" .title "src" .url "number" .number "labels" .labels "repo" $repo) }} - {{ end }} - {{ end }} - {{ end }} - {{ end }} -{{ end }} -{{ return $issueBlocks }} +{{ return $issuesForSprint }} From 7bfcf6380f5800776c224146a5aa3c9d0e6a38c3 Mon Sep 17 00:00:00 2001 From: Colin Farquhar Date: Fri, 8 May 2026 09:17:33 +0100 Subject: [PATCH 3/9] load module/sprint issues dynamically --- .../layouts/partials/block/issues-list-as-blocks.html | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/common-theme/layouts/partials/block/issues-list-as-blocks.html b/common-theme/layouts/partials/block/issues-list-as-blocks.html index f2b001fdb..c12fc0b62 100644 --- a/common-theme/layouts/partials/block/issues-list-as-blocks.html +++ b/common-theme/layouts/partials/block/issues-list-as-blocks.html @@ -5,7 +5,8 @@ - $IssuesForSprint filters those issues by sprint label */}} -{{ $issuesForModule := index (where site.Data.backlog.courses.itp.modules "name" "Onboarding") 0}} -{{ $issuesForSprint := where $issuesForModule.sprints "name" "Sprint 1" }} + +{{ $issuesForModule := index (where site.Data.backlog.courses.itp.modules "name" .backlog) 0}} +{{ $issuesForSprint := where $issuesForModule.sprints "name" .backlog_filter }} {{ return $issuesForSprint }} From 86383307fb9836708b59e6bcd9bb5248444824d2 Mon Sep 17 00:00:00 2001 From: Colin Farquhar Date: Fri, 8 May 2026 09:32:24 +0100 Subject: [PATCH 4/9] update labelling of ITP backlogs --- org-cyf/content/itp/data-flows/sprints/1/backlog/index.md | 4 ++-- org-cyf/content/itp/data-flows/sprints/2/backlog/index.md | 4 ++-- org-cyf/content/itp/data-flows/sprints/3/backlog/index.md | 4 ++-- org-cyf/content/itp/data-groups/sprints/1/backlog/index.md | 4 ++-- org-cyf/content/itp/data-groups/sprints/2/backlog/index.md | 4 ++-- org-cyf/content/itp/data-groups/sprints/3/backlog/index.md | 4 ++-- org-cyf/content/itp/onboarding/sprints/1/backlog/index.md | 4 ++-- org-cyf/content/itp/onboarding/sprints/2/backlog/index.md | 4 ++-- org-cyf/content/itp/onboarding/sprints/3/backlog/index.md | 4 ++-- .../content/itp/structuring-data/sprints/1/backlog/index.md | 4 ++-- .../content/itp/structuring-data/sprints/2/backlog/index.md | 4 ++-- .../content/itp/structuring-data/sprints/3/backlog/index.md | 4 ++-- 12 files changed, 24 insertions(+), 24 deletions(-) diff --git a/org-cyf/content/itp/data-flows/sprints/1/backlog/index.md b/org-cyf/content/itp/data-flows/sprints/1/backlog/index.md index 7f7eaa49f..7dab2ae21 100644 --- a/org-cyf/content/itp/data-flows/sprints/1/backlog/index.md +++ b/org-cyf/content/itp/data-flows/sprints/1/backlog/index.md @@ -3,6 +3,6 @@ title = 'backlog' layout = 'backlog' menu_level = ['sprint'] weight = 2 -backlog= ['Module-Data-Flows', 'Project-TV-Show'] -backlog_filter='📅 Sprint 1' +backlog= ['Data flows'] +backlog_filter='Sprint 1' +++ diff --git a/org-cyf/content/itp/data-flows/sprints/2/backlog/index.md b/org-cyf/content/itp/data-flows/sprints/2/backlog/index.md index ec08f58b9..9e818e795 100644 --- a/org-cyf/content/itp/data-flows/sprints/2/backlog/index.md +++ b/org-cyf/content/itp/data-flows/sprints/2/backlog/index.md @@ -3,6 +3,6 @@ title = 'backlog' layout = 'backlog' menu_level = ['sprint'] weight = 2 -backlog= ['Module-Data-Flows', 'Project-TV-Show'] -backlog_filter='📅 Sprint 2' +backlog= ['Data flows'] +backlog_filter='Sprint 2' +++ diff --git a/org-cyf/content/itp/data-flows/sprints/3/backlog/index.md b/org-cyf/content/itp/data-flows/sprints/3/backlog/index.md index af19f11f3..16ee069e8 100644 --- a/org-cyf/content/itp/data-flows/sprints/3/backlog/index.md +++ b/org-cyf/content/itp/data-flows/sprints/3/backlog/index.md @@ -3,6 +3,6 @@ title = 'backlog' layout = 'backlog' menu_level = ['sprint'] weight = 2 -backlog= ['Module-Data-Flows', 'Project-TV-Show'] -backlog_filter='📅 Sprint 3' +backlog= ['Data flows'] +backlog_filter='Sprint 3' +++ diff --git a/org-cyf/content/itp/data-groups/sprints/1/backlog/index.md b/org-cyf/content/itp/data-groups/sprints/1/backlog/index.md index 37062dbb8..d2a852340 100644 --- a/org-cyf/content/itp/data-groups/sprints/1/backlog/index.md +++ b/org-cyf/content/itp/data-groups/sprints/1/backlog/index.md @@ -3,6 +3,6 @@ title = 'backlog' layout = 'backlog' menu_level = ['sprint'] weight = 2 -backlog= 'Module-Data-Groups' -backlog_filter='📅 Sprint 1' +backlog= 'Data groups' +backlog_filter='Sprint 1' +++ diff --git a/org-cyf/content/itp/data-groups/sprints/2/backlog/index.md b/org-cyf/content/itp/data-groups/sprints/2/backlog/index.md index 05fcfd811..cb2efbd45 100644 --- a/org-cyf/content/itp/data-groups/sprints/2/backlog/index.md +++ b/org-cyf/content/itp/data-groups/sprints/2/backlog/index.md @@ -3,6 +3,6 @@ title = 'backlog' layout = 'backlog' menu_level = ['sprint'] weight = 2 -backlog= 'Module-Data-Groups' -backlog_filter='📅 Sprint 2' +backlog= 'Data groups' +backlog_filter='Sprint 2' +++ diff --git a/org-cyf/content/itp/data-groups/sprints/3/backlog/index.md b/org-cyf/content/itp/data-groups/sprints/3/backlog/index.md index 440638078..7d2aafc44 100644 --- a/org-cyf/content/itp/data-groups/sprints/3/backlog/index.md +++ b/org-cyf/content/itp/data-groups/sprints/3/backlog/index.md @@ -3,6 +3,6 @@ title = 'backlog' layout = 'backlog' menu_level = ['sprint'] weight = 2 -backlog= 'Module-Data-Groups' -backlog_filter='📅 Sprint 3' +backlog= 'Data groups' +backlog_filter='Sprint 3' +++ diff --git a/org-cyf/content/itp/onboarding/sprints/1/backlog/index.md b/org-cyf/content/itp/onboarding/sprints/1/backlog/index.md index 1d942828b..200e5de48 100644 --- a/org-cyf/content/itp/onboarding/sprints/1/backlog/index.md +++ b/org-cyf/content/itp/onboarding/sprints/1/backlog/index.md @@ -3,6 +3,6 @@ title = 'Backlog' layout = 'backlog' menu_level = ['sprint'] weight = 2 -backlog= 'Module-Onboarding' -backlog_filter='📅 Sprint 1' +backlog= 'Onboarding' +backlog_filter='Sprint 1' +++ diff --git a/org-cyf/content/itp/onboarding/sprints/2/backlog/index.md b/org-cyf/content/itp/onboarding/sprints/2/backlog/index.md index e3fb8efd9..9bd0ffa2b 100644 --- a/org-cyf/content/itp/onboarding/sprints/2/backlog/index.md +++ b/org-cyf/content/itp/onboarding/sprints/2/backlog/index.md @@ -3,6 +3,6 @@ title = 'backlog' layout = 'backlog' menu_level = ['sprint'] weight = 2 -backlog= 'Module-Onboarding' -backlog_filter='📅 Sprint 2' +backlog= 'Onboarding' +backlog_filter='Sprint 2' +++ diff --git a/org-cyf/content/itp/onboarding/sprints/3/backlog/index.md b/org-cyf/content/itp/onboarding/sprints/3/backlog/index.md index 797546ec6..4165dc3ca 100644 --- a/org-cyf/content/itp/onboarding/sprints/3/backlog/index.md +++ b/org-cyf/content/itp/onboarding/sprints/3/backlog/index.md @@ -3,6 +3,6 @@ title = 'backlog' layout = 'backlog' menu_level = ['sprint'] weight = 2 -backlog= 'Module-Onboarding' -backlog_filter='📅 Sprint 3' +backlog= 'Onboarding' +backlog_filter='Sprint 3' +++ diff --git a/org-cyf/content/itp/structuring-data/sprints/1/backlog/index.md b/org-cyf/content/itp/structuring-data/sprints/1/backlog/index.md index 2cf6532b8..5fcbd590b 100644 --- a/org-cyf/content/itp/structuring-data/sprints/1/backlog/index.md +++ b/org-cyf/content/itp/structuring-data/sprints/1/backlog/index.md @@ -3,6 +3,6 @@ title = 'backlog' layout = 'backlog' menu_level = ['sprint'] weight = 2 -backlog= 'Module-Structuring-and-Testing-Data' -backlog_filter='📅 Sprint 1' +backlog= 'Structuring and testing data' +backlog_filter='Sprint 1' +++ diff --git a/org-cyf/content/itp/structuring-data/sprints/2/backlog/index.md b/org-cyf/content/itp/structuring-data/sprints/2/backlog/index.md index 84784424b..d6d700e55 100644 --- a/org-cyf/content/itp/structuring-data/sprints/2/backlog/index.md +++ b/org-cyf/content/itp/structuring-data/sprints/2/backlog/index.md @@ -3,6 +3,6 @@ title = 'backlog' layout = 'backlog' menu_level = ['sprint'] weight = 2 -backlog= 'Module-Structuring-and-Testing-Data' -backlog_filter='📅 Sprint 2' +backlog= 'Structuring and testing data' +backlog_filter='Sprint 2' +++ diff --git a/org-cyf/content/itp/structuring-data/sprints/3/backlog/index.md b/org-cyf/content/itp/structuring-data/sprints/3/backlog/index.md index ef3a93f75..4f2b9f259 100644 --- a/org-cyf/content/itp/structuring-data/sprints/3/backlog/index.md +++ b/org-cyf/content/itp/structuring-data/sprints/3/backlog/index.md @@ -3,6 +3,6 @@ title = 'backlog' layout = 'backlog' menu_level = ['sprint'] weight = 2 -backlog= 'Module-Structuring-and-Testing-Data' -backlog_filter='📅 Sprint 3' +backlog= 'Structuring and testing data' +backlog_filter='Sprint 3' +++ From 326c8497a7eeb1ced4b0db7d80aaf47e0d8d979c Mon Sep 17 00:00:00 2001 From: Colin Farquhar Date: Fri, 8 May 2026 09:34:19 +0100 Subject: [PATCH 5/9] remove TV show project - issues now included in data flows backlog --- .../content/itp/data-flows/project/_index.md | 6 ------ .../itp/data-flows/project/backlog/_index.md | 7 ------- .../project/backlog/backlog-1/index.md | 8 -------- .../project/backlog/backlog-2/index.md | 8 -------- .../project/backlog/backlog-3/index.md | 8 -------- .../itp/data-flows/project/prep/index.md | 13 ------------- .../itp/data-flows/project/success/index.md | 17 ----------------- 7 files changed, 67 deletions(-) delete mode 100644 org-cyf/content/itp/data-flows/project/_index.md delete mode 100644 org-cyf/content/itp/data-flows/project/backlog/_index.md delete mode 100644 org-cyf/content/itp/data-flows/project/backlog/backlog-1/index.md delete mode 100644 org-cyf/content/itp/data-flows/project/backlog/backlog-2/index.md delete mode 100644 org-cyf/content/itp/data-flows/project/backlog/backlog-3/index.md delete mode 100644 org-cyf/content/itp/data-flows/project/prep/index.md delete mode 100644 org-cyf/content/itp/data-flows/project/success/index.md diff --git a/org-cyf/content/itp/data-flows/project/_index.md b/org-cyf/content/itp/data-flows/project/_index.md deleted file mode 100644 index 8bb09098c..000000000 --- a/org-cyf/content/itp/data-flows/project/_index.md +++ /dev/null @@ -1,6 +0,0 @@ -+++ -title = 'Product' -description = 'The CYF TV Show Project: build a show browsing site in an asynchronous pair' -layout = 'product' -menu_level = ['module'] -+++ diff --git a/org-cyf/content/itp/data-flows/project/backlog/_index.md b/org-cyf/content/itp/data-flows/project/backlog/_index.md deleted file mode 100644 index 7736bc106..000000000 --- a/org-cyf/content/itp/data-flows/project/backlog/_index.md +++ /dev/null @@ -1,7 +0,0 @@ -+++ -title = 'Backlog' -description = 'All the features that we want to implement in this project' -layout = 'subdir' -menu_level = ['product'] -weight=2 -+++ diff --git a/org-cyf/content/itp/data-flows/project/backlog/backlog-1/index.md b/org-cyf/content/itp/data-flows/project/backlog/backlog-1/index.md deleted file mode 100644 index 952e28ca0..000000000 --- a/org-cyf/content/itp/data-flows/project/backlog/backlog-1/index.md +++ /dev/null @@ -1,8 +0,0 @@ -+++ -title = 'backlog for sprint 1' -layout = 'backlog' -menu_level = ['subdir'] -weight = 1 -backlog= 'Project-TV-Show' -backlog_filter= '📅 Sprint 1' -+++ diff --git a/org-cyf/content/itp/data-flows/project/backlog/backlog-2/index.md b/org-cyf/content/itp/data-flows/project/backlog/backlog-2/index.md deleted file mode 100644 index 6cefbf220..000000000 --- a/org-cyf/content/itp/data-flows/project/backlog/backlog-2/index.md +++ /dev/null @@ -1,8 +0,0 @@ -+++ -title = 'backlog for sprint 2' -layout = 'backlog' -menu_level = ['subdir'] -weight = 2 -backlog= 'Project-TV-Show' -backlog_filter= '📅 Sprint 2' -+++ diff --git a/org-cyf/content/itp/data-flows/project/backlog/backlog-3/index.md b/org-cyf/content/itp/data-flows/project/backlog/backlog-3/index.md deleted file mode 100644 index d7b96a498..000000000 --- a/org-cyf/content/itp/data-flows/project/backlog/backlog-3/index.md +++ /dev/null @@ -1,8 +0,0 @@ -+++ -title = 'backlog for sprint 3' -layout = 'backlog' -menu_level = ['subdir'] -weight = 3 -backlog= 'Project-TV-Show' -backlog_filter= '📅 Sprint 3' -+++ diff --git a/org-cyf/content/itp/data-flows/project/prep/index.md b/org-cyf/content/itp/data-flows/project/prep/index.md deleted file mode 100644 index d67c89994..000000000 --- a/org-cyf/content/itp/data-flows/project/prep/index.md +++ /dev/null @@ -1,13 +0,0 @@ -+++ -title = 'Prep' -description = 'How will you approach this project?' -layout = 'prep' -menu_level = ['product'] -weight = 1 -[[blocks]] -name="Planning and organising your project" -src="https://github.com/CodeYourFuture/Project-TV-Show/readme" -[[blocks]] -name="Setting up" -src="https://github.com/CodeYourFuture/Project-TV-Show/issues/4" -+++ diff --git a/org-cyf/content/itp/data-flows/project/success/index.md b/org-cyf/content/itp/data-flows/project/success/index.md deleted file mode 100644 index ca2d31b9e..000000000 --- a/org-cyf/content/itp/data-flows/project/success/index.md +++ /dev/null @@ -1,17 +0,0 @@ -+++ -title = "Success" -description = "How do we know if our product is a success?" -layout = "success" -menu_level = [ "product" ] -weight = 11 -[[objectives]] -1= "Your product is deployed on a public URL" -2= "You have delivered features every sprint" -3="Your features meet the acceptance criteria" -4="At least one other person has contributed to the project" -5="It works" -+++ - -{{}} -You have to build it together, it has to work, and you have to show us. -{{}} From b221dbf1bd67caf313a51262d7c3be7a309d5de2 Mon Sep 17 00:00:00 2001 From: Colin Farquhar Date: Fri, 8 May 2026 10:27:08 +0100 Subject: [PATCH 6/9] load issues for course dynamically --- .../layouts/partials/block/issues-list-as-blocks.html | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/common-theme/layouts/partials/block/issues-list-as-blocks.html b/common-theme/layouts/partials/block/issues-list-as-blocks.html index c12fc0b62..a6a0a780e 100644 --- a/common-theme/layouts/partials/block/issues-list-as-blocks.html +++ b/common-theme/layouts/partials/block/issues-list-as-blocks.html @@ -1,12 +1,18 @@ {{/* Loading backlog issues from static JSON + - $courseRegex matches the course name from the url. + - $courseName strips the leading/trailing / characters TODO: This could probably be avoided with a better regex - $issuesForModule filters by module name and returns the first element from the resulting array. - $IssuesForSprint filters those issues by sprint label */}} -{{ $issuesForModule := index (where site.Data.backlog.courses.itp.modules "name" .backlog) 0}} +{{ $courseRegex := `/(.*?)/` }} +{{ $courseName := (trim (index (findRE $courseRegex .path 1) 0) "/") }} + +{{ $courseIssues := index site.Data.backlog.courses $courseName}} +{{ $issuesForModule := index (where $courseIssues.modules "name" .backlog) 0}} {{ $issuesForSprint := where $issuesForModule.sprints "name" .backlog_filter }} {{ return $issuesForSprint }} From 799a3421997890da2ab1b67a0ccb94783c529f2c Mon Sep 17 00:00:00 2001 From: Colin Farquhar Date: Fri, 8 May 2026 11:40:26 +0100 Subject: [PATCH 7/9] update labelling of sdc backlogs --- org-cyf/content/sdc/complexity/sprints/1/backlog/index.md | 4 ++-- org-cyf/content/sdc/complexity/sprints/2/backlog/index.md | 4 ++-- org-cyf/content/sdc/decomposition/sprints/1/backlog/index.md | 4 ++-- org-cyf/content/sdc/decomposition/sprints/2/backlog/index.md | 4 ++-- org-cyf/content/sdc/decomposition/sprints/3/backlog/index.md | 4 ++-- org-cyf/content/sdc/legacy/sprints/1/backlog/index.md | 4 ++-- org-cyf/content/sdc/logic/sprints/1/backlog/index.md | 3 ++- org-cyf/content/sdc/tools/sprints/1/backlog/index.md | 4 ++-- org-cyf/content/sdc/tools/sprints/2/backlog/index.md | 4 ++-- org-cyf/content/sdc/tools/sprints/3/backlog/index.md | 4 ++-- org-cyf/content/sdc/tools/sprints/4/backlog/index.md | 4 ++-- org-cyf/content/sdc/tools/sprints/5/backlog/index.md | 4 ++-- 12 files changed, 24 insertions(+), 23 deletions(-) diff --git a/org-cyf/content/sdc/complexity/sprints/1/backlog/index.md b/org-cyf/content/sdc/complexity/sprints/1/backlog/index.md index 67573da2d..fda6758db 100644 --- a/org-cyf/content/sdc/complexity/sprints/1/backlog/index.md +++ b/org-cyf/content/sdc/complexity/sprints/1/backlog/index.md @@ -3,6 +3,6 @@ title = "Backlog" layout = "backlog" menu_level = ["sprint"] weight = 2 -backlog = "Module-Complexity" -backlog_filter = "📅 Sprint 1" +backlog = "Complexity" +backlog_filter = "Sprint 1" +++ diff --git a/org-cyf/content/sdc/complexity/sprints/2/backlog/index.md b/org-cyf/content/sdc/complexity/sprints/2/backlog/index.md index 19b33c6b7..07afe2473 100644 --- a/org-cyf/content/sdc/complexity/sprints/2/backlog/index.md +++ b/org-cyf/content/sdc/complexity/sprints/2/backlog/index.md @@ -3,6 +3,6 @@ title = "Backlog" layout = "backlog" menu_level = ["sprint"] weight = 2 -backlog = "Module-Complexity" -backlog_filter = "📅 Sprint 2" +backlog = "Complexity" +backlog_filter = "Sprint 2" +++ diff --git a/org-cyf/content/sdc/decomposition/sprints/1/backlog/index.md b/org-cyf/content/sdc/decomposition/sprints/1/backlog/index.md index 8a483dbd7..14c37f5e5 100644 --- a/org-cyf/content/sdc/decomposition/sprints/1/backlog/index.md +++ b/org-cyf/content/sdc/decomposition/sprints/1/backlog/index.md @@ -3,6 +3,6 @@ title = "Backlog" layout = "backlog" menu_level = ["sprint"] weight = 2 -backlog = "Module-Decomposition" -backlog_filter = "📅 Sprint 1" +backlog = "Decomposition" +backlog_filter = "Sprint 1" +++ diff --git a/org-cyf/content/sdc/decomposition/sprints/2/backlog/index.md b/org-cyf/content/sdc/decomposition/sprints/2/backlog/index.md index 5feda6d45..6567dc108 100644 --- a/org-cyf/content/sdc/decomposition/sprints/2/backlog/index.md +++ b/org-cyf/content/sdc/decomposition/sprints/2/backlog/index.md @@ -3,6 +3,6 @@ title = "Backlog" layout = "backlog" menu_level = ["sprint"] weight = 2 -backlog = "Module-Decomposition" -backlog_filter = "📅 Sprint 2" +backlog = "Decomposition" +backlog_filter = "Sprint 2" +++ diff --git a/org-cyf/content/sdc/decomposition/sprints/3/backlog/index.md b/org-cyf/content/sdc/decomposition/sprints/3/backlog/index.md index 7efbfd615..631dd2cdd 100644 --- a/org-cyf/content/sdc/decomposition/sprints/3/backlog/index.md +++ b/org-cyf/content/sdc/decomposition/sprints/3/backlog/index.md @@ -3,6 +3,6 @@ title = "Backlog" layout = "backlog" menu_level = ["sprint"] weight = 2 -backlog = "Module-Decomposition" -backlog_filter = "📅 Sprint 3" +backlog = "Decomposition" +backlog_filter = "Sprint 3" +++ diff --git a/org-cyf/content/sdc/legacy/sprints/1/backlog/index.md b/org-cyf/content/sdc/legacy/sprints/1/backlog/index.md index 082d6d150..ca6cbcd1a 100644 --- a/org-cyf/content/sdc/legacy/sprints/1/backlog/index.md +++ b/org-cyf/content/sdc/legacy/sprints/1/backlog/index.md @@ -3,6 +3,6 @@ title = "Backlog" layout = "backlog" menu_level = ["sprint"] weight = 2 -backlog = "Module-Legacy-Code" -backlog_filter = "📅 Sprint 1" +backlog = "Legacy code" +backlog_filter = "Sprint 1" +++ diff --git a/org-cyf/content/sdc/logic/sprints/1/backlog/index.md b/org-cyf/content/sdc/logic/sprints/1/backlog/index.md index 663c16815..2f6c6aec1 100644 --- a/org-cyf/content/sdc/logic/sprints/1/backlog/index.md +++ b/org-cyf/content/sdc/logic/sprints/1/backlog/index.md @@ -3,5 +3,6 @@ title = "Backlog" layout = "backlog" menu_level = ["sprint"] weight = 2 -backlog = "Module-Logic" +backlog = "Logic" +backlog_filter = "Sprint 1" +++ diff --git a/org-cyf/content/sdc/tools/sprints/1/backlog/index.md b/org-cyf/content/sdc/tools/sprints/1/backlog/index.md index abb503586..6852c24d0 100644 --- a/org-cyf/content/sdc/tools/sprints/1/backlog/index.md +++ b/org-cyf/content/sdc/tools/sprints/1/backlog/index.md @@ -3,6 +3,6 @@ title = "Backlog" layout = "backlog" menu_level = ["sprint"] weight = 2 -backlog = "Module-Tools" -backlog_filter = "📅 Sprint 1" +backlog = "Tools" +backlog_filter = "Sprint 1" +++ diff --git a/org-cyf/content/sdc/tools/sprints/2/backlog/index.md b/org-cyf/content/sdc/tools/sprints/2/backlog/index.md index cc1821890..e15b939a1 100644 --- a/org-cyf/content/sdc/tools/sprints/2/backlog/index.md +++ b/org-cyf/content/sdc/tools/sprints/2/backlog/index.md @@ -3,6 +3,6 @@ title = "Backlog" layout = "backlog" menu_level = ["sprint"] weight = 2 -backlog = "Module-Tools" -backlog_filter = "📅 Sprint 2" +backlog = "Tools" +backlog_filter = "Sprint 2" +++ diff --git a/org-cyf/content/sdc/tools/sprints/3/backlog/index.md b/org-cyf/content/sdc/tools/sprints/3/backlog/index.md index 29c798c2b..759be6c62 100644 --- a/org-cyf/content/sdc/tools/sprints/3/backlog/index.md +++ b/org-cyf/content/sdc/tools/sprints/3/backlog/index.md @@ -3,6 +3,6 @@ title = "Backlog" layout = "backlog" menu_level = ["sprint"] weight = 2 -backlog = "Module-Tools" -backlog_filter = "📅 Sprint 3" +backlog = "Tools" +backlog_filter = "Sprint 3" +++ diff --git a/org-cyf/content/sdc/tools/sprints/4/backlog/index.md b/org-cyf/content/sdc/tools/sprints/4/backlog/index.md index fa2a046e5..66bd343c2 100644 --- a/org-cyf/content/sdc/tools/sprints/4/backlog/index.md +++ b/org-cyf/content/sdc/tools/sprints/4/backlog/index.md @@ -3,6 +3,6 @@ title = "Backlog" layout = "backlog" menu_level = ["sprint"] weight = 2 -backlog = "Module-Tools" -backlog_filter = "📅 Sprint 4" +backlog = "Tools" +backlog_filter = "Sprint 4" +++ diff --git a/org-cyf/content/sdc/tools/sprints/5/backlog/index.md b/org-cyf/content/sdc/tools/sprints/5/backlog/index.md index a58874fd0..578a0184c 100644 --- a/org-cyf/content/sdc/tools/sprints/5/backlog/index.md +++ b/org-cyf/content/sdc/tools/sprints/5/backlog/index.md @@ -3,6 +3,6 @@ title = "Backlog" layout = "backlog" menu_level = ["sprint"] weight = 2 -backlog = "Module-Tools" -backlog_filter = "📅 Sprint 5" +backlog = "Tools" +backlog_filter = "Sprint 5" +++ From bf75b65cc466e121e8be7e584e1012a7822096c5 Mon Sep 17 00:00:00 2001 From: Colin Farquhar Date: Fri, 8 May 2026 15:57:00 +0100 Subject: [PATCH 8/9] pull issues out of array where they're loaded instead of where they're used --- common-theme/layouts/_default/backlog.html | 1 - common-theme/layouts/partials/block/issues-list-as-blocks.html | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/common-theme/layouts/_default/backlog.html b/common-theme/layouts/_default/backlog.html index 714311b0c..230b966d3 100644 --- a/common-theme/layouts/_default/backlog.html +++ b/common-theme/layouts/_default/backlog.html @@ -34,7 +34,6 @@ */}} {{ range $repos }} {{ $issueBlocks := partial "block/issues-list-as-blocks.html" (dict "backlog" . "backlog_filter" $backlog_filter "path" $currentPath) }} - {{ $issueBlocks = (index $issueBlocks 0).backlog_tasks }} {{ range $issueBlocks }} {{ $issue := . }} {{if eq .category "recurring"}} diff --git a/common-theme/layouts/partials/block/issues-list-as-blocks.html b/common-theme/layouts/partials/block/issues-list-as-blocks.html index a6a0a780e..f111f9a54 100644 --- a/common-theme/layouts/partials/block/issues-list-as-blocks.html +++ b/common-theme/layouts/partials/block/issues-list-as-blocks.html @@ -15,4 +15,4 @@ {{ $issuesForModule := index (where $courseIssues.modules "name" .backlog) 0}} {{ $issuesForSprint := where $issuesForModule.sprints "name" .backlog_filter }} -{{ return $issuesForSprint }} +{{ return (index $issuesForSprint 0).backlog_tasks }} From 56c9c25e87a73b4c6bb01466153c9a7991a12293 Mon Sep 17 00:00:00 2001 From: Colin Farquhar Date: Fri, 8 May 2026 15:58:02 +0100 Subject: [PATCH 9/9] modify success page to show backlog names; breaks workshop names --- common-theme/layouts/_default/success.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common-theme/layouts/_default/success.html b/common-theme/layouts/_default/success.html index 5627595fa..c8bb5f723 100644 --- a/common-theme/layouts/_default/success.html +++ b/common-theme/layouts/_default/success.html @@ -79,7 +79,7 @@