# Kickoff's Javascript
> Find out more at https://trykickoff.now.sh/learn/js.html

Kickoff has a very simple folder structure for it’s JavaScript; as a base Kickoff contains `utils`, `standalone` and a `modules` directories.

## modules
This directory is where you ought to put all your local, non-npm modules.

## utils
This directory is where you ought to put all your local utility scripts. These are the simple, single-serving scripts that are shared by more than one module.

## standalone
Any script/file in this directory will be copied, without modification, to the assets/dist/js/standalone directory. As an example, we added our Modernizr.js file here


## Styleguide
This is for all styleguide-related code. 

## Useful npm packages
* [lodash](https://lodash.com/) - A JavaScript utility library delivering consistency, modularity, performance, & extras `npm i lodash -S`
* [gator](https://gator.com/) - Event delegation in javascript `npm i gator -S`
* [double-dollar](https://github.com/mrmartineau/double-dollar) - **[javascript]** forEach over DOM elements more easily
* [whatwg-fetch](https://www.npmjs.com/package/whatwg-fetch) - A window.fetch polyfill. `npm i whatwg-fetch -S`
* [lazysizes](https://www.npmjs.com/package/lazysizes) - High performance (jankfree) lazy loader for images (including responsive images), iframes and scripts (widgets) `npm i lazysizes -S`
* [get-size](https://www.npmjs.com/package/get-size) - measures element size  `npm i get-size -S`
* [throttle-debounce](https://www.npmjs.com/package/throttle-debounce) - Throttle/debounce your functions `npm i throttle-debounce -S`
* [responsive-watch](https://www.npmjs.com/package/responsive-watch) - Watch some media queries and react when they change `npm i responsive-watch -S`
* [attach.js](https://www.npmjs.com/package/attach.js) - Attaches JavaScript to HTML without messy selectors `npm i attach.js -S`
* [D'accord form validation](https://www.npmjs.com/package/daccord-validation) - Kickoff validation plugin for forms. Uses HTML 5 form attributes to trigger validation tests `npm i daccord-validation -S`
* [Dominus](https://www.npmjs.com/package/dominus) - Lean DOM Manipulation and a great alternative to jQuery at a fraction of the size `npm i dominus -S`
* [Cookies](https://github.com/ScottHamper/Cookies/) - Developed by Scott Hamper, Cookies is a great Cookie manipulation library `npm i cookies-js -S`
* [Bullet pubsub](https://www.npmjs.com/package/bullet-pubsub) - A lightweight and simple to use pub-sub library. `npm i bullet-pubsub -S`
* [utube](https://www.npmjs.com/package/utube) - Youtube video player class `npm i utube -S`
* [moment.js](https://www.npmjs.com/package/moment) - Parse, validate, manipulate, and display dates  `npm i moment -S`
* [scroll](https://www.npmjs.com/package/scroll) - A function that animates an element’s scrollTop/scrollLeft values `npm i scroll -S`
* [Axios](https://www.npmjs.com/package/axios) - Promise based HTTP client `npm i axios -S`
* [Flickity](https://www.npmjs.com/package/flickity) - Flickity carousel - Touch, responsive, flickable galleries  `npm i flickity -S`
* [Swiftclick](https://github.com/tmwagency/swiftclick) - Developed by Ivan Hayes, SwiftClick is a library created to eliminate the 300ms click event delay on touch devices.  `npm i swiftclick -S`
* [Trak.js](https://github.com/mrmartineau/trak.js) - Developed by Zander Martineau, trak.js is a universal analytics event tracking API  `npm i trak.js -S`
* [switch-fn](https://www.npmjs.com/package/switch-fn) - Write a functional switch statement. `npm i switch-fn -S`
* [eases](https://www.npmjs.com/package/eases) - grab bag of easing equations `npm i eases -S`
* [mousetrap](https://www.npmjs.com/package/mousetrap) - Simple library for handling keyboard shortcuts `npm i mousetrap -S`
* [dateformat](https://www.npmjs.com/package/dateformat) - A node.js package for Steven Levithan's excellent dateFormat() function. `npm i dateformat -S`
* [jQuery](https://github.com/jquery/jquery/) - A fast, small, and feature-rich JavaScript library
* [uppie](https://www.npmjs.com/package/uppie) - Cross-browser directory and multi-file upload library `npm i uppie -S`
