diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
index b34cfcfc3..ea03447fe 100644
--- a/.github/FUNDING.yml
+++ b/.github/FUNDING.yml
@@ -1,13 +1,2 @@
-# These are supported funding model platforms
-
github: CodeYourFuture
-patreon: # Replace with a single Patreon username
-open_collective: # Replace with a single Open Collective username
-ko_fi: # Replace with a single Ko-fi username
-tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
-community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
-liberapay: # Replace with a single Liberapay username
-issuehunt: # Replace with a single IssueHunt username
-otechie: # Replace with a single Otechie username
-lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
custom: https://codeyourfuture.io/donate
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
deleted file mode 100644
index 5fe8ffd09..000000000
--- a/.github/ISSUE_TEMPLATE/config.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-blank_issues_enabled: false
-contact_links:
- - name: CYF
- url: contact@codeyourfuture.io
- about: Please report serious issues here.
- - name: Join CYF
- url: https://codeyourfuture.io/volunteers/
- about: Join CYF here
- - name: CYF Slack
- url: codeyourfuture.slack.com
- about: Come to #cyf-syllabus-tech and chat
- - name: CYF Tech Ed
- url: https://github.com/orgs/CodeYourFuture/teams/mentors
- about: CYF mentors on Github
diff --git a/.github/ISSUE_TEMPLATE/pd-assignment.yml b/.github/ISSUE_TEMPLATE/pd-assignment.yml
deleted file mode 100644
index c8bd22980..000000000
--- a/.github/ISSUE_TEMPLATE/pd-assignment.yml
+++ /dev/null
@@ -1,59 +0,0 @@
-name: PD Coursework
-description: Assign a piece of PD coursework
-title: "[PD]
"
-labels: [PD, π Priority Stretch, π Size Small]
-body:
- - type: markdown
- attributes:
- value: |
- Thanks for taking the time to assign this coursework!
- - type: input
- attributes:
- label: Coursework content
- validations:
- required: true
- - type: input
- attributes:
- label: Estimated time in hours
- description: (PD has max 4 per week total)
- validations:
- required: true
- - type: textarea
- attributes:
- label: What is the purpose of this assignment?
- description: Clearly explain the purpose of this assignment and how trainees can evaluate this.
- validations:
- required: true
- - type: textarea
- attributes:
- label: How to submit
- description: State in clear steps how a trainee can submit this assignment.
- placeholder: |
- Copy the Google doc to your own Google Drive
- Complete the work assigned
- When you are ready, move your document to your class Drive
- validations:
- required: true
- - type: textarea
- attributes:
- label: Anything else?
- description: |
- Links? References? Anything that will give more context
-
- Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in.
- - type: markdown
- attributes:
- value: |
- **Thank you so much.**
-
- Please now complete this ticket by filling in the options on the sidebar.
-
- 1. Update labels
- - priority -- is this coursework key, mandatory, or stretch?
- - size -- help trainees plan their time with rough estimation
- 2. Add to project backlog
- - add to the project named the same as this repo
- - fill in custom fields -- priority, size, hours, week -- to match this issue
-
- Once your ticket is complete, you may like to check it out on the example project board attached to this repo.
- This is so you understand how trainees will use your work.
diff --git a/.github/ISSUE_TEMPLATE/tech-ed-assignment.yml b/.github/ISSUE_TEMPLATE/tech-ed-assignment.yml
deleted file mode 100644
index ac9da906a..000000000
--- a/.github/ISSUE_TEMPLATE/tech-ed-assignment.yml
+++ /dev/null
@@ -1,88 +0,0 @@
-name: Tech Ed Coursework
-description: Assign a piece of technical coursework
-title: ""
-labels: [Tech Ed, π Priority Mandatory, π Size Medium, π Module 1]
-body:
- - type: markdown
- attributes:
- value: |
- Thanks for taking the time to assign this coursework!
-
- To support our trainees with planning and prioritising their own learning journey, we want our coursework assignments to be more informative.
- We don't just want to tell them what to do, we want to tell them stuff like:
- - why we are doing it
- - what it's "for" (problem-solving, debugging, etc)
- - how long they should spend on it, maximum
- - how to get help
- - how to review it with answers
- - how to get it reviewed from mentors and peers
- - type: input
- attributes:
- label: Link to the coursework
- validations:
- required: true
- - type : textarea
- attributes:
- label: Learning Objectives
- description: https://common.codeyourfuture.io/common-theme/shortcodes/objectives/
- placeholder: |
-
- - [ ] CYF format, task list formatting
-
- - type: textarea
- attributes:
- label: Why are we doing this?
- description: Clearly explain the purpose of this assignment
- validations:
- required: true
- - type: input
- attributes:
- label: Maximum time in hours
- description: (Tech has max 16 per week total)
- validations:
- required: true
- - type: textarea
- attributes:
- label: How to get help
- description: State simply how trainees can get help with this assignment
- value: |
- Share your blockers in your class channel
- https://curriculum.codeyourfuture.io/guides/getting-help/asking-questions/
- - type: textarea
- attributes:
- label: How to submit
- description: State in clear steps how a trainee can submit this assignment.
- value: |
- Fork the repo to your own GitHub account
- Make regular small commits with clear messages
- When you are ready, open a Pull Request to the CYF repo
- Make sure you fill in the PR template provided
- validations:
- required: true
- - type: textarea
- attributes:
- label: How to review
- description: How to get code review and how to self-review
- - type: textarea
- attributes:
- label: Anything else?
- description: |
- Links? References? Anything that will give more context
-
- Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in.
- - type: markdown
- attributes:
- value: |
- **Thank you so much.**
-
- Please now complete this ticket by filling in the options on the sidebar.
-
- 1. Update labels
- - priority -- is this coursework key, mandatory, or stretch? Pick one.
- - size -- help trainees plan their time with rough estimation. Pick one
- - topics -- add all that seem relevant to you.
- 2. Add a Sprint label to add to the backlog view
- - sprint 1,2,3,4
-
- Once your ticket is complete, you may like to add it to the example project board attached to this repo.
- This is so you understand how trainees will use your work. Nobody has built a board copier yet, so trainees will be doing this step themselves.
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
deleted file mode 100644
index ad933349a..000000000
--- a/.github/pull_request_template.md
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-## Learners, PR Template
-
-Self checklist
-
-- [ ] I have committed my files one by one, on purpose, and for a reason
-- [ ] I have titled my PR with COHORT_NAME | FIRST_NAME LAST_NAME | REPO_NAME | WEEK
-- [ ] I have tested my changes
-- [ ] My changes follow the [style guide](https://curriculum.codeyourfuture.io/guides/reviewing/style-guide/)
-- [ ] My changes meet the [requirements](./README.md) of this task
-
-## Changelist
-
-Briefly explain your PR.
-
-## Questions
-
-Ask any questions you have for your reviewer.
diff --git a/.github/workflows/validate-pr-metadata.yml b/.github/workflows/validate-pr-metadata.yml
new file mode 100644
index 000000000..65df06116
--- /dev/null
+++ b/.github/workflows/validate-pr-metadata.yml
@@ -0,0 +1,19 @@
+name: Validate PR Metadata
+on:
+ pull_request_target:
+ types:
+ - labeled
+ - unlabeled
+ - opened
+ - edited
+ - reopened
+
+jobs:
+ validate_pr_metadata:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - uses: CodeYourFuture/actions/validate-pr-metadata@main
+ with:
+ give_more_specific_comment_for_earlier_learners: true
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.gitignore b/.gitignore
index 04ad57f27..bde36e530 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,4 @@
-**/.DS_Store
+node_modules
.DS_Store
-node_modules/
-.vscode/
\ No newline at end of file
+.vscode
+**/.DS_Store
\ No newline at end of file
diff --git a/Form-Controls/README.md b/Form-Controls/README.md
index 1028d39dc..c356f8844 100644
--- a/Form-Controls/README.md
+++ b/Form-Controls/README.md
@@ -4,48 +4,69 @@
-- [x] Interpret requirements and check against a list of criteria
-- [x] Write a valid form
-- [x] Test with Devtools
-- [x] Refactor using Devtools
+- [ ] Interpret requirements and check against a list of criteria
+- [ ] Write a valid form
+- [ ] Test with Devtools
+- [ ] Refactor using Devtools
+- [ ] Use version control by committing often and pushing regularly to GitHub
+- [ ] Develop the habit of writing clean, well-structured, and error-free code
## Task
-We are selling t-shirts. Write a form to collect the following data:
+We are selling T-shirts. Write a form to collect the following data:
Our customers already have accounts, so we know their addresses and charging details already. We don't need to collect that data. We want to confirm they are the right person, then get them to choose a colour and size.
Writing that out as a series of questions to ask yourself:
-1. What is the customer's name? I must collect this data, and validate it. But what is a valid name? I must decide something.
-2. What is the customer's email? I must make sure the email is valid. Email addresses have a consistent pattern.
-3. What colour should this t-shirt be? I must give 3 options. How will I make sure they don't pick other colours?
-4. What size does the customer want? I must give the following 6 options: XS, S, M, L, XL, XXL
+1. What is the customer's name? I must collect this data and ensure it contains at least two non-space characters.
+2. What is the customer's email? I must make sure the email is valid. Email addresses follow a consistent pattern.
+3. What colour should this T-shirt be? I must provide 3 options. How will I ensure they do not choose other colours?
+4. What size does the customer want? I must provide the following 6 options: XS, S, M, L, XL, XXL
All fields are required.
Do not write a form action for this project.
-## Developers must test their work.
+> [!TIP]
+> To check whether the customer's name contains at least two non-space characters you may need to use a **regular expression** (or **regex** for short), which is a tool used to match patterns in text. If you wish to learn more about regular expressions there are plenty of resources on the web including the [official MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_expressions), but for this task you can use this regex that we have pre-written for you: `.*\S.*\S.*`.
+>
+> Now you have the regular expression, it's up to you to figure out how to use it in the context of an HTML form!
+
+## Acceptance Criteria
+
+### Developers must test their work.
Let's write out our testable criteria. Check each one off as you complete it.
-- [x] I have used HTML only.
-- [x] I have not used any CSS or JavaScript.
+- [ ] I have only used HTML and CSS.
+- [ ] I have not used any JavaScript.
### HTML
-- [x] My form is semantic html.
-- [x] All inputs have associated labels.
-- [x] My Lighthouse Accessibility score is 100.
-- [x] I require a valid name. I have defined a valid name as a text string of two characters or more.
-- [x] I require a valid email.
-- [x] I require one colour from a defined set of 3 colours.
-- [x] I require one size from a defined set of 6 sizes.
+- [ ] My form is semantic HTML.
+- [ ] All inputs have associated labels.
+- [ ] My Lighthouse Accessibility score is 100.
+- [ ] I require a valid name.
+- [ ] I require a valid email.
+- [ ] I require one colour from a defined set of 3 colours.
+- [ ] I require one size from a defined set of 6 sizes.
-## Resources
+### Developers must adhere to professional standards.
+
+> Before you say you're done: Is your code readable? Does it run correctly? Does it look professional?
+These practices reflect the level of quality expected in professional work.
+They ensure your code is reliable, maintainable, and presents a polished, credible experience to users.
+
+- [ ] My HTML code has no errors or warnings when validated using https://validator.w3.org/
+- [ ] My code is consistently formatted
+- [ ] My page content is free of typos and grammatical mistakes
+- [ ] I commit often and push regularly to GitHub
+
+## Resources
- [MDN: Form controls](https://developer.mozilla.org/en-US/docs/Learn/Forms)
- [MDN: Form validation](https://developer.mozilla.org/en-US/docs/Learn/Forms/Form_validation)
- [Lighthouse](https://developers.google.com/web/tools/lighthouse)
- [Lighthouse Guide](https://programming.codeyourfuture.io/guides/testing/lighthouse)
+- [Format Code and Make Logical Commits in VS Code](../practical_guide.md)
diff --git a/Form-Controls/index.html b/Form-Controls/index.html
index e00a32287..41ff4b090 100644
--- a/Form-Controls/index.html
+++ b/Form-Controls/index.html
@@ -20,14 +20,14 @@