
Unit 1 Assessment
Introduction (By Instructor)
This Introduction section will be read in class by the instructor.
Students will be self-directed beginning with the Instructions & Time Guidelines section below.
GOAL
The goal of this final assessment is to gauge your ability to develop a minimal front-end web application using HTML, CSS & JavaScript, including your ability to:
- Write HTML that provides the application's overall structure and content.
- Use CSS to provide styling.
-
Use JavaScript to:
- Define variables that hold application state, cache DOM elements, hold lookup data (constants), etc.
- Select elements in the DOM.
- Listen for browser events, such as
click
, being dispatched by DOM elements. - Manipulate a DOM element's content and style.
OVERALL APPLICATION
This is what your application should look like:
The application's UI consists of:
- A count display
- Two buttons ("+" & "-")
- An
<input>
element
Application requirements are expounded on in each section below. Make sure you read through the instructions completely.
Use the screenshots below as your "wireframes"; the styling does not have to be exact, however, the closer it is to the screenshots, the better!
PROCESS
This assessment is an individual assignment - no collaboration please.
The good news is that it's "open book" - you may reference anything on your computer, Google, use notes, etc.
However, don't spend too much time researching unless you're stuck - do not over-think this application!!!
It is estimated that this project assessment up to 90 minutes to complete.
Instructions & Time Guidelines (You've Got This!)
Please follow the following steps in order:
- STEP 1 - Prepare (≈ 5 minutes)
- STEP 2 - Set Up the App (≈ 5 minutes)
- STEP 3 - Implement the App's Requirements (≈ 40 minutes)
- STEP 4 - Bonus
The times above are just estimated guidelines.
Assessment Steps to Complete
STEP 1 - Prepare (5 minutes)
Briefly read through the rest of this assignment to better understand what is required before starting to code.
STEP 2 - Set Up the App (5 minutes)
Be sure to follow best practices when setting up the project:
- Create a folder named
project-1-assessment
outside of all repos. - Create a
js
andcss
folder. - Touch
index.html
- Touch
js/main.js
, and include it inindex.html
such that it runs after the DOM is ready. - Touch
css/main.css
and link it in. - Make this a git repo by running
git init
within the root ofproject-1-assessment
, make sure you use pwd to make sure you are directly in the project-1-assessment folder - create a git repo on github.com
- copy the ssh url and run
git remote add origin sshlinkhere
- then run
code .
- If you
git init
in the wrong folder you can reverse the process by first runningls -a
to verify there is a.git
folder, then runningrm -rf .git
to remove the.git folder
permananently.
STEP 3 - Implement the App's Requirements (40 minutes)
Upon Loading
When the application initially loads, the <input>
's value should be set to 1
and the initial count of 0
is rendered such that the display looks something like this:

When the "+" Button is Clicked
When the "+" button is clicked, the value entered in the <input>
is added to the count and the new count value displayed.
For example, if the "+" button is clicked immediately after the app loading, the display should look something like this:

When the "-" Button is Clicked
When the "-" button is clicked, the value entered in the <input>
is subtracted from the count and the new count value displayed.
Continuing from the previous example, if the number 200 is typed in the <input>
and the "-" button is clicked, the display should look something like this:

Hovering Over the "+" or "-" Button
When the mouse is over the "+" or "-" button, the button should reverse its background and text colors:

Congrats, that's all there is to it!
Push your completed code to github when your done
STEP 4 - Bonus
As a bonus, display the count in red if it is a negative value!

You can also code for edge cases (for example, if someone puts a string in the input area)
Hints
- Prioritize functionality over layout/styling. Once the functionality is complete, then work on styling to get the UI as close as possible to the wireframes/images (see the below hint for using flexbox for layout).
-
Use CSS flexbox to ease horizontal and vertical centering:
section { display: flex; /* defaults to row layout */ justify-content: center; /* centers items horizontally in row layout */ align-items: center; /* centers vertically in row layout */ /* flex-direction: column; will set layout to column instead of row */ }