Read these instructions carefully. Understand exactly what is expected before starting this Sprint Challenge.
This challenge allows you to practice the concepts and techniques learned over the past sprint and apply them in a concrete project. This sprint explored Applied JavaScript. During this sprint, you studied DOM and components. In your challenge this week, you will demonstrate your mastery of these skills by creating an online Lambda newspaper called "Lambda Times".
This is an individual assessment. All work must be your own. Your challenge score is a measure of your ability to work independently using the material covered through this sprint. You need to demonstrate proficiency in the concepts and objectives introduced and practiced in preceding days.
You are not allowed to collaborate during the sprint challenge. However, you are encouraged to follow the twenty-minute rule and seek support from your TL if you need direction.
You have three hours to complete this challenge. Plan your time accordingly.
You are going to create a Lambda Newspaper. Your job is going to be to create the components that make up the newspaper's home page. You will do this at first with static data, then you will request data from a server to create dynamic components.
In meeting the minimum viable product (MVP) specifications listed below, your project should look like the animation linked below. NOTE that the animation includes one of the stretch goals (the filtering of the articles by clicking on a topic).
Commit your code regularly and meaningfully. This helps both you (in case you ever need to return to old code for any number of reasons) and your team lead as the evaluate your solution.
Be prepared to demonstrate your understanding of this week's concepts by answering questions on the following topics. You might prepare by writing down your own answers before hand.
-
What is the DOM? The Document Object Model is a platform that lets programs and scripts to access and update the HTML document
-
What is an event? An event is something that happens to HTML elements, such as a click, mouseover, etc.
-
What is an event listener? An event listener runs a check to see if a specific event has occured, and can be used to run JS once the event in question happens.
-
Why would we convert a NodeList into an Array? if you use querySelectorAll, it returns a NodeList not an array, meaning you can't use advanced array methods on the data
-
What is a component? a set of interface elements and specific behavior for that element.
You are expected to be able to answer questions in these areas. Your responses contribute to your Sprint Challenge grade.
- Create a forked copy of this project
- Add your team lead as collaborator on Github
- Clone your OWN version of the repository (Not Lambda's by mistake!)
- Create a new branch:
git checkout -b <firstName-lastName>
. - Implement the project on your newly created
<firstName-lastName>
branch, committing changes regularly - Push commits:
git push origin <firstName-lastName>
- Navigate to the root of the project with your command line
- Run
npm install
to download the dependencies listed in thepackage.json
file - Run
npm start
to compile the project and serve it - Navigate Chrome to the URL indicated in the output of the
npm start
command
Your finished project must include all of the following requirements:
-
Look through the HTML code and familiarize yourself with the different sections. Some of them already exist, but some need to be filled in. DO NOT add any code to the
index.html
file itself. -
Following the instructions in the
components/Header.js
file, create the Header. -
Following the instructions in the
components/Tabs.js
file, create the Tabs. -
Following the instructions in the
components/Cards.js
file, create the Cards.
In your solution, it is essential that you follow best practices and produce clean and professional results. You will be scored on your adherence to proper code style and good organization. Schedule time to review, refine, and assess your work and perform basic professional polishing including spell-checking and grammar-checking on your work. It is better to submit a challenge that meets MVP than one that attempts too much and does not.
After finishing your required elements, you can push your work further. These goals may or may not be things you have learned in this module but they build on the material you just studied. Time allowing, stretch your limits and see if you can deliver on the following optional goals:
- Use the tabs at the top of the page to filter articles by topic.
- Following the instructions in the
components/Carousel.js file
, create the Carousel component. - Render an error message on the page for the user, if the network request to fetch articles fails.
Follow these steps for completing your project.
- Submit a Pull-Request to merge
<firstName-lastName>
Branch intomain
branch (student's Repo). Please don't merge your own pull request - Add your team lead as a reviewer on the pull-request
- Your team lead will count the project as complete after receiving your pull-request