From a6efd5d711f86d352bb5dc59a5a90ffe8e213504 Mon Sep 17 00:00:00 2001 From: Bryan C Guner <66654881+bgoonz@users.noreply.github.com> Date: Wed, 30 Mar 2022 12:31:40 -0400 Subject: [PATCH 1/6] Update resources.md --- src/pages/docs/reference/resources.md | 965 ++++++++++++++++++++++++++ 1 file changed, 965 insertions(+) diff --git a/src/pages/docs/reference/resources.md b/src/pages/docs/reference/resources.md index a2bd79e4c7..88b399ebb3 100644 --- a/src/pages/docs/reference/resources.md +++ b/src/pages/docs/reference/resources.md @@ -13,6 +13,971 @@ template: docs ### Web Dev Resources + + +
+ + + JS RESOURCES + + + + +* [Awesome JavaScript](#awesome-javascript) + * [Package Managers](#package-managers) + * [Loaders](#loaders) + * [Bundlers](#bundlers) + * [Testing Frameworks](#testing-frameworks) + * [QA Tools](#qa-tools) + * [MVC Frameworks and Libraries](#mvc-frameworks-and-libraries) + * [Node-Powered CMS Frameworks](#node-powered-cms-frameworks) + * [Templating Engines](#templating-engines) + * [Articles/Posts](#articles-and-posts) + * [Data Visualization](#data-visualization) + * [Timeline](#timeline) + * [Spreadsheet](#spreadsheet) + * [Editors](#editors) + * [Documentation](#documentation) + * Utilities + * [Files](#files) + * [Functional Programming](#functional-programming) + * [Reactive Programming](#reactive-programming) + * [Data Structure](#data-structure) + * [Date](#date) + * [String](#string) + * [Number](#number) + * [Storage](#storage) + * [Color](#color) + * [I18n And L10n](#i18n-and-l10n) + * [Control Flow](#control-flow) + * [Routing](#routing) + * [Security](#security) + * [Log](#log) + * [RegExp](#regexp) + * [Media](#media) + * [Voice Command](#voice-command) + * [API](#api) + * [Streaming](#streaming) + * [Vision Detection](#vision-detection) + * [Browser Detection](#browser-detection) + * [Benchmark](#benchmark) + * [Machine Learning](#machine-learning) + * UI + * [Code Highlighting](#code-highlighting) + * [Loading Status](#loading-status) + * [Validation](#validation) + * [Keyboard Wrappers](#keyboard-wrappers) + * [Tours And Guides](#tours-and-guides) + * [Notifications](#notifications) + * [Sliders](#sliders) + * [Range Sliders](#range-sliders) + * [Form Widgets](#form-widgets) + * [Tips](#tips) + * [Modals and Popups](#modals-and-popups) + * [Scroll](#scroll) + * [Menu](#menu) + * [Table/Grid](#tablegrid) + * [Frameworks](#frameworks-1) + * [Boilerplates](#boilerplates) + * [Gesture](#gesture) + * [Maps](#maps) + * [Typography](#typography) + * [Animations](#animations) + * [Image processing](#image-processing) + * [ES6](#es6) + * [SDK](#sdk) + * [Misc](#misc) + * [Podcasts](#podcasts) +* [Worth Reading](#worth-reading) +* [Other Awesome Lists](#other-awesome-lists) +* [Contributing](#contributing) + +---- + + +## Package Managers +*Host the JavaScript libraries and provide tools for fetching and packaging them.* + +* [npm](https://www.npmjs.com/) - npm is the package manager for JavaScript. +* [Bower](https://github.com/bower/bower) - A package manager for the web. +* [component](https://github.com/componentjs/component) - Client package management for building better web applications. +* [spm](https://github.com/spmjs/spm) - Brand new static package manager. +* [jam](https://github.com/caolan/jam) - A package manager using a browser-focused and RequireJS compatible repository. +* [jspm](https://github.com/jspm/jspm-cli) - Frictionless browser package management. +* [Ender](https://github.com/ender-js/Ender) - The no-library library. +* [volo](https://github.com/volojs/volo) - Create front end projects from templates, add dependencies, and automate the resulting projects. +* [Duo](https://github.com/duojs/duo) - Next-generation package manager that blends the best ideas from Component, Browserify and Go to make organizing and writing front-end code quick and painless. +* [yarn](https://yarnpkg.com/) - Fast, reliable, and secure dependency management. + + +## Loaders +*Module or loading system for JavaScript.* + +* [RequireJS](https://github.com/requirejs/requirejs) - A file and module loader for JavaScript. +* [browserify](https://github.com/substack/node-browserify) - Browser-side require() the node.js way. +* [SeaJS](https://github.com/seajs/seajs) - A Module Loader for the Web. +* [HeadJS](https://github.com/headjs/headjs) - The only script in your HEAD. +* [curl](https://github.com/cujojs/curl) - A small, fast, extensible module loader that handles AMD, CommonJS Modules/1.1, CSS, HTML/text, and legacy scripts. +* [lazyload](https://github.com/rgrove/lazyload/) - Tiny, dependency-free async JavaScript and CSS loader. +* [script.js](https://github.com/ded/script.js) - Asynchronous JavaScript loader and dependency manager. +* [systemjs](https://github.com/systemjs/systemjs) - AMD, CJS & ES6 spec-compliant module loader. +* [LodJS](https://github.com/yanhaijing/lodjs) - Module loader based on AMD. +* [ESL](https://github.com/ecomfe/esl) - Module loader browser first, support lazy define and AMD. +* [modulejs](https://github.com/lrsjng/modulejs) - Lightweight JavaScript module system. + + +## Bundlers + +* [browserify](https://github.com/substack/node-browserify) - Browserify lets you require('modules') in the browser by bundling up all of your dependencies. +* [webpack](https://github.com/webpack/webpack) - Packs CommonJs/AMD modules for the browser. +* [Rollup](https://github.com/rollup/rollup) - Next-generation ES6 module bundler. +* [Brunch](https://github.com/brunch/brunch) - Fast front-end web app build tool with simple declarative config. +* [Parcel](https://github.com/parcel-bundler/parcel) - Blazing fast, zero configuration web application bundler. + + +## Testing Frameworks + +### Frameworks + +* [mocha](https://github.com/mochajs/mocha) - Simple, flexible, fun JavaScript test framework for node.js & the browser. +* [jasmine](https://github.com/jasmine/jasmine) - DOM-less simple JavaScript testing framework. +* [qunit](https://github.com/jquery/qunit) - An easy-to-use JavaScript Unit Testing framework. +* [jest](https://github.com/facebook/jest) - Painless JavaScript Unit Testing. +* [prova](https://github.com/azer/prova) - Node & Browser test runner based on Tape and Browserify +* [DalekJS](https://github.com/dalekjs/dalek) - Automated cross browser functional testing with JavaScript +* [Protractor](https://github.com/angular/protractor) - Protractor is an end-to-end test framework for AngularJS applications. +* [tape](https://github.com/substack/tape) - Tap-producing test harness for node and browsers. +* [TestCafe](https://github.com/DevExpress/testcafe) - Automated browser testing for the modern web development stack. +* [ava](https://github.com/avajs/ava) - 🚀 Futuristic JavaScript test runner +* [Cypress](https://www.cypress.io/) - Complete end-to-end testing framework for anything that runs in a browser and beyond. + +### Assertion + +* [chai](https://github.com/chaijs/chai) - BDD / TDD assertion framework for node.js and the browser that can be paired with any testing framework. +* [Enzyme](http://airbnb.io/enzyme/index.html) - Enzyme is a JavaScript Testing utility for React that makes it easier to assert, manipulate, and traverse your React Components' output. +* [react testing library](https://github.com/kentcdodds/react-testing-library) - Simple and complete React DOM testing utilities that encourage good testing practices. +* [Sinon.JS](https://github.com/sinonjs/sinon) - Test spies, stubs, and mocks for JavaScript. +* [expect.js](https://github.com/Automattic/expect.js) - Minimalistic BDD-style assertions for Node.JS and the browser. +* [proxyquire](https://github.com/thlorenz/proxyquire) - Stub nodejs's require. + +### Coverage + +* [istanbul](https://github.com/gotwarlost/istanbul) - Yet another JS code coverage tool. +* [blanket](https://github.com/alex-seville/blanket) - A simple code coverage library for JavaScript. Designed to be easy to install and use, for both browser and nodejs. +* [JSCover](https://github.com/tntim96/JSCover) - JSCover is a tool that measures code coverage for JavaScript programs. + +### Runner + +* [phantomjs](https://github.com/ariya/phantomjs) - Scriptable Headless WebKit. +* [slimerjs](https://github.com/laurentj/slimerjs) - A PhantomJS-like tool running Gecko. +* [casperjs](https://github.com/casperjs/casperjs) - Navigation scripting & testing utility for PhantomJS and SlimerJS. +* [zombie](https://github.com/assaf/zombie) - Insanely fast, full-stack, headless browser testing using node.js. +* [totoro](https://github.com/totorojs/totoro) - A simple and stable cross-browser testing tool. +* [karma](https://github.com/karma-runner/karma) - Spectacular Test Runner for JavaScript. +* [nightwatch](https://github.com/nightwatchjs/nightwatch) - UI automated testing framework based on node.js and selenium webdriver. +* [intern](https://github.com/theintern/intern) - A next-generation code testing stack for JavaScript. +* [yolpo](http://www.yolpo.com) - A statement-by-statement JavaScript interpreter in the browser. +* [puppeteer](https://github.com/GoogleChrome/puppeteer) - Headless Chrome Node.js API by official Google Chrome team. +* [webdriverio](https://github.com/webdriverio/webdriverio) - Next-gen WebDriver test automation framework for Node.js. + +## QA Tools + +* [prettier](https://github.com/prettier/prettier) - Prettier is an opinionated code formatter. +* [JSHint](https://github.com/jshint/jshint/) - JSHint is a tool that helps to detect errors and potential problems in your JavaScript code. +* [jscs](https://github.com/jscs-dev/node-jscs) - JavaScript Code Style checker. +* [jsfmt](https://github.com/rdio/jsfmt) - For formatting, searching, and rewriting JavaScript. +* [jsinspect](https://github.com/danielstjules/jsinspect) - Detect copy-pasted and structurally similar code. +* [buddy.js](https://github.com/danielstjules/buddy.js) - Magic number detection for JavaScript. +* [ESLint](https://github.com/eslint/eslint) - A fully pluggable tool for identifying and reporting on patterns in JavaScript. +* [JSLint](https://github.com/douglascrockford/JSLint) - High-standards, strict & opinionated code quality tool, aiming to keep only good parts of the language. +* [JavaScript Standard Style](https://github.com/feross/standard) - Opinionated, no-configuration style guide, style checker, and formatter +* [Pre-evaluate code at buildtime](https://github.com/kentcdodds/preval.macro) - Pre-evaluate your front end javascript code at build-time + +## MVC Frameworks and Libraries + +* [angular.js](https://github.com/angular/angular.js) - HTML enhanced for web apps. +* [aurelia](http://aurelia.io) - A JavaScript client framework for mobile, desktop and web. +* [backbone](https://github.com/jashkenas/backbone) - Give your JS App some Backbone with Models, Views, Collections, and Events. +* [ember.js](https://github.com/emberjs/ember.js) - A JavaScript framework for creating ambitious web applications. +* [meteor](https://github.com/meteor/meteor) - An ultra-simple, database-everywhere, data-on-the-wire, pure-javascript web framework. +* [ractive](https://github.com/ractivejs/ractive) - Next-generation DOM manipulation. +* [vue](https://github.com/vuejs/vue) - Intuitive, fast & composable MVVM for building interactive interfaces. +* [svelte](https://github.com/sveltejs/svelte) - Svelte is a new way to build web applications. It's a compiler that takes your declarative components and converts them into efficient JavaScript that surgically updates the DOM. +* [knockout](https://github.com/knockout/knockout) - Knockout makes it easier to create rich, responsive UIs with JavaScript. +* [spine](https://github.com/spine/spine) - Lightweight MVC library for building JavaScript applications. +* [espresso.js](https://github.com/techlayer/espresso.js) - A minimal JavaScript library for crafting user interfaces. +* [canjs](https://github.com/canjs/canjs) - Can do JS, better, faster, easier. +* [react](https://facebook.github.io/react/) - A library for building user interfaces. It's declarative, efficient, and extremely flexible. Works with a Virtual DOM. +* [hyperapp](https://github.com/hyperapp/hyperapp) - 1kb JavaScript library for building frontend applications. +* [preact](https://github.com/developit/preact) - Fast 3kb React alternative with the same ES6 API. Components & Virtual DOM. +* [nativescript](https://github.com/NativeScript/NativeScript) - Build truly native cross-platform iOS and Android apps with JavaScript. +* [react-native](https://github.com/facebook/react-native) - A framework for building native apps with React. +* [riot](https://github.com/riot/riot) - React-like library, but with very small size. +* [thorax](https://github.com/walmartlabs/thorax) - Strengthening your Backbone. +* [chaplin](https://github.com/chaplinjs/chaplin) - An architecture for JavaScript applications using the Backbone.js library. +* [marionette](https://github.com/marionettejs/backbone.marionette) - A composite application library for Backbone.js that aims to simplify the construction of large scale JavaScript applications. +* [ripple](https://github.com/ripplejs/ripple) - A tiny foundation for building reactive views. +* [rivets](https://github.com/mikeric/rivets) - Lightweight and powerful data binding + templating solution. +* [derby](https://github.com/derbyjs/derby) - MVC framework making it easy to write realtime, collaborative applications that run in both Node.js and browsers. + * [derby-awesome](https://github.com/russll/awesome-derby) - A collection of awesome derby components +* [way.js](https://github.com/gwendall/way.js) - Simple, lightweight, persistent two-way databinding. +* [mithril.js](https://github.com/lhorie/mithril.js) - Mithril is a client-side MVC framework (Light-weight, Robust, Fast). +* [jsblocks](https://github.com/astoilkov/jsblocks) - jsblocks is better MV-ish framework. +* [LiquidLava](http://www.lava-framework.com/) - Transparent MVC framework for building user interfaces. +* [feathers](https://github.com/feathersjs/feathers) - A minimalist real-time JavaScript framework for tomorrow's apps. +* [Keo](https://github.com/Wildhoney/Keo) - Functional stateless React components with Shadow DOM support. +* [atvjs](https://github.com/emadalam/atvjs) - Blazing fast Apple TV application development using pure JavaScript. + +## Node-Powered CMS Frameworks + +* [KeystoneJS](https://github.com/keystonejs/keystone) - powerful CMS and web app framework. +* [Reaction Commerce](https://github.com/reactioncommerce/reaction) - reactive CMS, real-time architecture and design. +* [Ghost](https://github.com/tryghost/Ghost) - simple, powerful publishing platform. +* [Apostrophe](https://github.com/punkave/apostrophe) - CMS with content editing and essential services. +* [We.js](https://github.com/wejs/we/) - framework for real time apps, sites or blogs. +* [Hatch.js](https://github.com/inventures/hatchjs) - CMS platform with social features. +* [TaracotJS](https://github.com/xtremespb/taracotjs-generator/) - fast and minimalist CMS based on Node.js. +* [Nodizecms](https://github.com/nodize/nodizecms) - CMS for CoffeeScript lovers. +* [Cody](https://github.com/jcoppieters/cody) - CMS with WSYWYG editor. +* [PencilBlue](https://github.com/pencilblue/pencilblue/) - CMS and blogging platform. +* [Strapi](https://github.com/strapi/strapi) - Open source Node.js Headless CMS to easily build customisable APIs. +* [Factor](https://github.com/fiction-com/factor) - The Javascript CMS + +## Templating Engines +*Templating engines allow you to perform string interpolation.* + +* [mustache.js](https://github.com/janl/mustache.js) - Minimal templating with {{mustaches}} in JavaScript. +* [handlebars.js](https://github.com/wycats/handlebars.js/) - An extension to the Mustache templating language. +* [nunjucks](https://mozilla.github.io/nunjucks/) - A rich and powerful templating language for JavaScript from Mozilla. +* [hogan.js](https://github.com/twitter/hogan.js) - A compiler for the Mustache templating language. +* [doT](https://github.com/olado/doT) - The fastest + concise JavaScript template engine for nodejs and browsers. +* [dustjs](https://github.com/linkedin/dustjs/) - Asynchronous templates for the browser and node.js. +* [eco](https://github.com/sstephenson/eco/) - Embedded CoffeeScript templates. +* [JavaScript-Templates](https://github.com/blueimp/JavaScript-Templates) - < 1KB lightweight, fast & powerful JavaScript templating engine with zero dependencies. +* [t.js](https://github.com/jasonmoo/t.js) - A tiny JavaScript templating framework in ~400 bytes gzipped. +* [Pug](https://github.com/pugjs/pug) - Robust, elegant, feature rich template engine for nodejs. (formerly known as Jade) +* [EJS](https://github.com/mde/ejs) - Effective JavaScript templating. +* [xtemplate](https://github.com/xtemplate/xtemplate) - eXtensible Template Engine lib for node and the browser +* [marko](https://github.com/marko-js/marko) - A fast, lightweight, HTML-based templating engine for Node.js and the browser with async, streaming, custom tags and CommonJS modules as compiled output. +* [swig](http://paularmstrong.github.io/swig/) - A simple, powerful, and extendable Node.js and browser-based JavaScript template engine. + +## Articles and Posts + +* [The JavaScript that you should know](https://medium.com/@pedropolisenso/o-javasscript-que-você-deveria-conhecer-b70e94d1d706) - Article about concepts of JavaScript Functional. +* [How JavaScript works](https://blog.sessionstack.com/tagged/tutorial) - A series of articles about the building blocks of JavaScript. + +## Data Visualization +*Data visualization tools for the web.* + +* [d3](https://github.com/d3/d3) - A JavaScript visualization library for HTML and SVG. + * [metrics-graphics](https://github.com/mozilla/metrics-graphics) - A library optimized for concise, principled data graphics and layouts. +* [three.js](https://github.com/mrdoob/three.js) - JavaScript 3D library. +* [Chart.js](https://github.com/chartjs/Chart.js) - Simple HTML5 Charts using the <canvas> tag. +* [paper.js](https://github.com/paperjs/paper.js) - The Swiss Army Knife of Vector Graphics Scripting – Scriptographer ported to JavaScript and the browser, using HTML5 Canvas. +* [fabric.js](https://github.com/kangax/fabric.js) - JavaScript Canvas Library, SVG-to-Canvas (& canvas-to-SVG) Parser. +* [peity](https://github.com/benpickles/peity) - Progressive bar, line and pie charts. +* [raphael](https://github.com/DmitryBaranovskiy/raphael) - JavaScript Vector Library. +* [echarts](https://github.com/ecomfe/echarts) - Enterprise Charts. +* [vis](https://github.com/almende/vis) - Dynamic, browser-based visualization library. +* [two.js](https://github.com/jonobr1/two.js) - A renderer agnostic two-dimensional drawing api for the web. +* [g.raphael](https://github.com/DmitryBaranovskiy/g.raphael) - Charts for Raphaël. +* [sigma.js](https://github.com/jacomyal/sigma.js) - A JavaScript library dedicated to graph drawing. +* [arbor](https://github.com/samizdatco/arbor) - A graph visualization library using web workers and jQuery. +* [cubism](https://github.com/square/cubism) - A D3 plugin for visualizing time series. +* [dc.js](https://github.com/dc-js/dc.js) - Multi-Dimensional charting built to work natively with crossfilter rendered with d3.js +* [vega](https://github.com/trifacta/vega) - A visualization grammar. +* [processing.js](http://processingjs.org/) - Processing.js makes your data visualizations work using web standards and without any plug-ins. +* [envisionjs](https://github.com/HumbleSoftware/envisionjs) - Dynamic HTML5 visualization. +* [rickshaw](https://github.com/shutterstock/rickshaw) - JavaScript toolkit for creating interactive real-time graphs. +* [flot](https://github.com/flot/flot) - Attractive JavaScript charts for jQuery. +* [morris.js](https://github.com/morrisjs/morris.js) - Pretty time-series line graphs. +* [nvd3](https://github.com/novus/nvd3) - Build re-usable charts and chart components for d3.js. +* [svg.js](https://github.com/wout/svg.js) - A lightweight library for manipulating and animating SVG. +* [heatmap.js](https://github.com/pa7/heatmap.js) - JavaScript Library for HTML5 canvas based heatmaps. +* [jquery.sparkline](https://github.com/gwatts/jquery.sparkline) - A plugin for the jQuery JavaScript library to generate small sparkline charts directly in the browser. +* [trianglify](https://github.com/qrohlf/trianglify) - Low poly style background generator with d3.js. +* [d3-cloud](https://github.com/jasondavies/d3-cloud) - Create word clouds in JavaScript. +* [d4](https://github.com/heavysixer/d4) - A friendly reusable charts DSL for D3. +* [dimple.js](http://dimplejs.org) - Easy charts for business analytics powered by d3. +* [chartist-js](https://github.com/gionkunz/chartist-js) - Simple responsive charts. +* [epoch](https://github.com/epochjs/epoch) - A general purpose real-time charting library. +* [c3](https://github.com/c3js/c3) - D3-based reusable chart library. +* [BabylonJS](https://github.com/BabylonJS/Babylon.js) - A framework for building 3D games with HTML 5 and WebGL. +* [recharts](https://github.com/recharts/recharts) - Redefined chart library built with React and D3. +* [GraphicsJS](https://www.graphicsjs.org) - A lightweight JavaScript graphics library with the intuitive API, based on SVG/VML technology. +* [mxGraph](https://github.com/jgraph/mxgraph) - Diagramming library that enables interactive graph and charting applications to be quickly created that run natively in any major browser that is supported by its vendor. + +There're also some great commercial libraries, like [amchart](https://www.amcharts.com/), [anychart](http://www.anychart.com), [plotly](https://plot.ly/), and [highchart](http://www.highcharts.com/). + + +## Timeline + +* [TimelineJS v3](https://github.com/NUKnightLab/TimelineJS3) - A Storytelling Timeline built in JavaScript. +* [timesheet.js](https://github.com/sbstjn/timesheet.js) - JavaScript library for simple HTML5 & CSS3 time sheets. + +## Spreadsheet + +* [HANDSONTABLE](https://github.com/handsontable/handsontable) - Handsontable is a JavaScript/HTML5 Spreadsheet Library for Developers + +## Editors + +* [ace](https://github.com/ajaxorg/ace) - Ace (Ajax.org Cloud9 Editor). +* [CodeMirror](https://github.com/codemirror/CodeMirror) - In-browser code editor. +* [esprima](https://github.com/ariya/esprima) - ECMAScript parsing infrastructure for multipurpose analysis. +* [quill](https://github.com/quilljs/quill) - A cross browser rich text editor with an API. +* [medium-editor](https://github.com/yabwe/medium-editor) - Medium.com WYSIWYG editor clone. +* [pen](https://github.com/sofish/pen) - enjoy live editing (+markdown). +* [jquery-notebook](https://github.com/raphaelcruzeiro/jquery-notebook) - A simple, clean and elegant text editor. Inspired by the awesomeness of Medium. +* [bootstrap-wysiwyg](https://github.com/mindmup/bootstrap-wysiwyg) - Tiny bootstrap-compatible WYSIWYG rich text editor. +* [ckeditor-releases](https://github.com/ckeditor/ckeditor-releases) - The best web text editor for everyone. +* [editor](https://github.com/lepture/editor) - A markdown editor. still on development. +* [EpicEditor](https://github.com/OscarGodson/EpicEditor) - An embeddable JavaScript Markdown editor with split fullscreen editing, live previewing, automatic draft saving, offline support, and more. +* [jsoneditor](https://github.com/josdejong/jsoneditor) - A web-based tool to view, edit and format JSON. +* [vim.js](https://github.com/coolwanglu/vim.js) - JavaScript port of Vim with a persistent `~/.vimrc`. +* [Squire](https://github.com/neilj/Squire) - HTML5 rich text editor. +* [TinyMCE](https://github.com/tinymce/tinymce) - The JavaScript Rich Text editor. +* [trix](https://github.com/basecamp/trix) - A rich text editor for everyday writing. By Basecamp. +* [Trumbowyg](https://github.com/Alex-D/Trumbowyg) - A lightweight and amazing WYSIWYG JavaScript editor. +* [Draft.js](https://github.com/facebook/draft-js) - A React framework for building text editors. +* [bootstrap-wysihtml5](https://github.com/jhollingworth/bootstrap-wysihtml5) - Simple, beautiful wysiwyg editor +* [wysihtml5](https://github.com/xing/wysihtml5) - Open source rich text editor based on HTML5 and the progressive-enhancement approach. Uses a sophisticated security concept and aims to generate fully valid HTML5 markup by preventing unmaintainable tag soups and inline styles. +* [raptor-editor](https://github.com/PANmedia/raptor-editor) - Raptor, an HTML5 WYSIWYG content editor! +* [popline](https://github.com/kenshin54/popline) - Popline is an HTML5 Rich-Text-Editor Toolbar. +* [Summernote](https://github.com/summernote/summernote) - Super simple WYSIWYG editor. + + +## Documentation + +* [DevDocs](http://devdocs.io/) is an all-in-one API documentation reader with a fast, organized, and consistent interface. +* [dexy](http://www.dexy.it/) is a free-form literate documentation tool for writing any kind of technical document incorporating code. +* [docco](http://jashkenas.github.io/docco/) is a quick-and-dirty, hundred-line-long, literate-programming-style documentation generator. +* [styledocco](http://jacobrask.github.io/styledocco/) generates documentation and style guide documents from your stylesheets. +* [Ronn](https://github.com/rtomayko/ronn) builds manuals. It converts simple, human readable textfiles to roff for terminal display, and also to HTML for the web. +* [dox](https://github.com/tj/dox) is a JavaScript documentation generator written with node. Dox no longer generates an opinionated structure or style for your docs, it simply gives you a JSON representation, allowing you to use markdown and JSDoc-style tags. +* [jsdox](https://github.com/sutoiku/jsdox) is a JSDoc3 to Markdown documentation generator. +* [ESDoc](https://github.com/esdoc/esdoc) is a good documentation generator for JavaScript. +* [YUIDoc](http://yui.github.io/yuidoc/) is a Node.js application that generates API documentation from comments in source, using a syntax similar to tools like Javadoc and Doxygen. +* [coddoc](http://doug-martin.github.io/coddoc/) is a jsdoc parsing library. Coddoc is different in that it is easily extensible by allowing users to add tag and code parsers through the use of coddoc.addTagHandler and coddoc.addCodeHandler. coddoc also parses source code to be used in APIs. +* [sphinx](http://www.sphinx-doc.org/) a tool that makes it easy to create intelligent and beautiful documentation +* [Using JSDoc](http://usejsdoc.org/) +* [Beautiful docs](http://beautifuldocs.com/) is a documentation viewer based on markdown files. +* [documentation.js](http://documentation.js.org) - API documentation generator with support for ES2015+ and flow annotation. +* [jsduck](https://github.com/senchalabs/jsduck) - API documentation generator made for Sencha JavaScript frameworks, but can be used for other frameworks too. +* [codecrumbs](https://github.com/Bogdan-Lyashenko/codecrumbs) is a visual tool for learning and documenting a codebase by putting breadcrumbs in source code. + + +## Files +*Libraries for working with files.* + +* [Papa Parse](https://github.com/mholt/PapaParse) - A powerful CSV library that supports parsing CSV files/strings and also exporting to CSV. +* [jBinary](https://github.com/jDataView/jBinary) - High-level I/O (loading, parsing, manipulating, serializing, saving) for binary files with declarative syntax for describing file types and data structures. +* [diff2html](https://github.com/rtfpessoa/diff2html) - Git diff output parser and pretty HTML generator. +* [jsPDF](https://github.com/MrRio/jsPDF) - JavaScript PDF generation. +* [PDF.js](https://github.com/mozilla/pdf.js) - PDF Reader in JavaScript. + + +## Functional Programming +*Functional programming libraries to extend JavaScript’s capabilities.* + +* [underscore](https://github.com/jashkenas/underscore) - JavaScript's utility _ belt. +* [lodash](https://github.com/lodash/lodash) - A utility library delivering consistency, customization, performance, & extras. +* [Sugar](https://github.com/andrewplummer/Sugar) - A JavaScript library for working with native objects. +* [lazy.js](https://github.com/dtao/lazy.js) - Like Underscore, but lazier. +* [ramda](https://github.com/CrossEye/ramda) - A practical functional library for JavaScript programmers. +* [mout](https://github.com/mout/mout) - Modular JavaScript Utilities. +* [mesh](https://github.com/crcn/mesh.js) - Streamable data synchronization utility. +* [preludejs](https://github.com/alanrsoares/prelude-js) - Hardcore Functional Programming for JavaScript. + + +## Reactive Programming +*Reactive programming libraries to extend JavaScript’s capabilities.* + +* [RxJS](https://github.com/ReactiveX/rxjs) - A reactive programming library for JavaScript. +* [Bacon](https://github.com/baconjs/bacon.js) - FRP (functional reactive programming) library for JavaScript. +* [Kefir](https://github.com/pozadi/kefir) - FRP library for JavaScript inspired by Bacon.js and RxJS with focus on high performance and low memory consumption. +* [Highland](http://highlandjs.org/) - Re-thinking the JavaScript utility belt, Highland manages synchronous and asynchronous code easily, using nothing more than standard JavaScript and Node-like Streams. +* [Most.js](https://github.com/cujojs/most) - high performance FRP library. +* [MobX](https://github.com/mobxjs/mobx) - TFRP library for simple, scalable state management. +* [Cycle.js](https://cycle.js.org) - A functional and reactive JavaScript library for cleaner code. + +## Data Structure +*Data structure libraries to build a more sophisticated application.* + +* [immutable-js](https://github.com/facebook/immutable-js) - Immutable Data Collections including Sequence, Range, Repeat, Map, OrderedMap, Set and a sparse Vector. +* [mori](https://github.com/swannodette/mori) - A library for using ClojureScript's persistent data structures and supporting API from the comfort of vanilla JavaScript. +* [buckets](https://github.com/mauriciosantos/Buckets-JS) - A complete, fully tested and documented data structure library written in JavaScript. +* [hashmap](https://github.com/flesler/hashmap) - Simple hashmap implementation that supports any kind of keys. + + +## Date +*Date Libraries.* + +* [moment](https://github.com/moment/moment) - Parse, validate, manipulate, and display dates in JavaScript. +* [moment-timezone](https://github.com/moment/moment-timezone) - Timezone support for moment.js. +* [jquery-timeago](https://github.com/rmm5t/jquery-timeago) - A jQuery plugin that makes it easy to support automatically updating fuzzy timestamps (e.g. "4 minutes ago"). +* [timezone-js](https://github.com/mde/timezone-js) - Timezone-enabled JavaScript Date object. Uses Olson zoneinfo files for timezone data. +* [date](https://github.com/MatthewMueller/date) - Date() for humans. +* [ms.js](https://github.com/rauchg/ms.js) - Tiny millisecond conversion utility. +* [countdown.js](https://github.com/gumroad/countdown.js) - Super simple countdowns. +* [timeago.js](https://github.com/hustcc/timeago.js) - Simple library (less then 2kb) used to format date with `*** time ago` statement. +* [fecha](https://github.com/taylorhakes/fecha) - Lightweight date formatting and parsing (~2KB). Meant to replace parsing and formatting functionality of moment.js. +* [date-fns](https://github.com/date-fns/date-fns) - Modern JavaScript date utility library. +* [map-countdown](https://github.com/dawidjaniga/map-countdown) - A browser countdown built on top of the Google Maps. +* [dayjs](https://github.com/iamkun/dayjs) - Day.js 2KB immutable date library alternative to Moment.js with the same modern API. + +## String +*String Libraries.* + +* [voca](https://github.com/panzerdp/voca) - The ultimate JavaScript string library +* [selecting](https://github.com/EvandroLG/selecting) - A library that allows you to access the text selected by the user. +* [underscore.string](https://github.com/epeli/underscore.string) - String manipulation extensions for Underscore.js JavaScript library. +* [string.js](https://github.com/jprichardson/string.js) - Extra JavaScript string methods. +* [he](https://github.com/mathiasbynens/he) - A robust HTML entity encoder/decoder written in JavaScript. +* [multiline](https://github.com/sindresorhus/multiline) - Multiline strings in JavaScript. +* [query-string](https://github.com/sindresorhus/query-string) - Parse and stringify URL query strings. +* [URI.js](https://github.com/medialize/URI.js/) - JavaScript URL mutation library. +* [jsurl](https://github.com/Mikhus/domurl) - Lightweight URL manipulation with JavaScript. +* [sprintf.js](https://github.com/alexei/sprintf.js) - A sprintf implementation. +* [url-pattern](https://github.com/snd/url-pattern) - Easier than regex string matching patterns for urls and other strings. Turn strings into data or data into strings. +* [plexis](https://github.com/plexis-js/plexis) - Lo-fi, powerful, community-driven string manipulation library. + +## Number + +* [Numeral-js](https://github.com/adamwdraper/Numeral-js) - A JavaScript library for formatting and manipulating numbers. +* [chance.js](https://github.com/chancejs/chancejs) - Random generator helper in JavaScript. Can generate numbers, strings etc. +* [odometer](https://github.com/HubSpot/odometer) - Smoothly transitions numbers with ease. +* [accounting.js](https://github.com/josscrowcroft/accounting.js) - A lightweight JavaScript library for number, money and currency formatting - fully localisable, zero dependencies. +* [money.js](https://github.com/josscrowcroft/money.js) - A tiny (1kb) JavaScript currency conversion library, for web & nodeJS. +* [Fraction.js](https://github.com/infusion/Fraction.js) - A rational number library for JavaScript. +* [Complex.js](https://github.com/infusion/Complex.js) - A complex number library for JavaScript. +* [Polynomial.js](https://github.com/infusion/Polynomial.js) - A polynomials library for JavaScript. + + +## Storage + +* [store.js](https://github.com/marcuswestin/store.js) - LocalStorage wrapper for all browsers without using cookies or flash. Uses localStorage, globalStorage, and userData behavior under the hood. +* [localForage](https://github.com/mozilla/localForage) - Offline storage, improved. Wraps IndexedDB, WebSQL, or localStorage using a simple but powerful API. +* [jStorage](https://github.com/andris9/jStorage) - jStorage is a simple key/value database to store data on browser side. +* [cross-storage](https://github.com/zendesk/cross-storage) - Cross domain local storage, with permissions. +* [basket.js](https://github.com/addyosmani/basket.js) - A script and resource loader for caching & loading scripts with localStorage. +* [bag.js](https://github.com/nodeca/bag.js) - A caching script and resource loader, similar to basket.js, but with additional k/v interface and localStorage / websql / indexedDB support. +* [basil.js](https://github.com/Wisembly/basil.js) - The missing JavaScript smart persistent layer. +* [jquery-cookie](https://github.com/carhartl/jquery-cookie) - A simple, lightweight jQuery plugin for reading, writing and deleting cookies. +* [js-cookie](https://github.com/js-cookie/js-cookie) - A simple, lightweight JavaScript API for handling browser cookies. +* [Cookies](https://github.com/ScottHamper/Cookies) - JavaScript Client-Side Cookie Manipulation Library. +* [DB.js](https://github.com/aaronpowell/db.js/) - Promise based IndexDB Wrapper library. +* [lawnchair.js](https://github.com/brianleroux/lawnchair/) - Simple client-side JSON storage. +* [sql.js](https://github.com/kripken/sql.js) - SQLite compiled to JavaScript through Emscripten. +* [crumbsjs](https://github.com/nirtz89/crumbsjs) - A lightweight vanilla ES6 cookies and local storage JavaScript library. + + +## Color + +* [randomColor](https://github.com/davidmerfield/randomColor) - A color generator for JavaScript. +* [chroma.js](https://github.com/gka/chroma.js) - JavaScript library for all kinds of color manipulations. +* [color](https://github.com/Qix-/color) - JavaScript color conversion and manipulation library. +* [colors](https://github.com/mrmrs/colors) - Smarter defaults for colors on the web. +* [PleaseJS](https://github.com/Fooidge/PleaseJS) - JavaScript Library for creating random pleasing colors and color schemes. +* [TinyColor](https://github.com/bgrins/TinyColor) - Fast, small color manipulation and conversion for JavaScript. +* [Vibrant.js](https://github.com/jariz/vibrant.js/) - Extract prominent colors from an image. + +## I18n And L10n +*Localization (l10n) and internationalization (i18n) JavaScript libraries.* + +* [i18next](https://github.com/i18next/i18next) - internationalisation (i18n) with JavaScript the easy way. +* [polyglot](https://github.com/airbnb/polyglot.js) - tiny i18n helper library. +* [babelfish](https://github.com/nodeca/babelfish/) - i18n with human friendly API and built in plurals support. +* [ttag](https://github.com/ttag-org/ttag) - Modern javascript i18n localization library based on ES6 tagged templates and the good old GNU gettext. + +## Control Flow + +* [async](https://github.com/caolan/async) - Async utilities for node and the browser. +* [q](https://github.com/kriskowal/q) - A tool for making and composing asynchronous promises in JavaScript. +* [step](https://github.com/creationix/step/) - An async control-flow library that makes stepping through logic easy. +* [contra](https://github.com/bevacqua/contra/) - Asynchronous flow control with a functional taste to it. +* [Bluebird](https://github.com/petkaantonov/bluebird/) - fully featured promise library with focus on innovative features and performance. +* [when](https://github.com/cujojs/when) - A solid, fast Promises/A+ and when() implementation, plus other async goodies. +* [ObjectEventTarget](https://github.com/gartz/ObjectEventTarget) - Provide a prototype that add support to event listeners (with same behavior of EventTarget from DOMElements available on browsers). +* [sporadic](https://github.com/marcoonroad/sporadic) - Composable concurrency abstractions (such as streams, coroutines and Go-like channels) on top of promises, for Node and browser engines. + + +## Routing + +* [director](https://github.com/flatiron/director) - A tiny and isomorphic URL router for JavaScript. +* [page.js](https://github.com/visionmedia/page.js) - Micro client-side router inspired by the Express router (~1200 bytes). +* [pathjs](https://github.com/mtrpcic/pathjs) - Simple, lightweight routing for web browsers. +* [crossroads](https://github.com/millermedeiros/crossroads.js) - JavaScript Routes. +* [davis.js](https://github.com/olivernn/davis.js) - RESTful degradable JavaScript routing using pushState. +* [navaid](https://github.com/lukeed/navaid) - A navigation aid (aka, router) for the browser in 850 bytes~! + + +## Security + +* [DOMPurify](https://github.com/cure53/DOMPurify) - A DOM-only, super-fast, uber-tolerant XSS sanitizer for HTML, MathML and SVG. +* [js-xss](https://github.com/leizongmin/js-xss) - Sanitize untrusted HTML (to prevent XSS) with a configuration specified by a Whitelist. +* [xss-filters](https://github.com/yahoo/xss-filters) - Secure XSS Filters by Yahoo. + + +## Log + +* [log](https://github.com/adamschwartz/log) - Console.log with style. +* [Conzole](https://github.com/Oaxoa/Conzole) - A debug panel built in JavaScript that wraps JavaScript native console object methods and functionality in a panel displayed inside the page. +* [console.log-wrapper](https://github.com/patik/console.log-wrapper) - Log to the console in any browser with clarity. +* [loglevel](https://github.com/pimterry/loglevel) - Minimal lightweight logging for JavaScript, adding reliable log level methods to wrap any available console.log methods. +* [minilog](http://mixu.net/minilog/) – Lightweight client & server-side logging with Stream-API backends. +* [storyboard](http://guigrpa.github.io/storyboard/) - Universal logging library + Chrome extension; it lets you see all client and server tasks triggered by a user action in a single place. + +## RegExp +* [RegEx101](https://regex101.com/#javascript) - Online regex tester and debugger for JavaScript. Also supports Python, PHP and PCRE. +* [RegExr](http://regexr.com) - HTML/JS based tool for creating, testing, and learning about Regular Expressions. +* [RegExpBuilder](https://github.com/thebinarysearchtree/regexpbuilderjs) - Create regular expressions using chained methods. + + +## Voice Command + +* [annyang](https://github.com/TalAter/annyang) - A JavaScript library for adding voice commands to your site, using speech recognition. +* [voix.js](https://github.com/pazguille/voix) - A JavaScript library to add voice commands to your sites, apps or games. + + +## API + +* [axios](https://github.com/axios/axios) - Promise based HTTP client for the browser and node.js. +* [bottleneck](https://github.com/SGrondin/bottleneck) - A powerful rate limiter that makes throttling easy. +* [oauth-signature-js](https://github.com/bettiolo/oauth-signature-js) - JavaScript OAuth 1.0a signature generator for node and the browser. +* [amygdala](https://github.com/lincolnloop/amygdala) - RESTful HTTP client for JavaScript powered web applications. +* [jquery.rest](https://github.com/jpillora/jquery.rest) - A jQuery plugin for easy consumption of RESTful APIs. +* [Rails Ranger](https://github.com/victor-am/rails-ranger) - An opinionated REST client for Ruby on Rails APIs. +* [wretch](https://github.com/elbywan/wretch) - A tiny wrapper built around fetch with an intuitive syntax. +* [Bearer.sh](https://github.com/Bearer/bearer-js) - Universal API client that supports OAuth / API Key / Basic / etc. + +## Streaming + +* [Tailor](https://github.com/zalando/tailor) - Streaming layout service for front-end microservices, inspired by Facebook's BigPipe. + + +## Vision Detection + +* [tracking.js](https://github.com/eduardolundgren/tracking.js) - A modern approach for Computer Vision on the web. +* [ocrad.js](https://github.com/antimatter15/ocrad.js) - OCR in JavaScript via Emscripten. + + +## Machine Learning + +* [ConvNetJS](https://github.com/karpathy/convnetjs) - Deep Learning in JavaScript. Train Convolutional Neural Networks (or ordinary ones) in your browser. +* [DN2A](https://github.com/dn2a/dn2a-javascript) - Digital Neural Networks Architecture. +* [Brain.js](https://github.com/harthur/brain) - Neural networks in JavaScript. +* [Mind.js](https://github.com/stevenmiller888/mind) - A flexible neural network library. +* [Synaptic.js](https://github.com/cazala/synaptic) - Architecture-free neural network library for node.js and the browser. +* [TensorFlow.js](https://js.tensorflow.org) - A JavaScript library for training and deploying ML models in the browser and on Node.js. +* [ml5.js](https://ml5js.org) - Friendly Machine Learning for the Web. +* [Synapses](https://github.com/mrdimosthenis/Synapses) - Lightweight cross-platform Neural Network library. + + +## Browser Detection + +* [bowser](https://github.com/ded/bowser) - a browser detector. + +## Benchmark + +* [benchmark.js](https://github.com/bestiejs/benchmark.js) - A benchmarking library. As used on jsPerf.com. +* [matcha](https://github.com/logicalparadox/matcha) - A caffeine driven, simplistic approach to benchmarking. + +## Code highlighting + +* [Highlight.js](https://github.com/isagalaev/highlight.js) - JavaScript syntax highlighter. +* [PrismJS](https://github.com/PrismJS/prism) - Lightweight, robust, elegant syntax highlighting. + + +## Loading Status +*Libraries for indicate load status.* + +* [Mprogress.js](https://github.com/lightningtgc/MProgress.js) - Create Google Material Design progress linear bars. +* [NProgress](http://ricostacruz.com/nprogress/) - Slim progress bars for Ajax'y applications. +* [Spin.js](https://github.com/fgnass/spin.js) - A spinning activity indicator. +* [progress.js](https://github.com/usablica/progress.js) - Create and manage progress bar for every objects on the page. +* [progressbar.js](https://github.com/kimmobrunfeldt/progressbar.js) - Beautiful and responsive progress bars with animated SVG paths. +* [pace](https://github.com/HubSpot/pace) - Automatically add a progress bar to your site. +* [topbar](https://github.com/buunguyen/topbar) - Tiny & beautiful site-wide progress indicator. +* [nanobar](https://github.com/jacoborus/nanobar) - Very lightweight progress bars. No jQuery. +* [PageLoadingEffects](https://github.com/codrops/PageLoadingEffects) - Modern ways of revealing new content using SVG animations. +* [SpinKit](https://github.com/tobiasahlin/SpinKit) - A collection of loading indicators animated with CSS. +* [Ladda](https://github.com/hakimel/Ladda) - Buttons with built-in loading indicators. +* [css-loaders](https://github.com/lukehaas/css-loaders) - A collection of loading spinners animated with CSS + +Besides libraries, there're [Collection on Codepen](http://codepen.io/collection/HtAne/), and generators like [Ajaxload](http://www.ajaxload.info/), [Preloaders](http://preloaders.net/) and [CSSLoad](http://cssload.net/). + + +## Validation + +* [Parsley.js](https://github.com/guillaumepotier/Parsley.js) - Validate your forms, frontend, without writing a single line of JavaScript. +* [jquery-validation](https://github.com/jzaefferer/jquery-validation) - jQuery Validation Plugin. +* [validator.js](https://github.com/chriso/validator.js) - String validation and sanitization. +* [validate.js](https://github.com/rickharrison/validate.js) - Lightweight JavaScript form validation library inspired by CodeIgniter. +* [validatr](https://github.com/jaymorrow/validatr/) - Cross Browser HTML5 Form Validation. +* [FormValidation](http://formvalidation.io/) - The best jQuery plugin to validate form fields. Formerly BootstrapValidator. +* [is.js](https://github.com/arasatasaygin/is.js) - Check types, regexps, presence, time and more. +* [FieldVal](https://github.com/FieldVal/fieldval-js) - multipurpose validation library. Supports both sync and async validation. + + +## Keyboard Wrappers + +* [mousetrap](https://github.com/ccampbell/mousetrap) - Simple library for handling keyboard shortcuts in JavaScript. +* [keymaster](https://github.com/madrobby/keymaster) - A simple micro-library for defining and dispatching keyboard shortcuts. +* [Keypress](https://github.com/dmauro/Keypress) - A keyboard input capturing utility in which any key can be a modifier key. +* [KeyboardJS](https://github.com/RobertWHurst/KeyboardJS) - A JavaScript library for binding keyboard combos without the pain of key codes and key combo conflicts. +* [jquery.hotkeys](https://github.com/jeresig/jquery.hotkeys) - jQuery Hotkeys lets you watch for keyboard events anywhere in your code supporting almost any key combination. +* [jwerty](https://github.com/keithamus/jwerty) - Awesome handling of keyboard events. + + +## Tours And Guides + +* [intro.js](https://github.com/usablica/intro.js) - A better way for new feature introduction and step-by-step users guide for your website and project. +* [shepherd](https://github.com/HubSpot/shepherd) - Guide your users through a tour of your app. +* [bootstrap-tour](https://github.com/sorich87/bootstrap-tour) - Quick and easy product tours with Twitter Bootstrap Popovers. +* [tourist](https://github.com/easelinc/tourist) - Simple, flexible tours for your app. +* [chardin.js](https://github.com/heelhook/chardin.js) - Simple overlay instructions for your apps. +* [pageguide](https://github.com/tracelytics/pageguide) - An interactive guide for web page elements using jQuery and CSS3. +* [hopscotch](https://github.com/linkedin/hopscotch) - A framework to make it easy for developers to add product tours to their pages. +* [joyride](https://github.com/zurb/joyride) - jQuery feature tour plugin. +* [focusable](https://github.com/zzarcon/focusable) - Set a spotlight focus on DOM element adding a overlay layer to the rest of the page. +* [driver.js](https://github.com/kamranahmedse/driver.js) - Powerful yet light-weight, vanilla JavaScript engine to drive the user's focus across the page + +## Notifications + +* [iziToast](https://github.com/dolce/iziToast) - Elegant, responsive, flexible and lightweight notification plugin with no dependencies. +* [messenger](https://github.com/HubSpot/messenger) - Growl-style alerts and messages for your app. +* [noty](https://github.com/needim/noty) - jQuery notification plugin. +* [pnotify](https://github.com/sciactive/pnotify) - JavaScript notifications for Bootstrap, jQuery UI, and the Web Notifications Draft. +* [toastr](https://github.com/CodeSeven/toastr) - Simple JavaScript toast notifications. +* [humane-js](https://github.com/wavded/humane-js) - A simple, modern, browser notification system. +* [smoke.js](https://github.com/hxgf/smoke.js) - Framework-agnostic styled alert system for JavaScript. +* [notie](https://github.com/jaredreich/notie) - Simple notifications and inputs with no dependencies. + + +## Sliders + +* [Swiper](https://github.com/nolimits4web/Swiper) - Mobile touch slider and framework with hardware accelerated transitions. +* [slick](https://github.com/kenwheeler/slick) - The last carousel you'll ever need. +* [slidesJs](http://www.slidesjs.com) - Is a responsive slideshow plug-in for JQuery(1.7.1+) with features like touch and CSS3 transitions +* [FlexSlider](https://github.com/woothemes/FlexSlider) - An awesome, fully responsive jQuery slider plugin. +* [unslider](https://github.com/idiot/unslider) - The simplest jQuery slider there is. +* [sly](https://github.com/darsain/sly) - JavaScript library for one-directional scrolling with item based navigation support. +* [vegas](https://github.com/jaysalvat/vegas) - A jQuery plugin to add beautiful fullscreen backgrounds to your webpages. It even allows Slideshows. +* [Sequence](https://github.com/IanLunn/Sequence) - CSS animation framework for creating responsive sliders, presentations, banners, and other step-based applications. +* [reveal.js](https://github.com/hakimel/reveal.js) - A framework for easily creating beautiful presentations using HTML. +* [impress.js](https://github.com/impress/impress.js) - It's a presentation framework based on the power of CSS3 transforms and transitions in modern browsers and inspired by the idea behind prezi.com. +* [bespoke.js](https://github.com/bespokejs/bespoke) - DIY Presentation Micro-Framework +* [Strut](https://github.com/tantaman/Strut) - Strut - An Impress.js and Bespoke.js Presentation Editor +* [PhotoSwipe](https://github.com/dimsemenov/PhotoSwipe) - JavaScript image gallery for mobile and desktop, modular, framework independent. +* [jcSlider](https://github.com/JoanClaret/jcSlider) - A responsive slider jQuery plugin with CSS animations. +* [basic-jquery-slider](https://github.com/jcobb/basic-jquery-slider) - Simple to use, simple to theme, simple to customise. +* [jQuery.adaptive-slider](https://github.com/creative-punch/jQuery.adaptive-slider/) - A jQuery plugin for a slider with adaptive colored figcaption and navigation. +* [slidr](https://github.com/bchanx/slidr) - add some slide effects. +* [Flickity](https://github.com/metafizzy/flickity) - Touch, responsive, flickable galleries. +* [Glide.js](https://github.com/jedrzejchalubek/glidejs) - Responsive and touch-friendly jQuery slider. It's simple, lightweight and fast. +* [jQuery.adaptive-slider](https://github.com/creative-punch/jQuery.adaptive-slider/) - A jQuery plugin for a slider with adaptive colored figcaption and navigation. +* [Embla Carousel](https://github.com/davidcetinkaya/embla-carousel) - An extensible low level carousel for the web, written in TypeScript. + +## Range Sliders + +* [Ion.RangeSlider](https://github.com/IonDen/ion.rangeSlider) - Powerful and easily customizable range slider with many options and skin support. +* [jQRangeSlider](https://github.com/ghusse/jQRangeSlider) - A JavaScript slider selector that supports dates. +* [noUiSlider](https://github.com/leongersen/noUiSlider) - A lightweight, highly customizable range slider without bloat. +* [rangeslider.js](https://github.com/andreruffert/rangeslider.js) - HTML5 input range slider element polyfill. + + +## Form Widgets + +### Input + +* [typeahead.js](https://github.com/twitter/typeahead.js) - A fast and fully-featured autocomplete library. +* [tag-it](https://github.com/aehlke/tag-it) - A jQuery UI plugin to handle multi-tag fields as well as tag suggestions/autocomplete. +* [At.js](https://github.com/ichord/At.js) - Add GitHub like mentions autocomplete to your application. +* [Placeholders.js](https://github.com/jamesallardice/Placeholders.js) - A JavaScript polyfill for the HTML5 placeholder attribute. +* [fancyInput](https://github.com/yairEO/fancyInput) - Makes typing in input fields fun with CSS3 effects. +* [jQuery-Tags-Input](https://github.com/xoxco/jQuery-Tags-Input) - Magically convert a simple text input into a cool tag list with this jQuery plugin. +* [vanilla-masker](https://github.com/BankFacil/vanilla-masker) - A pure JavaScript mask input. +* [Ion.CheckRadio](https://github.com/IonDen/ion.checkRadio) - jQuery plugin for styling checkboxes and radio-buttons. With skin support. +* [awesomplete](https://github.com/LeaVerou/awesomplete) - Ultra lightweight, usable, beautiful autocomplete with zero dependencies. - http://leaverou.github.io/awesomplete + +### Calendar + +* [pickadate.js](https://github.com/amsul/pickadate.js) - The mobile-friendly, responsive, and lightweight jQuery date & time input picker. +* [bootstrap-datepicker](https://github.com/eternicode/bootstrap-datepicker) - A datepicker for @twitter bootstrap forked from Stefan Petre's (of eyecon.ro), improvements by @eternicode. +* [Pikaday](https://github.com/dbushell/Pikaday) - A refreshing JavaScript Datepicker — lightweight, no dependencies, modular CSS. +* [fullcalendar](https://github.com/fullcalendar/fullcalendar) - Full-sized drag & drop event calendar (jQuery plugin). +* [rome](https://github.com/bevacqua/rome) - A customizable date (and time) picker. Dependency free, opt-in UI. +* [datedropper](https://github.com/felicegattuso/datedropper) - datedropper is a jQuery plugin that provides a quick and easy way to manage dates for input fields. + + +### Select + +* [selectize.js](https://github.com/brianreavis/selectize.js) - Selectize is the hybrid of a textbox and select box. It's jQuery based and it has autocomplete and native-feeling keyboard navigation; useful for tagging, contact lists, etc. +* [select2](https://github.com/select2/select2) - a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results. +* [chosen](https://github.com/harvesthq/chosen) - A library for making long, unwieldy select boxes more friendly. + +### File Uploader + +* [jQuery-File-Upload](https://github.com/blueimp/jQuery-File-Upload) - File Upload widget with multiple file selection, drag&drop support, progress bar, validation and preview images, audio and video for jQuery. +* [dropzone](https://github.com/enyo/dropzone) - Dropzone is an easy to use drag'n'drop library. It supports image previews and shows nice progress bars. +* [flow.js](https://github.com/flowjs/flow.js) - A JavaScript library providing multiple simultaneous, stable, fault-tolerant and resumable/restartable file uploads via the HTML5 File API. +* [fine-uploader](https://github.com/FineUploader/fine-uploader) - Multiple file upload plugin with progress-bar, drag-and-drop, direct-to-S3 uploading. +* [FileAPI](https://github.com/mailru/FileAPI) - A set of JavaScript tools for working with files. Multiupload, drag'n'drop and chunked file upload. Images: crop, resize and auto orientation by EXIF. +* [plupload](https://github.com/moxiecode/plupload) - A JavaScript API for dealing with file uploads it supports features like multiple file selection, file type filtering, request chunking, client side image scaling and it uses different runtimes to achieve this such as HTML 5, Silverlight and Flash. + +### Other + +* [form](https://github.com/malsup/form) - jQuery Form Plugin. +* [Garlic.js](https://github.com/guillaumepotier/Garlic.js) - Automatically persist your forms' text and select field values locally, until the form is submitted. +* [Countable](https://github.com/RadLikeWhoa/Countable) - A JavaScript function to add live paragraph-, word- and character-counting to an HTML element. +* [card](https://github.com/jessepollak/card) - Make your credit card form better in one line of code. +* [stretchy](https://github.com/LeaVerou/stretchy) - Form element autosizing, the way it should be. +* [analytics](https://github.com/davidwells/analytics) - A lightweight, extendable analytics library designed to work with any third-party analytics provider to track page views, custom events, & identify users. + + +## Tips + +* [tipsy](https://github.com/jaz303/tipsy) - Facebook-style tooltips plugin for jQuery. +* [opentip](https://github.com/enyo/opentip) - An open source JavaScript tooltip based on the prototype framework. +* [qTip2](https://github.com/qTip2/qTip2) - Pretty powerful tooltips. +* [tooltipster](https://github.com/iamceege/tooltipster) - A jQuery tooltip plugin. +* [simptip](https://github.com/arashmanteghi/simptip) - A simple CSS tooltip made with Sass. +* [jquery-popup-overlay](https://github.com/vast-engineering/jquery-popup-overlay) - jQuery plugin for responsive and accessible modal windows and tooltips. +* [toolbar](https://github.com/paulkinzett/toolbar) - A tooltip style toolbar jQuery plugin +* [hint.css](https://github.com/chinchang/hint.css) - A tooltip library in CSS for your lovely websites. + +## Modals and Popups + +* [Magnific-Popup](https://github.com/dimsemenov/Magnific-Popup) - Light and responsive lightbox script with focus on performance. +* [jquery-popbox](https://github.com/gristmill/jquery-popbox) - jQuery PopBox UI Element. +* [jquery.avgrund.js](https://github.com/voronianski/jquery.avgrund.js) - A jQuery plugin with new modal concept for popups. +* [vex](https://github.com/HubSpot/vex) - A modern dialog library which is highly configurable and easy to style. +* [bootstrap-modal](https://github.com/jschr/bootstrap-modal) - Extends the default Bootstrap Modal class. Responsive, stackable, ajax and more. +* [css-modal](https://github.com/drublic/css-modal) - A modal built out of pure CSS. +* [jquery-popup-overlay](https://github.com/vast-engineering/jquery-popup-overlay) - jQuery plugin for responsive and accessible modal windows and tooltips. +* [SweetAlert](https://github.com/t4t5/sweetalert) - An awesome replacement for JavaScript's alert. +* [baguetteBox.js](https://github.com/feimosi/baguetteBox.js) - Simple and easy to use lightbox script written in pure JavaScript. +* [colorbox](https://github.com/jackmoore/colorbox) - A light-weight, customizable lightbox plugin for jQuery. +* [fancyBox](https://github.com/fancyapps/fancyBox) - A tool that offers a nice and elegant way to add zooming functionality for images, html content and multi-media on your webpages. +* [swipebox](https://github.com/brutaldesign/swipebox) - A touchable jQuery lightbox +* [jBox](https://github.com/StephanWagner/jBox) - jBox is a powerful and flexible jQuery plugin, taking care of all your popup windows, tooltips, notices and more. + +## Scroll + +* [scrollMonitor](https://github.com/stutrek/scrollMonitor) - A simple and fast API to monitor elements as you scroll. +* [headroom](https://github.com/WickyNilliams/headroom.js) - Give your pages some headroom. Hide your header until you need it. +* [onepage-scroll](https://github.com/peachananr/onepage-scroll) - Create an Apple-like one page scroller website (iPhone 5S website) with One Page Scroll plugin. +* [iscroll](https://github.com/cubiq/iscroll) - iScroll is a high performance, small footprint, dependency free, multi-platform JavaScript scroller. +* [skrollr](https://github.com/Prinzhorn/skrollr) - Stand-alone parallax scrolling library for mobile (Android + iOS) and desktop. No jQuery. +* [parallax](https://github.com/wagerfield/parallax) - Parallax Engine that reacts to the orientation of a smart device. +* [stellar.js](https://github.com/markdalgleish/stellar.js) - Parallax scrolling made easy. +* [plax](https://github.com/cameronmcefee/plax) - jQuery powered parallaxing. +* [jparallax](https://github.com/stephband/jparallax) - jQuery plugin for creating interactive parallax effect. +* [fullPage](https://github.com/alvarotrigo/fullPage.js) - A simple and easy to use plugin to create fullscreen scrolling websites (also known as single page websites). +* [ScrollMenu](https://github.com/s-yadav/ScrollMenu) - A new interface to replace old boring scrollbar. +* [Clusterize.js](https://github.com/NeXTs/Clusterize.js) - Tiny vanilla JS plugin to display large data sets easily. +* [simpleParallax](https://github.com/geosigno/simpleParallax) - Simple and tiny JavaScript library to add parallax animations on any images + + +## Menu + +* [jQuery-menu-aim](https://github.com/kamens/jQuery-menu-aim) - jQuery plugin to fire events when user's cursor aims at particular dropdown menu items. For making responsive mega dropdowns like Amazon's. +* [jQuery contextMenu](https://github.com/swisnl/jQuery-contextMenu) - contextMenu manager. +* [Slideout](https://github.com/mango/slideout) - A responsive touch slideout navigation menu for mobile web apps. +* [Slide and swipe](https://github.com/JoanClaret/slide-and-swipe-menu) - A sliding swipe menu that works with touchSwipe library. + + +## Table/Grid + +* [jTable](https://github.com/hikalkan/jtable) - A jQuery plugin to create AJAX based CRUD tables. +* [DataTables](https://www.datatables.net/) - (jQuery plug-in) It is a highly flexible tool, based upon the foundations of progressive enhancement, and will add advanced interaction controls to any HTML table. +* [Tabulator](http://olifolkerd.github.io/tabulator/) - (jQuery plug-in) An extremely flexible library that create tables with a range of interactive features from any JSON data source or existing HTML table. +* [Bootstrap Table](http://bootstrap-table.wenzhixin.net.cn/) - An Extension to the popular Bootstrap framework for creating tables that fit the style of your site with no need for additional markup. +* [floatThead](https://github.com/mkoryak/floatThead) - (jQuery plug-in) lock any table's header while scrolling within the body. Works on any table and requires no custom html or css. +* [Masonry](http://masonry.desandro.com/) - A cascading grid layout library. +* [Packery](http://packery.metafizzy.co/) - A grid layout library that uses a bin-packing algorithm. Useable for draggable layouts. +* [Isotope](http://isotope.metafizzy.co/) - A filterable, sortable, grid layout library. Can implement Masonry, Packery, and other layouts. +* [flexboxgrid](https://github.com/kristoferjoseph/flexboxgrid/) - Grid based on CSS3 flexbox. + +## Frameworks + +* [Semantic UI](http://semantic-ui.com/) - UI Kit with lots of themes and elements. +* [w2ui](http://w2ui.com/) - A set of jQuery plugins for front-end development of data-driven web applications. +* [fluidity](https://github.com/mrmrs/fluidity) - The worlds smallest fully-responsive css framework. +* [Ink](https://github.com/sapo/Ink) - An HTML5/CSS3 framework used at SAPO for fast and efficient website design and prototyping. + +## Boilerplates + + * [html5-boilerplate](https://github.com/h5bp/html5-boilerplate) - A professional front-end template for building fast, robust, and adaptable web apps or sites. + * [mobile-boilerplate](https://github.com/h5bp/mobile-boilerplate) - A front-end template that helps you build fast, modern mobile web apps. + * [webplate](https://github.com/chrishumboldt/webplate) - An awesome front-end framework that lets you stay focused on building your site or app while remaining really easy to use. + * [Cerberus](https://github.com/TedGoas/Cerberus) - A few simple, but solid patterns for responsive HTML emails. Even in Outlook. + * [full-page-intro-and-navigation](https://github.com/CodyHouse/full-page-intro-and-navigation) - An intro page with a full width background image, a bold animated menu and an iOS-like blurred effect behind the navigation. + * [Fluid-Squares](https://github.com/crozynski/Fluid-Squares) - A fluid grid of square units. + * [Mobile-First-RWD](https://github.com/bradfrost/Mobile-First-RWD) - An example of a mobile-first responsive web design. + * [this-is-responsive](https://github.com/bradfrost/this-is-responsive) - This Is Responsive. + * [npm run-scripts](https://gist.github.com/addyosmani/9f10c555e32a8d06ddb0) Task automation with NPM run-scripts. + +## Gesture + +* [hammer.js](https://github.com/hammerjs/hammer.js) - A JavaScript library for multi-touch gestures. +* [touchemulator](https://github.com/hammerjs/touchemulator) - Emulate touch input on your desktop. +* [Dragula](https://github.com/bevacqua/dragula/) - Drag and drop so simple it hurts. + + +## Maps + +* [Leaflet](https://github.com/Leaflet/Leaflet) - JavaScript library for mobile-friendly interactive maps. +* [Cesium](https://github.com/AnalyticalGraphicsInc/cesium) - Open Source WebGL virtual globe and map engine. +* [gmaps](https://github.com/HPNeo/gmaps) - The easiest way to use Google Maps. +* [polymaps](https://github.com/simplegeo/polymaps) - A free JavaScript library for making dynamic, interactive maps in modern web browsers. +* [kartograph.js](https://github.com/kartograph/kartograph.js) - Open source JavaScript renderer for Kartograph SVG maps. +* [mapbox.js](https://github.com/mapbox/mapbox.js) - Mapbox JavaScript API, a Leaflet Plugin. +* [jqvmap](https://github.com/manifestinteractive/jqvmap) - jQuery Vector Map Library. +* [OpenLayers3](http://openlayers.org/) - A high-performance, feature-packed library for all your mapping needs. + +## Video/Audio + + * [prettyembed.js](https://github.com/mike-zarandona/prettyembed.js) - Prettier embeds for your YouTubes - with nice options like high-res preview images, advanced customization of embed options, and optional FitVids support. + * [html5media](https://github.com/etianen/html5media) - Enables ` injector for radical Web Typography. + + +## Animations + +* [velocity](https://github.com/julianshapiro/velocity) - Accelerated JavaScript animation. +* [jquery.transit](https://github.com/rstacruz/jquery.transit) - Super-smooth CSS3 transformations and transitions for jQuery. +* [impress.js](https://github.com/impress/impress.js) - Make Prezi-like presentations with CSS3 transformations/transitions in an HTML document. +* [bounce.js](https://github.com/tictail/bounce.js) - Create tasty CSS3 powered animations in no time. +* [GreenSock-JS](https://github.com/greensock/GreenSock-JS) - High-performance HTML5 animations that work in all major browsers. +* [TransitionEnd](https://github.com/EvandroLG/transitionEnd) - TransitionEnd is an agnostic and cross-browser library to work with transitioned event. +* [Dynamic.js](https://github.com/michaelvillar/dynamics.js) - JavaScript library to create physics-based CSS animations. +* [the-cube](https://github.com/pstadler/the-cube) - The Cube is an experiment with CSS3 transitions. +* [Effeckt.css](https://github.com/h5bp/Effeckt.css) - A Performant Transitions and Animations Library +* [animate.css](https://github.com/daneden/animate.css) - A cross-browser library of CSS animations. As easy to use as an easy thing. +* [textillate](https://github.com/jschr/textillate) - A simple plugin for CSS3 text animations. +* [move.js](https://github.com/visionmedia/move.js) - CSS3 backed JavaScript animation framework. +* [animatable](https://github.com/LeaVerou/animatable) - One property, two values, endless possibilities. +* [shuffle-images](https://github.com/peachananr/shuffle-images) - The Simplest Way to shuffle through images in a Creative Way http://www.thepetedesign.com/demos/shuffle-images_demo.html +* [smoothState.js](https://github.com/miguel-perez/smoothState.js) - Unobtrusive page transitions with jQuery. http://smoothstate.com/ +* [Anime.js](http://animejs.com) - A JavaScript animation engine http://animejs.com. +* [Mo.js](http://mojs.io) - Motion graphics toolbelt for the web http://mojs.io. +* [particles.js](https://github.com/VincentGarreau/particles.js) - A lightweight JavaScript library for creating particles. + +## Image Processing + +* [lena.js](https://github.com/davidsonfellipe/lena.js) - A Library for image processing with filters and util functions. +* [pica](https://github.com/nodeca/pica) - High quality image resize (with fast Lanczos filter, implemented in pure JS). +* [cropper](https://github.com/fengyuanchen/cropper) - A simple jQuery image cropping plugin. + + +## ES6 + +* [es6features](https://github.com/lukehoban/es6features) - Overview of ECMAScript 6 features. +* [es6-features](https://github.com/rse/es6-features) - ECMAScript 6: Feature Overview & Comparison. +* [es6-cheatsheet](https://github.com/DrkSephy/es6-cheatsheet) - ES2015 [ES6] cheatsheet containing tips, tricks, best practices and code snippets. +* [ECMAScript 6 compatibility table](http://kangax.github.io/compat-table/es6/) - Compatibility tables for all ECMAScript 6 features on a variety of environments. +* [Babel (Formerly 6to5)](https://github.com/babel/babel) - Turn ES6+ code into vanilla ES5 with no runtime. +* [Traceur compiler](https://github.com/google/traceur-compiler) - ES6 features > ES5. Includes classes, generators, promises, destructuring patterns, default parameters & more. + + +## Generators + +* [Gatsby.js](https://github.com/gatsbyjs/gatsby) - React-based static site generator. +* [Gridsome](https://github.com/gridsome/gridsome) - Vue-powered static site generator. + + +## SDK + +* [javascript-sdk-design](https://github.com/huei90/javascript-sdk-design) - JavaScript SDK design guide extracted from work and personal experience +* [Spotify SDK](https://github.com/loverajoel/spotify-sdk) - Entity oriented SDK to work with the Spotify Web API. +* [Square Node.js SDK](https://github.com/square/connect-nodejs-sdk/) - JavaScript client library for payments and other Square APIs. + + +## Misc + +* [echo](https://github.com/toddmotto/echo) - Lazy-loading images with data-* attributes. +* [picturefill](https://github.com/scottjehl/picturefill) - A responsive image polyfill for <picture>, srcset, sizes. +* [platform.js](https://github.com/bestiejs/platform.js) - A platform detection library that works on nearly all JavaScript platforms. +* [json3](https://github.com/bestiejs/json3) - A modern JSON implementation compatible with nearly all JavaScript platforms. +* [Logical Or Not](http://gabinaureche.com/logicalornot/) - A game about JavaScript specificities. +* [BitSet.js](https://github.com/infusion/BitSet.js) - A JavaScript Bit-Vector implementation +* [spoiler-alert](https://github.com/joshbuddy/spoiler-alert) - SPOILER ALERT! A happy little jquery plugin to hide spoilers on your site. +* [jquery.vibrate.js](https://github.com/illyism/jquery.vibrate.js) - Vibration API Wrappers +* [list.js](https://github.com/javve/list.js) - Adds search, sort, filters and flexibility to tables, lists and various HTML elements. Built to be invisible and work on existing HTML. +http://www.listjs.com +* [mixitup](https://github.com/patrickkunka/mixitup) - MixItUp - A Filter & Sort Plugin. +* [grid](https://github.com/hootsuite/grid) - Drag and drop library for two-dimensional, resizable and responsive lists. +* [jquery-match-height](https://github.com/liabru/jquery-match-height) - a responsive equal heights plugin for jQuery. +* [survey.js](https://github.com/surveyjs/surveyjs) - JavaScript Survey Engine. It uses JSON for survey metadata and results. http://surveyjs.org/ +* [Array Explorer](https://github.com/sdras/array-explorer) and [Object Explorer](https://sdras.github.io/object-explorer/) - Resources to help figure out what native JavaScript method would be best to use at any given time +* [Clipboard.js](https://clipboardjs.com/) - "Copy to clipboard" without Flash or use of Frameworks. +* [ky](https://github.com/sindresorhus/ky) - Tiny and elegant HTTP client based on the browser Fetch API. +* [Fcal](https://github.com/5anthosh/fcal) - Math expression evaluator + +## Podcasts +* [JavaScript Air](https://javascriptair.com/) - The live video broadcast podcast all about JavaScript and the Web platform. +* [Web of Tomorrow](http://www.weboftomorrowpodcast.com/) - Podcast about JavaScript for beginners. +* [JavaScript Jabber](https://devchat.tv/js-jabber) - A weekly podcast about JavaScript, including Node.js, Front-End Technologies, Careers, Teams and more. + +# Worth Reading + +* [You Don't Know JS](https://github.com/getify/You-Dont-Know-JS) - Possibly the best book written on modern JavaScript, completely readable online for free, or can be bought to support the author. +* [braziljs/js-the-right-way](https://github.com/braziljs/js-the-right-way/) - An easy-to-read, quick reference for JS best practices, accepted coding standards, and links around the Web. +* [JSbooks](https://github.com/revolunet/JSbooks) - Directory of free JavaScript ebooks. +* [Superhero.js](http://superherojs.com) - A collection of resources about creating, testing and maintaining a large JavaScript code base. +* [SJSJ](https://github.com/HugoGiraudel/SJSJ) - Simplified JavaScript Jargon is a community-driven attempt at explaining the loads of buzzwords making the current JavaScript ecosystem in a few simple words. +* [How to Write an Open Source JavaScript Library](https://github.com/sarbbottam/write-an-open-source-js-lib) - A comprehensive guide through a set of steps to publish a JavaScript open source library. +* [JavaScript Tutorials](https://hackr.io/tutorials/learn-javascript) - Learn Javascript online from a diverse range of user ranked online tutorials. +* [Functional-Light JavaScript](https://github.com/getify/Functional-Light-JS) - Pragmatic, balanced FP in JavaScript. +* [Clean Code JavaScript](https://github.com/ryanmcdermott/clean-code-javascript) - Clean Code concepts adapted for JavaScript. + + +# Other Awesome Lists +* [sotayamashita/awesome-css](https://github.com/sotayamashita/awesome-css) +* [emijrp/awesome-awesome](https://github.com/emijrp/awesome-awesome) +* [bayandin/awesome-awesomeness](https://github.com/bayandin/awesome-awesomeness) +* [sindresorhus/awesome](https://github.com/sindresorhus/awesome) +* [jnv/list](https://github.com/jnv/lists) +* [gianarb/angularjs](https://github.com/gianarb/awesome-angularjs) +* [peterkokot/awesome-dojo](https://github.com/peterkokot/awesome-dojo) +* [addyosmani/es6-tools](https://github.com/addyosmani/es6-tools) +* [ericdouglas/ES6-Learning](https://github.com/ericdouglas/ES6-Learning) +* [obetomuniz/awesome-webcomponents](https://github.com/obetomuniz/awesome-webcomponents) +* [willianjusten/awesome-svg](https://github.com/willianjusten/awesome-svg) +* [davidsonfellipe/awesome-wpo](https://github.com/davidsonfellipe/awesome-wpo) +* [instanceofpro/awesome-backbone](https://github.com/sadcitizen/awesome-backbone) +* [enaqx/awesome-react](https://github.com/enaqx/awesome-react) +* [bolshchikov/js-must-watch](https://github.com/bolshchikov/js-must-watch) +* [peterkokot/awesome-jquery](https://github.com/peterkokot/awesome-jquery) +* [davidyezsetz/you-might-not-need-jquery-plugins](https://github.com/davidyezsetz/you-might-not-need-jquery-plugins) +* [MaximAbramchuck/awesome-interviews](https://github.com/MaximAbramchuck/awesome-interview-questions) + +
Photo by Roman Synkevych on Unsplash
Photo by Roman Synkevych on Unsplash
### Web Development - Check cross-browser compatibility for CSS, JavaScript and HTML From b7dbd02c4eb72f899830a60eeac98e38cb0d6fa4 Mon Sep 17 00:00:00 2001 From: Bryan C Guner <66654881+bgoonz@users.noreply.github.com> Date: Wed, 30 Mar 2022 12:38:37 -0400 Subject: [PATCH 2/6] Add files via upload --- ...ed Test Tool - Testmysite.io by Netlify.png | Bin 0 -> 153266 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 static/images/Screenshot 2022-03-30 at 12-37-24 Website Speed Test Tool - Testmysite.io by Netlify.png diff --git a/static/images/Screenshot 2022-03-30 at 12-37-24 Website Speed Test Tool - Testmysite.io by Netlify.png b/static/images/Screenshot 2022-03-30 at 12-37-24 Website Speed Test Tool - Testmysite.io by Netlify.png new file mode 100644 index 0000000000000000000000000000000000000000..6c575539aa2d33ac050aea6e24c6940b4d7c110d GIT binary patch literal 153266 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