My Journey Learning to Code
+I started learning to code a few months ago and it's been a wild ride!
+ +Early Challenges
+At first, syntax was really confusing.
+ +Breakthroughs
+Eventually things started to click.
+diff --git a/client/i18n/locales/english/intro.json b/client/i18n/locales/english/intro.json index 55fac651b41..e323d6309cb 100644 --- a/client/i18n/locales/english/intro.json +++ b/client/i18n/locales/english/intro.json @@ -2299,6 +2299,12 @@ "In these lectures, you will learn about accessibility and its importance, assistive tools for people with disabilities, HTML attributes that let you create inclusive websites, accessibility best practices, and much more." ] }, + "workshop-debug-coding-journey-blog-page": { + "title": "Debug a Coding Journey Blog Page", + "intro": [ + "In this workshop, you will debug and fix accessibility errors in a coding blog page." + ] + }, "lecture-accessible-tables-forms": { "title": "Working with Accessible Tables and Forms", "intro": [ diff --git a/client/src/pages/learn/full-stack-developer/workshop-debug-coding-journey-blog-page/index.md b/client/src/pages/learn/full-stack-developer/workshop-debug-coding-journey-blog-page/index.md new file mode 100644 index 00000000000..1dcb9a91f87 --- /dev/null +++ b/client/src/pages/learn/full-stack-developer/workshop-debug-coding-journey-blog-page/index.md @@ -0,0 +1,9 @@ +--- +title: Introduction to the Debug a Coding Journey Blog Page +block: workshop-debug-coding-journey-blog-page +superBlock: full-stack-developer +--- + +## Introduction to the Debug a Coding Journey Blog Page + +In this workshop, you will debug and fix accessibility errors in a coding blog page. diff --git a/curriculum/challenges/english/blocks/workshop-debug-coding-journey-blog-page/68c2fb153760d075321c5da3.md b/curriculum/challenges/english/blocks/workshop-debug-coding-journey-blog-page/68c2fb153760d075321c5da3.md new file mode 100644 index 00000000000..fd0cfbbff9d --- /dev/null +++ b/curriculum/challenges/english/blocks/workshop-debug-coding-journey-blog-page/68c2fb153760d075321c5da3.md @@ -0,0 +1,102 @@ +--- +id: 68c2fb153760d075321c5da3 +title: Step 1 +challengeType: 0 +dashedName: step-1 +demoType: onLoad +--- + +# --description-- + +Camperbot has created a coding journey blog page, but it looks like the page has some accessibility issues and bad practices. Your job in this workshop, is to fix these issues for Camperbot. + +The first set of errors has to deal with the use of headings. In a prior lecture, you learned that it is best practice to only use one `h1` per page. But it looks like Camperbot is a using a few `h1`s. + +Leave the `
I started learning to code a few months ago and it's been a wild ride!
+ +At first, syntax was really confusing.
+ +Eventually things started to click.
+Today I learned that not everyone uses the web the same way I do.
+ +These tools help visually impaired users browse websites.
+I'm excited to dive into JavaScript and build interactive features!
+ +Stay tuned for some exciting interactive blog features.
+Email me at camperbot@blog.io
+ + +``` diff --git a/curriculum/challenges/english/blocks/workshop-debug-coding-journey-blog-page/68c3144fc395d681180cde15.md b/curriculum/challenges/english/blocks/workshop-debug-coding-journey-blog-page/68c3144fc395d681180cde15.md new file mode 100644 index 00000000000..0e307abcc96 --- /dev/null +++ b/curriculum/challenges/english/blocks/workshop-debug-coding-journey-blog-page/68c3144fc395d681180cde15.md @@ -0,0 +1,83 @@ +--- +id: 68c3144fc395d681180cde15 +title: Step 2 +challengeType: 0 +dashedName: step-2 +--- + +# --description-- + +It looks like there are still some issues with the use of headings on the page. If you look at the first `div` element, there are two `h4` elements used as subheadings. A better practice would be to use `h3` elements for these subheadings since they are a level below the `h2` element. + +Change the two `h4` elements to `h3` elements. + +# --hints-- + +Your `h4` element with the text of `Early Challenges` should be an `h3` element. + +```js +const post1Subheading = document.querySelector("#post1 + p + h3"); +assert.equal(post1Subheading?.tagName, "H3"); +assert.equal(post1Subheading?.textContent, "Early Challenges"); +``` + +Your `h4` element with the text of `Breakthroughs` should be an `h3` element. + +```js +const post1SecondSubheading = document.querySelector("#post1 + p + h3 + p + h3"); +assert.equal(post1SecondSubheading?.tagName, "H3"); +assert.equal(post1SecondSubheading?.textContent, "Breakthroughs"); +``` + +# --seed-- + +## --seed-contents-- + +```html + + + + +I started learning to code a few months ago and it's been a wild ride!
+ +At first, syntax was really confusing.
+ +Eventually things started to click.
+Today I learned that not everyone uses the web the same way I do.
+ +These tools help visually impaired users browse websites.
+I'm excited to dive into JavaScript and build interactive features!
+ +Stay tuned for some exciting interactive blog features.
+Email me at camperbot@blog.io
+ + +``` diff --git a/curriculum/challenges/english/blocks/workshop-debug-coding-journey-blog-page/68c31763232a4582366eb6fd.md b/curriculum/challenges/english/blocks/workshop-debug-coding-journey-blog-page/68c31763232a4582366eb6fd.md new file mode 100644 index 00000000000..16f322d1e7f --- /dev/null +++ b/curriculum/challenges/english/blocks/workshop-debug-coding-journey-blog-page/68c31763232a4582366eb6fd.md @@ -0,0 +1,75 @@ +--- +id: 68c31763232a4582366eb6fd +title: Step 3 +challengeType: 0 +dashedName: step-3 +--- + +# --description-- + +In the second post section, there is an `h5` element being used. It would be more appropriate to use an `h3` element here. + +Change the `h5` element to an `h3` element. + +# --hints-- + +You should change the `h5` element to an `h3` element. + +```js +const secondPostSubheading = document.querySelector("#post2 + p + h3"); +assert.equal(secondPostSubheading?.tagName, "H3"); +assert.equal(secondPostSubheading?.textContent, "Screen Readers"); +``` + +# --seed-- + +## --seed-contents-- + +```html + + + + +I started learning to code a few months ago and it's been a wild ride!
+ +At first, syntax was really confusing.
+ +Eventually things started to click.
+Today I learned that not everyone uses the web the same way I do.
+ +These tools help visually impaired users browse websites.
+I'm excited to dive into JavaScript and build interactive features!
+ +Stay tuned for some exciting interactive blog features.
+Email me at camperbot@blog.io
+ + +``` diff --git a/curriculum/challenges/english/blocks/workshop-debug-coding-journey-blog-page/68c318d9c3b3f382f93d1fd1.md b/curriculum/challenges/english/blocks/workshop-debug-coding-journey-blog-page/68c318d9c3b3f382f93d1fd1.md new file mode 100644 index 00000000000..e7b211972ab --- /dev/null +++ b/curriculum/challenges/english/blocks/workshop-debug-coding-journey-blog-page/68c318d9c3b3f382f93d1fd1.md @@ -0,0 +1,109 @@ +--- +id: 68c318d9c3b3f382f93d1fd1 +title: Step 4 +challengeType: 0 +dashedName: step-4 +--- + +# --description-- + +Below the main title of the page, there is a navigation section that contains links to each blog post. + +This section should be wrapped in a `nav` element to indicate its purpose as a navigation landmark. + +# --hints-- + +Your page should have a `nav` element. + +```js +const navElement = document.querySelector("nav"); +assert.isNotNull(navElement); +``` + +Your `I started learning to code a few months ago and it's been a wild ride!
+ +At first, syntax was really confusing.
+ +Eventually things started to click.
+Today I learned that not everyone uses the web the same way I do.
+ +These tools help visually impaired users browse websites.
+I'm excited to dive into JavaScript and build interactive features!
+ +Stay tuned for some exciting interactive blog features.
+Email me at camperbot@blog.io
+ + +``` diff --git a/curriculum/challenges/english/blocks/workshop-debug-coding-journey-blog-page/68c31a762717d583d90ad31e.md b/curriculum/challenges/english/blocks/workshop-debug-coding-journey-blog-page/68c31a762717d583d90ad31e.md new file mode 100644 index 00000000000..9f78d26ce04 --- /dev/null +++ b/curriculum/challenges/english/blocks/workshop-debug-coding-journey-blog-page/68c31a762717d583d90ad31e.md @@ -0,0 +1,91 @@ +--- +id: 68c31a762717d583d90ad31e +title: Step 5 +challengeType: 0 +dashedName: step-5 +--- + +# --description-- + +In the blog page, there are a total of three blog posts wrapped inside generic `div` elements. But it would be better to use semantic elements to wrap each post. + +Change each `div` element that wraps each blog post to an `article` element. + +# --hints-- + +Your first `div` element for the first post should be changed to an `article` element. + +```js +const firstPost = document.querySelector("nav + article"); +assert.isNotNull(firstPost); +``` + +Your second `div` element for the second post should be changed to an `article` element. + +```js +const secondPost = document.querySelector("article + article"); +assert.isNotNull(secondPost); +``` + +Your third `div` element for the third post should be changed to an `article` element. + +```js +const thirdPost = document.querySelector("article + article + article"); +assert.isNotNull(thirdPost); +``` + +# --seed-- + +## --seed-contents-- + +```html + + + + +I started learning to code a few months ago and it's been a wild ride!
+ +At first, syntax was really confusing.
+ +Eventually things started to click.
+Today I learned that not everyone uses the web the same way I do.
+ +These tools help visually impaired users browse websites.
+I'm excited to dive into JavaScript and build interactive features!
+ +Stay tuned for some exciting interactive blog features.
+Email me at camperbot@blog.io
+ + +``` diff --git a/curriculum/challenges/english/blocks/workshop-debug-coding-journey-blog-page/68c31c946d73bf84b108c6fc.md b/curriculum/challenges/english/blocks/workshop-debug-coding-journey-blog-page/68c31c946d73bf84b108c6fc.md new file mode 100644 index 00000000000..6c856a84c8c --- /dev/null +++ b/curriculum/challenges/english/blocks/workshop-debug-coding-journey-blog-page/68c31c946d73bf84b108c6fc.md @@ -0,0 +1,82 @@ +--- +id: 68c31c946d73bf84b108c6fc +title: Step 6 +challengeType: 0 +dashedName: step-6 +--- + +# --description-- + +Since the entire section containing the blog posts represents the main content of the page, it should be wrapped in a `main` element. This helps screen readers and other assistive technologies understand the structure of the page better. + +# --hints-- + +You should have a `main` element. + +```js +const mainElement = document.querySelector("main"); +assert.isNotNull(mainElement); +``` + +Your `main` element should contain all three `article` elements. + +```js +const articles = document.querySelectorAll("main article"); +assert.lengthOf(articles, 3); +``` + +# --seed-- + +## --seed-contents-- + +```html + + + + +I started learning to code a few months ago and it's been a wild ride!
+ +At first, syntax was really confusing.
+ +Eventually things started to click.
+Today I learned that not everyone uses the web the same way I do.
+ +These tools help visually impaired users browse websites.
+I'm excited to dive into JavaScript and build interactive features!
+ +Stay tuned for some exciting interactive blog features.
+Email me at camperbot@blog.io
+ + +``` diff --git a/curriculum/challenges/english/blocks/workshop-debug-coding-journey-blog-page/68c31dd917c3ae855e8728c7.md b/curriculum/challenges/english/blocks/workshop-debug-coding-journey-blog-page/68c31dd917c3ae855e8728c7.md new file mode 100644 index 00000000000..46665858546 --- /dev/null +++ b/curriculum/challenges/english/blocks/workshop-debug-coding-journey-blog-page/68c31dd917c3ae855e8728c7.md @@ -0,0 +1,96 @@ +--- +id: 68c31dd917c3ae855e8728c7 +title: Step 7 +challengeType: 0 +dashedName: step-7 +--- + +# --description-- + +For the last part of the workshop, there are a few changes needed for the contact section at the bottom. + +The first change would be to wrap the contact section inside of a `footer` element. This will help screen readers identify this section as the footer of the page. + +# --hints-- + +Your page should have a `footer` element. + +```js +const footerElement = document.querySelector("footer"); +assert.isNotNull(footerElement); +``` + +Your `footer` element should contain an `h3` element with the text `Contact Me`. + +```js +const h3Element = document.querySelector("footer h3"); +assert.isNotNull(h3Element); +assert.strictEqual(h3Element?.textContent, "Contact Me"); +``` + +Your `footer` element should contain a `p` element with the text `Email me at camperbot@blog.io`. + +```js +const pElement = document.querySelector("footer p"); +assert.isNotNull(pElement); +assert.strictEqual(pElement?.textContent, "Email me at camperbot@blog.io"); +``` + +# --seed-- + +## --seed-contents-- + +```html + + + + +I started learning to code a few months ago and it's been a wild ride!
+ +At first, syntax was really confusing.
+ +Eventually things started to click.
+Today I learned that not everyone uses the web the same way I do.
+ +These tools help visually impaired users browse websites.
+I'm excited to dive into JavaScript and build interactive features!
+ +Stay tuned for some exciting interactive blog features.
+Email me at camperbot@blog.io
+--fcc-editable-region-- + + +``` diff --git a/curriculum/challenges/english/blocks/workshop-debug-coding-journey-blog-page/68c31f3a5de8bf861f616dc8.md b/curriculum/challenges/english/blocks/workshop-debug-coding-journey-blog-page/68c31f3a5de8bf861f616dc8.md new file mode 100644 index 00000000000..d4b8ddc39e4 --- /dev/null +++ b/curriculum/challenges/english/blocks/workshop-debug-coding-journey-blog-page/68c31f3a5de8bf861f616dc8.md @@ -0,0 +1,83 @@ +--- +id: 68c31f3a5de8bf861f616dc8 +title: Step 8 +challengeType: 0 +dashedName: step-8 +--- + +# --description-- + +Right now the `footer` section has an `h3` heading. But it should be an `h2` heading to maintain a proper heading hierarchy. + +Change the `h3` to an `h2`. + +# --hints-- + +Your `footer` element should contain an `h2` element instead of an `h3` element. + +```js +const heading = document.querySelector("footer h2"); +assert.isNotNull(heading); +assert.strictEqual(heading?.textContent, "Contact Me"); +``` + +# --seed-- + +## --seed-contents-- + +```html + + + + +I started learning to code a few months ago and it's been a wild ride!
+ +At first, syntax was really confusing.
+ +Eventually things started to click.
+Today I learned that not everyone uses the web the same way I do.
+ +These tools help visually impaired users browse websites.
+I'm excited to dive into JavaScript and build interactive features!
+ +Stay tuned for some exciting interactive blog features.
+Email me at janedoe@email.com
+``` + +Start by wrapping the `camperbot@blog.io` email address inside of an anchor element. Then, add the `href` attribute to the anchor element and set it equal to `mailto:camperbot@blog.io`. + +With that last change, you have successfully resolved all of the issues in the blog page! + +# --hints-- + +Your `camperbot@blog.io` email address should be wrapped inside of an anchor element. + +```js +const anchor = document.querySelector("footer a"); +assert.isNotNull(anchor); +assert.strictEqual(anchor?.textContent, "camperbot@blog.io"); +``` + +Your anchor element should have an `href` attribute with a value of `mailto:camperbot@blog.io`. + +```js +const anchor = document.querySelector("footer a"); +assert.strictEqual(anchor?.getAttribute("href"), "mailto:camperbot@blog.io"); +``` + +# --seed-- + +## --seed-contents-- + +```html + + + + +I started learning to code a few months ago and it's been a wild ride!
+ +At first, syntax was really confusing.
+ +Eventually things started to click.
+Today I learned that not everyone uses the web the same way I do.
+ +These tools help visually impaired users browse websites.
+I'm excited to dive into JavaScript and build interactive features!
+ +Stay tuned for some exciting interactive blog features.
+I started learning to code a few months ago and it's been a wild ride!
+ +At first, syntax was really confusing.
+ +Eventually things started to click.
+Today I learned that not everyone uses the web the same way I do.
+ +These tools help visually impaired users browse websites.
+I'm excited to dive into JavaScript and build interactive features!
+ +Stay tuned for some exciting interactive blog features.
+