Huge Navigation Exercise
Overview
This exercise will have the candidate build a responsive site navigation driven by an AJAX request.
Technology
On The Server | On The Client | Development |
---|---|---|
express | javascript | Gulp |
stylus | livereload |
Requirements
You need Node.js installed and running.
We use Gulp as our task runner. Get the CLI (command line interface).
$ npm install gulp -g
Installation
$ git clone https://github.com/juvasquezg/NavExercise.git && cd ./NavExercise
$ npm install
$ gulp
Development with livereload
gulp
Test
npm test
if you get ** -bash: make: commad not found ** please install make in Unix based systems or run
./node_modules/.bin/mocha test/
Production
npm start
Note
Default port is 3000, sure that this port is available.
You can put the public directory in a [nginx] or [apache] server.
We use npm as our Dependecy Management.
Guidelines
Here are the guidelines for this exercise
- No frameworks or libraries (this means jquery).
- Chrome compliance is all that's required, all functions and features available in Chrome are in play.
- Nav must be responsive.
- Code must run after the following command, please ensure your code runs as you expect it to from a fresh checkout with these commands before submission.
$ npm i && npm start
Nice to haves:
- Adherence to accessibility standards
- Documentation
- Unit and/or E2E tests
At a high level the navigation will have two main states
- <768px: Mobile. Hamburger icon will display in the top-left of the page. Clicking the hamburger will cause a card to slide in and overlay the content from the left. The card will contain nav and sub-nav items defined in the JSONP response
- >= 768px: Desktop. The nav will display as a horizontal nav. Top level nav items will display sub-nav items when clicked. No hamburger will be shown.
Version
0.1.0
Files
- Mockup - Illustrator file describing how the nav should behave
- server.js - node.js server that will host the site and provie the api to construct the nav
API
- GET /api/nav.json - returns a JSON response representing the items in the nav.
Get Started
git clone git@github.com:hugeinc/NavExercise.git
cd NavExercise
npm install
npm start
Design Specifications
Typography
- Primary Navigation 21/48 HUGE Avant Garde Bold
- Secondary Navigation 16/48 Galaxie Copernicus Book
- Headline (Desktop) 120/132 HUGE Avant Garde Bold
- Body Copy (Desktop) 24/36 Galaxie Copernicus Book
- Headline (Mobile) 44/48 HUGE Avant Garde Bold
- Body Copy (Mobile) 14/24 Galaxie Copernicus Book
- Copyright (Mobile) 12/16 Helvetica Neue Regular
Color
- Magenta #ec008c
- Light Gray #eee
- Translucent Black rgba(0, 0, 0, 0.5)
Measurements
Measurements are specified in pixels. Dimensions are fluid unless specified.
Interactions
Desktop
- On hover, Primary Navigation reverses color (white/magenta).
- On click, if item contains a URL, Primary Navigation navigates to a new page.
- On click, if item contains other items, Secondary Navigation appears (see Desktop, Secondary Navigation).
- Menu appears containing Secondary Navigation.
- Translucent mask appears over content, behind menu.
- On hover in, Secondary Navigation changes color (magenta/light gray).
- On click, Secondary navigates to a new page.
- On click outside of menu, menu and mask are hidden.
Mobile
- When a user clicks the open navigation icon (“hamburger”), the navigation should “push” from left to right.
- The HUGE logo and navigation toggle slide left to right.
- The open navigation icon should change to the close navigation icon (“x”).
- Translucent mask appears over content, right of navigation.
- The Primary Navigation should include link items and menu items.
- When a user hovers a Primary Navigation item, it should change color (magenta/light gray).
- When a user clicks a Primary Navigation link item, the browser should navigate to a new page.
- When a user clicks a Primary Navigation menu item, the Secondary Navigation should “push” down, the chevron should rotate * 180°.
- When a user hovers a Secondary Navigation item, it should change color (magenta/light gray).
- When a user clicks a Secondary Navigation item, browser should navigate to a new page.
- When a user clicks outside of the navigation, the navigation should close.
- When the navigation closes:
- the menu should “pull” from right to left
- the logo and toggle button should “slide” from right to left
- the close icon should change to the open icon
- the mask should be hidden