Table of contents
- General resources
π¨ CSS- JavaScript
- Command Line, Terminal and shells
- Tooling
- Testing
- Progressive Web Apps
- Code Sandboxes
- APIs
- JSON
- HTML
- SVG
- Conversions and unicode
- Features and feature detection
- Performance
- Design
- Design Systems and documentation
- Accessibility (A11y)
- DevOps
- Design
- IDEs and Text Editors
- Regular expressions
- Learning resources
General resources
- Devdocs.io: Fast, offline, and free documentation browser for developers. Search 100+ docs in one web app: HTML, CSS, JavaScript, PHP, Ruby, Python, Go, C, C++β¦
- DevHints: cheatsheets for many web technologies
- Carbon: use this to share images of your code in presentations etc
- Badgen:
- Shields.io: to your documentation/readmes
- Git Flight Rules: A guide for astronauts (now, programmers using Git) about what to do when things go wrong.
- browser-2020: Things you can do with a browser in 2020
βοΈ
Really useful tools
These are tools that I use often and that I find useful.
- Bundlephobia: Size of npm dependencies
- Transform.tools: Transform your code with a few clicks. I most commonly use this tool to convert JSON to TypeScript interfaces
- Unicode code converter
- svgomg: SVGO's Missing GUI
- JSON Editor Online: view, edit and format JSON online
- Squoosh: image compressor
- Epoch Convert: Online Unix Timestamp Converter
- CopyChar: Copy special characters to your clipboard
- URL-encoder for SVG
- Tiny Helpers: A collection of free single-purpose online tools for web developers...
- Whitespaces and zero width βcharacters with buttons for copying to clipboard, short mnemonics and usage comments
- CSS2JS: Convert CSS to JS object. There's also a good VS Code extension for this as well: CSS-in-JShttps://marketplace.visualstudio.com/items?itemName=paulmolluzzo.convert-css-in-js
- Smooth Shadow: Make a smooth shadow
- Crontab.guru: The cron schedule expression editor
- Key.js: JavaScript keyboard event key codes & key identifiers
- Glob tester: tool for testing glob patterns
- HTML De-crapulator
- px-rem-em converter by me
π¦ Finding and vetting npm packages
- npms: A better and open source search for node packages
- pika: A searchable catalog of modern "module" packages on npm
- emma:
π¦ Terminal assistant to find and install node packages - npmvet: A simple CLI tool for vetting npm package versions
- Bundlephobia: See the "cost" of any npm package
- Snyk: Find any security vulnerabilities for any npm package. Search their database here:
https://snyk.io/vuln/npm:{package}
e.g. https://snyk.io/vuln/npm:react - runpkg: Explore, learn about and perform static analysis on npm packages in the browser
π¨ CSS
- CSS Tricks "Complete Guide to Flexbox"
- CSS Tricks "Complete Guide to Grid"
- Cubic bezier curve creator
- Ceaser: Cubic bezier curve generator
- CSS Triggers: find out what CSS properties trigger Paint/Layout/Composite renders
- Fluid-responsive font-size calculator: To scale typography smoothly across viewport widths.
- Browserhacks: Browserhacks is an extensive list of browser specific CSS and JavaScript hacks from all over the interwebs
- Absolute centering: useful techniques for absolute centering in CSS
- modern-css-reset: A bare-bones CSS reset for modern web development
- CSSFX: Beautifully simple click-to-copy CSS effects
- Shape Divider App
CSS-in-JS
- CSS-in-JS libraries
- Stitches β CSS-in-JS with near-zero runtime
- vanilla-extract: Zero-runtime Stylesheets-in-TypeScript
- Styled Components: CSS-in-JS for React
- Emotion: CSS-in-JS library
- linaria: Zero-runtime CSS in JS library
- goober: A less than 1KB css-in-js solution
- Design System Utils: Design system framework for modern front-end projects (made by me!)
- Polished: A lightweight toolset for writing styles in JavaScript
- styled-by: Simple and powerful lib to handle styled props in your components
- xstyled: Consistent theme based CSS for styled-components
π - Theme UI: Build consistent, themeable React apps based on constraint-based design principles
JavaScript
Useful JS links
- JS module import/export syntax
- JavaScript Event KeyCodes
- JavaScript Visualizer
- Does it mutate?
- jsPerf: JavaScript performance playground
- modern-js-cheatsheet
- HTML DOM: Common tasks of managing HTML DOM with vanilla JavaScript
Framework agnostic packages
General utilities
- Lodash: A modern JavaScript utility library delivering modularity, performance & extras.
- Just: A library of dependency-free utilities that do just do one thing (like Lodash but smaller)
- Install each util independently
- Read the tradeoffs document to see if Lodash is better
- tiny-get: A minimal-weight lodash.get equivalent utility
- evt: A type safe replacement for node's EventEmitter
- liteready: A lightweight DOM ready.
- passport: Simple, unobtrusive authentication for Node.js
- get-size: Get the size of elements
- length.js: Library for length units conversion
- action-outside: Invoke a callback function when clicked or tabbed outside one or multiple DOM elements
- select-dom: Lightweight
querySelector
/All
wrapper that outputs an Array - memoizee: Complete memoize/cache solution for JavaScript
- memoize-one: A memoization library which only remembers the latest invocation
- kind-of: Get the native JavaScript type of a value, fast.
- iterare: Array methods + ES6 Iterators =
- eases-jsnext: A grab-bag of modular easing equations
- normalizr: Normalizes nested JSON according to a schema
- lazy-value: Create a lazily evaluated value
- fast-equals: A blazing fast equality comparison, either shallow or deep
- fast-copy: A blazing fast deep object copier
- compute-scroll-into-view: Utility for calculating what should be scrolled, how it's scrolled is up to you
- arr: A collection of tiny, highly performant Array.prototype alternatives
- timedstorage: A library for storing and expiring objects in window.localstorage
- left-pad: String left pad
- dont-go: A small client-side library with zero dependencies to change the title and/or favicon of the page when it is inactive
- always-done: Handle completion and errors with elegance! Support for async/await, promises, callbacks, streams and observables. A drop-in replacement for async-done - pass 100% of its tests plus more
- title: A service for capitalizing your title properly
- words: Linguistic javascript modules
- no-scroll: Disable scrolling on an element that would otherwise scroll
- libphonenumber-js: A simpler (and smaller) rewrite of Google Android's libphonenumber library
- text-mask: Input mask for React, Angular, Ember, Vue, & plain JavaScript
- msk: Small library to mask strings
- focus-trap: Trap focus within a DOM node
- tinykeys: A tiny (~400 B) & modern library for keybindings
- clack: A modern keyboard shortcut library written in Typescript
- clack-react: React support for @reasonink/clack
- js-humanize: Humanize large numbers
- pupa: Simple micro templating
- sub-in:
π₯ A tiny (115B) find-and-replace utility for strings in Javascript - color-hash: Generate color based on the given string (using HSL color space and BKDRHash)
- string-similarity: Finds degree of similarity between two strings, based on Dice's Coefficient, which is mostly better than Levenshtein distance
- cuid: Collision-resistant ids optimized for horizontal scaling and performance
- obj-str: A tiny (96B) library for serializing Object values to Strings. Also serves as a faster & smaller drop-in replacement for the classnames module
- clsx: A tiny (223B) utility for constructing className strings conditionally. Also serves as a faster & smaller drop-in replacement for the classnames module
- xstate: State machines and statecharts for the modern web
- tasktimer: An accurate timer utility for running periodic tasks on the given interval ticks or dates. (Node and Browser)
- rough-notation: Create and animate hand-drawn annotations on a web page
- ouml: ΓΆ.js is a small collection of useful stuff
- is: Type check values
- big.js: A small, fast JavaScript library for arbitrary-precision decimal arithmetic
- js-proper-url-join: Like path.join but for a URL
Async
- axios: Promise based HTTP client for the browser and node.js
- axios-retry: Axios plugin that intercepts failed requests and retries them whenever possible
- redaxios: The Axios API, as an 800 byte Fetch wrapper
- cross-fetch: Universal WHATWG Fetch API for Node, Browsers and React Native
- awaity: A functional, lightweight alternative to bluebird.js, built with
async
/await
in mind - loadjs: A tiny async loader / dependency manager for modern browsers (789 bytes)
- await-to-js: Async await wrapper for easy error handling without try-catch
Node
- Fastify: Fast and low overhead web framework, for Node.js
- Express
- helmet: Help secure Express apps with various HTTP headers
- reqresnext: Tiny helper for express middleware testing
- lusca: Application security for express apps
- cookie-session: Simple cookie-based session middleware
- nodebestpractices: The largest Node.JS best practices list. Curated from the top ranked articles and always updated
- dumper.js: A better and pretty variable inspector for your Node.js applications
- http-terminator: Gracefully terminates HTTP(S) server
- uuid: Generate RFC-compliant UUIDs in JavaScript
- http-errors: Create HTTP Errors
- boom: HTTP-friendly error objects
- deno: A secure JavaScript and TypeScript runtime
- nanomatch: Fast, minimal glob matcher for node.js. Similar to micromatch, minimatch and multimatch, but without support for extended globs (extglobs), posix brackets or braces, and with complete Bash 4.3 wildcard support: ("*", "**", and "?")
- yn: Parse yes/no like values
- ncp: Asynchronous recursive file copying with Node.js
Logging
- pino:
π² super fast, all natural json loggerπ² - caterpillar: Caterpillar is the ultimate logging system for Deno, Node.js, and Web Browsers
- cabin: Cabin is the best JavaScript and Node.js logging service and logging npm package
- consola: Elegant Console Logger for Node.js and Browser
π¨
Responsive
- responsive-watch: Watch some media queries and react when they change
- tornis: Tornis helps you watch and respond to changes in your browser's viewport
π² - actual: Determine actual CSS media query breakpoints via JavaScript
Media and Images
- images-loaded: Wait for images to load using promises. No dependencies.
- lazysizes: High performance and SEO friendly lazy loader for images (responsive and normal), iframes and more, that detects any visibility changes triggered through user interaction, CSS or JavaScript without configuration.
Image services
- sharp: High performance Node.js image processing, the fastest module to resize JPEG, PNG, WebP and TIFF images. Uses the libvips library.
- IMGIX: Real-time image processing and image CDN
Date
- date-fns: Modern JavaScript date utility library
- tinydate: A tiny (337B) reusable date formatter. Extremely fast!
- tinytime:
β° A straightforward date and time formatter in <1kb
Scrolling
- scroll-watcher
- scrolldir: Leverage Vertical Scroll Direction with CSS
Carousels
Animation
- ramjet: Morph DOM elements from one state to another with smooth animations and transitions
- anime: JavaScript Animation Engine
- GSAP:the standard for JavaScript HTML5 animation | GreenSock
- Vanilla-tilt.js: A smooth 3D tilt javascript library forked from Tilt.js
Web workers
- workerize: Run a module in a Web Worker
- greenlet: Move an async function into its own thread. A simplified single-function version of workerize.
Immutable
- immer: Create the next immutable state tree by simply modifying the current tree
- use-immer: Use immer to drive state with a React hooks
- unchanged: A tiny, fast, unopinionated handler for updating JS objects and arrays immutably
- seamless-immutable: Immutable data structures for JavaScript which are backwards-compatible with normal JS Arrays and Objectsseamless-immutable`
- mutik: A tiny (495B) immutable state management library based on Immer
Typography
- fitty: Makes text fit perfectly
Polyfills
- resize-observer-polyfill:A polyfill for the Resize Observer API
βοΈ React
- create-react-app: Create React apps with no build configuration
- react-app-rewired: Override create-react-app webpack configs without ejecting
- react-philosophies: Things I think about when I write React code
- react-bits:
β¨ React patterns, techniques, tips and tricksβ¨
React-specific libs:
- react-powerplug: Renderless Containers
- formik: Build forms in React, without the tears
π - react-router: Declarative routing for React
- Reach Router
- react-fns: React Components for common Web APIs
- react-portal: React component for transportation of modals, lightboxes, loading bars... to document.body
- react-ideal-image:
πΌοΈ An Almost Ideal React Image Component - react-adopt: Compose render props components like a pro
- downshift
- react-loadable: A higher order component for loading components with promises
- react-portal: React component for transportation of modals, lightboxes, loading bars... to document.body
- js-lingui:
π π : A readable, automated, and optimized (5 kb) internationalization (Intl / i18n) for JavaScript - react-mq: Barebones CSS media query component for React, ~560 bytes
- react-media: CSS media queries for React. This is SSR compatible as well.
- merge-props: Merges className, style, and event handler props for React elements
- react-uid: Render-less container for generating UID for a11y, consistent react key, and any other good reason
π¦ - clsx: A tiny (229B) utility for constructing
className
strings conditionally - Framer Motion: An open source React library to power production-ready animations. Design fluid animations for the web, across desktop and mobile
- react-axe: Accessibility auditing for React.js applications
- use-click-away: React hook to detect click or touch events outside an element
- react-tiny-virtual-list: A tiny but mighty 3kb list virtualization library, with zero dependencies
πͺ Supports variable heights/widths, sticky items, scrolling to index, and more! - react-laag: Primitives to build things like tooltips, dropdown menu's and popovers in React
- react-dnd: Drag and Drop for React
React Hooks
- swr: React Hooks library for remote data fetching
- Hooks.Guide: Collection of React hooks curated by the community
- useHooks: Easy to understand React Hook recipes
- beautiful-react-hooks:
π₯ A collection of beautiful and (hopefully) useful React hooks to speed-up your components and hooks developmentπ₯ - react-adaptive-hooks: Deliver experiences best suited to a user's device and network constraints
- use-local-storage-state: React hook that persists data in localStorage
- Rooks: Collection of React hooks
β for everyone
State management
- jotai:
π» Primitive and flexible state management for React - zustand:
π» Bear necessities for state management in React - redux: Predictable state container for JavaScript apps
- reselect: Selector library for Redux
- redux-saga: An alternative side effect model for Redux apps
- redux-saga-routines: Routines for redux-saga
- redux-thunk: Thunk middleware for Redux
- awesome-redux: Catalog of Redux Libraries & Learning Material
- parket: A library to manage application state, heavily inspired by mobx-state-tree
- unstated: State so simple, it goes without saying
- mergeState: How to Stop Worrying and Use Nested Object/Array in React/Redux States
- effector: The state manager
βοΈ - Recoil: Recoil is an experimental state management library for React apps. It provides several capabilities that are difficult to achieve with React alone, while being compatible with the newest features of React.
Server-rendered React
Static site generators
Microservices/Serverless
TypeScript
- What's new in TypeScript: Microsoft/TypeScript Wiki
- TypeScript Deep Dive
- TypeScript Evolution
- JSON to Typescript Interface
- react-typescript-cheatsheet: a cheatsheet for react users using typescript with react for the first (or nth!) time
- clean-code-typescript: Clean Code concepts adapted for TypeScript
- type-fest: A collection of essential TypeScript types
Command Line, Terminal and shells
Fish shell: The user-friendly command line shell
- My fish_config
- awesome-fish: A curated list of packages, prompts, and resources for the amazing fish shell
- Starship: Cross-Shell Prompt
- tide:
π A modern prompt manager for the Fish shell
Creating CLI apps
- gluegun: A delightful toolkit for building Node-powered CLIs
- inquirer: A collection of common interactive command line user interfaces
- commander: node.js command-line interfaces made easy
- sade: Sade is a small but powerful tool for building command-line interface (CLI) applications for Node.js that are fast, responsive, and helpful!
CLI apps
- serve: Static file serving and directory listing
- awesome-cli-apps: A curated list of command line apps
- SpaceVim: A community-driven modular vim distribution - The ultimate vim configuration
Tooling
Code bundlers
- Vite: Next Generation Frontend Tooling
- esbuild: An extremely fast JavaScript bundler
- swc: swc is a super-fast compiler written in rust; producing widely-supported javascript from modern standards and typescript
- preconstruct:
π Dev and build your code painlessly in monorepos - Webpack: script/asset bundler
- Webpack recipes
- ifdef-loader: Webpack loader for JavaScript/TypeScript conditional compilation
- Parcel: Blazing fast, zero configuration web application bundler
- microbundle: Zero-configuration bundler for tiny modules
- rollup.js: Rollup is a module bundler for JavaScript
- ncc: Node.js Compiler Collection. Simple CLI for compiling a Node.js module into a single file, together with all its dependencies, gcc-style.
- fastpack: Pack JS code into a single bundle fast & easy
Package management and publishing
- np: A better
npm publish
- size-limit: Prevent JS libraries bloat. If you accidentally add a massive dependency, Size Limit will throw an error
- bundlesize: Keep your bundle size in check
- nps: All the benefits of npm scripts without the cost of a bloated package.json and limits of json
- Dependabot: Dependabot creates pull requests to keep your dependencies secure and up-to-date
- npm-config (docs): More than you probably want to know about npm configuration
- patch-package: Fix broken node modules with no fuss
π¦ π - madge: Create graphs from your CommonJS, AMD or ES6 module dependencies
Commit hooks
- lefthook: Fast and powerful Git hooks manager for any type of projects
- husky: Git hooks made easy
- lint-staged:
π« π© : Run linters on git staged files - lefthook: Fast and powerful Git hooks manager for any type of projects
Testing
-
Jest: Delightful JavaScript Testing
- majestic: Zero config UI for Jest
- jest-chain: Chain Jest matchers together to create one powerful assertion
π β - jest-extended: Additional Jest matchers
π πͺ - snapshot-diff: Diffing snapshot utility for Jest
- jest-date-mock:
π MockDate
when run unit test cases with jest. Make tests of Date easier
-
Cypress: end-to-end testing
- cypress-testing-library:
π Simple and complete custom Cypress commands and utilities that encourage good testing practices - cypress-axe: Custom commands for Cypress to run a11y checks with axe-core
- start-server-and-test: Starts server, waits for URL, then runs test command; when the tests end, shuts down server
- cypress-testing-library:
-
dom-testing-library:
π Simple and complete DOM testing utilities that encourage good testing practices -
react-testing-library
π : Simple and complete React DOM testing utilities that encourage good testing practices- react-testing-library: React Testing Examples
- react-hooks-testing-library:
π Simple and complete React hooks testing utilities that encourage good testing practices
-
Chance: Random generator helper for JavaScript
-
faker.js: generate massive amounts of fake data in Node.js and the browser
-
nock: HTTP server mocking and expectations library for Node.js
-
given2: Lazy variable evaluation for Jasmine, Mocha, Jest specs, inspired by Ruby and Rspec
π -
benny: A dead simple benchmarking framework for JS/TS libs
-
benchmark.js: A benchmarking library. As used on jsPerf.com
-
ui-testing-best-practices: The largest UI testing best practices list (lat update: April 2020) (work in progress)
Code formatting and linting
- Prettier
- precise-commits: Painlessly apply Prettier by only formatting lines you have modified anyway!
- pretty-quick: Runs Prettier on your changed files
- Eslint
- eslint-plugin-prettier: ESLint plugin for prettier formatting
- eslint-config-prettier: Turns off all rules that are unnecessary or might conflict with Prettier
- eslint-plugin-react: React specific linting rules for ESLint
Miscellaneous
- npm-run-all: A CLI tool to run multiple npm-scripts in parallel or sequential
- cross-port-killer: Kill the process running on a given TCP port on Windows, Linux and Mac
- envinfo: Generate a report about your development environment for debugging and issue reporting
- mkcert: A simple zero-config tool to make locally trusted development certificates with any names you'd like
Progressive Web Apps
Code Sandboxes
- CodeSandbox: CodeSandbox is perfect for React demo apps
- Codepen: Codepen is perfect for non-React front-end demos and prototypes
- CodeShare: Codeshare is useful for collaborating on a single file if devs are not in the same room
- Glitch
APIs
- Postman: used to develop, test and monitor APIs
- MockAPI: create a mock API
- jsonbin: A personal JSON store as a RESTful service
- test-cors.org
- Reqres: A hosted REST-API ready to respond to your AJAX requests
- Mirage JS: An API mocking library for frontend developers
- Postwoman: API request builder
GraphQL
- GraphQL Playground
- Apollo GraphQL: Apollo Data Graph Platformβ unify APIs, microservices, and databases into a data graph that you can query with GraphQL
- Apollo Client (React): Apollo React GraphQL Docs
- graphql-directives:
π§ A collection of custom GraphQL Schema Directives for use with Apollo Server
- urql: The highly customizable and versatile GraphQL client
- graphql-request: Minimal GraphQL client supporting Node and browsers for scripts or simple apps
- graphql-lodash:
π Data manipulation for GraphQL queries with lodash syntax
JSON
- JSON generator: generate a lot of custom JSON for your app/site
- JSON Editor Online: view/edit JSON in a better format
- fx: Command-line tool and terminal JSON viewer
π₯
HTML
- github.com/joshbuchea/HEAD: the definitive resource for everything that could go in the head of your document
- MetaTags.io: Preview, Edit and Generate
- HEY META: Website Meta Tag Check
- Rich Link Preview
SVG
- A Practical Guide to SVGs on the web
- Get Waves: Create SVG waves for your next design
- Blobmaker: Make organic SVG shapes for your next design
- flubber: Tools for smoother shape animations
- Hero Patterns: Free repeatable SVG background patterns for your web projects
Icons
- ICONSVG: Quick customizable SVG icons for your project
- Simple Icons
- React Icons
- Evil Icons
- Icon Font & SVG Icon Sets β IcoMoon
- SVG PORN
- Feather: Simply beautiful open source icons
- react-feather: React component for Feather icons
- System UIcons
SVG/Image Media compression
Conversions and unicode
- Transform: All important transforms at one place
βοΈ βοΈ βοΈ this is so useful - SVGR: The SVG to JSX transformer
- svg2jsx
- JSON to JavaScript object literal
- Unminify JS, CSS and HTML Code
- Multi-Encoder
- Unicode code converter
Features and feature detection
- Can I Use...: Browser support tables for modern web technologies (HTML5, CSS3, JavaScript etc)
- Kangax JavaScript compatibility table
Performance
- Bundlephobia: find the cost of adding a npm package to your bundle
Performance testing and monitoring
- WebPageTest
- Lighthouse
- Calibre
- Website Speed Test Image Analysis Tool by Cloudinary
Design
- Subtract Guides: Simple Rules for Designing Web & Mobile Forms
Design Systems and documentation
- Storybook: UI dev environment you'll love to use
- react-styleguidist: - Isolated React component development environment with a living style guide
- Docusaurus: Easy to Maintain Open Source Documentation Websites
- Docz
- design-system-utils: - Design system framework for modern front-end projects
- Docute: The fastest way to create a documentation site for your project
- playroom: Design with JSX, powered by your own component library
Accessibility (A11y)
Accessibility is an extremely important part of any web project. While the SOW, functional spec or user-stories might not directly mention a11y, it is up to each developer to ensure that best efforts are made to make our websites as accessible as possible.
A11y tools and resources:
- Interactive WCAG: guidelines/cheatsheet for A, AA & AAA
- awesome-a11y: massive list of a11y-related resources & information
- tenon.io: a11y tester
- a11yproject.com/checklist.html: a11y checklist
- a11yproject.com: a11y resources
- w3.org/WAI/ER/tools/: list of a11y tools from the W3C
- allyjs.io: JavaScript library to help modern web applications with accessibility concerns by making accessibility simpler
- Four principles of Accessibility
- Aria landmarks example
- A11y Style-guide: markup examples and best practices
- Inclusive Components: A blog trying to be a pattern library. All about designing inclusive web interfaces, piece by piece.
- Color contrast checker
- Accessible color palette builder: An prototype to help designers build accessible color palettes
- Practical ARIA Examples
- Nutrition Cards for Accessible Components A11Y Expectations
- Web Accessibility Tutorials: Guidance on how to create websites that meet WCAG
A11y Chrome extensions
- Accessibility Insights for Web
- Color Contrast Analyzer
- NoCoffee: has options for testing color blindness and other sight-related issues
DevOps
Continuous integration
Docker
- dockle: Container Image Linter for Security, Helping build the Best-Practice Docker Image, Easy to start
Hosting
Domains
Design
Typography
IDEs and Text Editors
VS Code
- My VS Code extensions
- My preferences
- awesome-vscode:
π¨ A curated list of delightful VS Code packages and resources
Programming fonts
Code colour schemes
- Monokai Pro
- Ayu (Mirage)
- Dracula: A dark theme for Visual Studio Code and 50+ apps
- Oceanic Next Theme
π Night Owl: A VS Code dark theme for contrast for nighttime coding- Nord
- VSCodeThemes
- themer:
π¨ themer takes a set of colors and generates themes for your apps (editors, terminals, wallpapers, and more)
Regular expressions
- Regex101: Online regex tester and debugger: PHP, PCRE, Python, Golang and JavaScript
Learning resources
- Web Skills: A visual overview of useful skills to learn as a web developer
If you think there are better alternatives, or that there should be something added to the list, please create an issue or create a pull request