You should be focusing on meeting these learning outcomes over the three-week period. You will be tested on your learning during weekly quizzes.
Your project this week is to build a to-do list tracker. It should allow users to create, complete and delete tasks from a list.
You should have automated tests covering all the main user stories. Each story below has a test "shell". You have to fill out the body to create a failing test for each story. You should then see the tests pass as you add features to your app. This is the minimum amount of testing required: you should write additional tests to cover the rest of your code.
As a busy person, I want to:
Add tasks to a list so that I can keep track of them
Check things off my list so that I can see what I’ve done
Delete things from the list if I don’t need to do them anymore
As a motor-impaired user, I want to:
Use all the features of the app without a mouse
As a busy person, I want to:
Filter out completed to-dos from my list so that I can focus on what's left to do
A working to-do list
Tests for (at least) each user story
A responsive, mobile-first design
Ensure your app is accessible to as many different users as possible
How can we use advanced CSS features to create complex custom components?
What are "combinator" selectors? Can you provide examples where they're useful?
What are pseudo-elements? Can you provide examples where they're useful?
How might you create custom-styled checkboxes using both of the above?
How can we use advanced DOM features to make rendering complex UIs easier.
What is a NodeList?
How is it different from an array?
What's the different between "live" and "static" NodeLists?
What is the <template>
element?
How can we use this to render dynamic UI?
What are all the different ways to make sure our code is correct?
What is Prettier? How might it help us write better code?
What is static analysis? How can a linter help us avoid bugs?
What are the pros and cons of unit, integration and end-to-end tests?
How do different testing methodologies try to improve the way we write tests?
What is Test-Driven Development (TDD)? Can it help us write better code?
What is Behavior-Driven Development (BDD)? How do we translate user requirements into automated tests?
What is test coverage? Can this tell us about the quality of our tests?
These resources are helpful extra reading that may clarify or enhance concepts you're learning in the main curriculum.
Good testing practices so you can be confident your tests are working.
A comparison of creating DOM elements manually versus using the <template>
element. Useful technique if you're dynamically rendering lots of stuff with JS.