DEV Community

Iain Freestone
Iain Freestone

Posted on

πŸš€10 Trending projects on GitHub for web developers - 31st December 2021

Trending Projects is available as a weekly newsletter please sign up at Stargazing.dev to ensure you never miss an issue.

1. Editor.js

A block-styled editor with clean JSON output

GitHub logo codex-team / editor.js

A block-styled editor with clean JSON output

Backers on Open Collective Sponsors on Open Collective Join the chat at https://gitter.im/codex-team/editor.js

IE / Edge
IE / Edge
Firefox
Firefox
Chrome
Chrome
Safari
Safari
iOS Safari
iOS Safari
Opera
Opera
Edge 12+ Firefox 18+ Chrome 49+ Safari 10+ Safari 10+ Opera 36+

If you like a project πŸ’—πŸ’—πŸ’—

If you like Editor.js you can support project improvements and development of new features with a donation to our collective.

πŸ‘‰ https://opencollective.com/editorjs

Sponsors

Support us by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]

Backers

Thank you to all our backers! πŸ™ [Become a backer]

Contributors

This project exists thanks to all the people who contribute.

We really welcome new contributors. If you want to make some code with us, please take a look at the Good First Tasks. You can write to us on team@codex.so or via special Telegram chat, or any other way.

Documentation

Please visit https://editorjs.io/ to view all documentation articles.


2. PurgeCSS

PurgeCSS analyzes your content and your css files. Then it matches the selectors used in your files with the one in your content files. It removes unused selectors from your css, resulting in smaller css files.

GitHub logo FullHuman / purgecss

Remove unused CSS

PurgeCSS

npm npm GitHub Dependabot

PurgeCSS logo

What is PurgeCSS?

When you are building a website, chances are that you are using a css framework like Bootstrap, Materializecss, Foundation, etc... But you will only use a small set of the framework and a lot of unused css styles will be included.

This is where PurgeCSS comes into play. PurgeCSS analyzes your content and your css files. Then it matches the selectors used in your files with the one in your content files. It removes unused selectors from your css, resulting in smaller css files.

Sponsors πŸ₯°

Documentation

You can find the PurgeCSS documentation on this website.

Table of Contents

PurgeCSS

Plugins

Guides

Getting Started

Installation

npm i --save-dev purgecss

Usage

import PurgeCSS from "purgecss";
const purgeCSSResults = await new PurgeCSS().purge(
…
Enter fullscreen mode Exit fullscreen mode

3. Wouter

A minimalist-friendly ~1.5KB routing for React and Preact. Nothing else but Hooks.

GitHub logo molefrog / wouter

πŸ₯’ A minimalist-friendly ~1.5KB routing for React and Preact. Nothing else but HOOKS.

Wouter β€” a super-tiny React router (logo by Katya Simacheva)

wouter is a tiny router for modern React and Preact apps that relies on Hooks.
A router you wanted so bad in your project!

Features

by Katya Simacheva

developers πŸ’– wouter

... I love Wouter. It’s tiny, fully embraces hooks, and has an intuitive and barebones API. I can accomplish everything I could with react-router with Wouter, and it just feels more minimalist while not being inconvenient.

Matt Miller, An exhaustive React ecosystem for 2020

Wouter provides a simple API that many developers and…


4. bundlesize

Keep your bundle size in check

GitHub logo siddharthkp / bundlesize

Keep your bundle size in check



Keep your bundle size in check

Β 

Build Status NPM Version NPM Downloads Β 

Setup

npm install bundlesize --save-dev
# or

yarn add bundlesize --dev
Enter fullscreen mode Exit fullscreen mode

Β 

Usage

Β 

Add it to your scripts in package.json

"scripts": {
  "test": "bundlesize"
}
Enter fullscreen mode Exit fullscreen mode

Or you can use it with npx from NPM 5.2+.

npx bundlesize
Enter fullscreen mode Exit fullscreen mode

Β 

Configuration

Β 

bundlesize accepts an array of files to check.

[
  {
    "path": "./build/vendor.js",
    "maxSize": "30 kB"
  },
  {
    "path": "./build/chunk-*.js",
    "maxSize": "10 kB"
  }
]
Enter fullscreen mode Exit fullscreen mode

Β 

You can keep this array either in

  1. package.json

    {
      "name": "your cool library",
      "version": "1.1.2",
      "bundlesize": [
        {
          "path": "./build/vendor.js",
          "maxSize": "3 kB"
        }
      ]
    }
    Enter fullscreen mode Exit fullscreen mode

    or in a separate file

  2. bundlesize.config.json

    Format:

    {
      "files": [
        {
          "path": "./dist.js"
          "maxSize": "3
    …
    Enter fullscreen mode Exit fullscreen mode

5. MindAR

Web Augmented Reality. Natural feature tracking. Image targets. Tensorflow.js

GitHub logo hiukim / mind-ar-js

Web Augmented Reality. Natural feature tracking. Image targets. Tensorflow.js

MindAR

For location-based AR and marker-based AR, checkout AR.js https://github.com/AR-js-org/AR.js

MindAR is a lightweight library for web augmented reality. Highlighted features include:

⭐ Support Image tracking and Face tracking

⭐ Written in pure javascript, end-to-end from the underlying computer vision engine to frontend

⭐ Utilize gpu (through webgl) and web worker for performance

⭐ Developer friendly. Easy to setup. With AFRAME extension, you can get your app starts with only 10 lines of codes

Web AR Development Course - Fund Raising

To raise fund for the continuous development and support of the MindAR Library, I've created a WebAR development course. It's a very comprehensive guide to Web AR development, not limited to MindAR. Check it out if you are interested:

https://www.udemy.com/course/introduction-to-web-ar-development/?referralCode=D2565F4CA6D767F30D61

course-banner

Managed Solution - Pictarize

This opensource project is under MIT, so you are free to use however you want. There is also a hosted platform built on top of…


6. Snap page

Snap page when user stops scrolling, with a customizable configuration and a consistent cross browser behaviour

GitHub logo lucafalasco / scroll-snap

β†― Snap page when user stops scrolling, with a customizable configuration and a consistent cross browser behaviour

scroll-snap


npm npm npm downloads

Snap page when user stops scrolling, basically implements CSS Scroll Snap, adding a customizable configuration and a consistent cross browser behaviour.

  • Works in all modern browsers
  • requestAnimationFrame for 60fps
  • Customizable settings (including easing functions)
  • No additional dependencies
  • No extra stylesheet

Installation

yarn add scroll-snap
Enter fullscreen mode Exit fullscreen mode

You can also grab a pre-built version from unpkg

Usage

createScrollSnap(element, settings, [callback])
Enter fullscreen mode Exit fullscreen mode

Arguments

element: HTMLElement

The HTML DOM Element to attach the scroll listener to.

settings: Settings

A configuraiton object consisting of one or more of the following keys:

snapDestinationX: string | number

Snap destination for x axis, should be a valid css value expressed as px | % | vw | vh

snapDestinationY: string | number

Snap destination for y axis, should be a valid css value expressed as px | % | vw | vh

timeout: number

Time in ms after which scrolling is…


7. Dependency cruiser

Validate and visualize dependencies. Your rules. JavaScript, TypeScript, CoffeeScript. ES6, CommonJS, AMD.

GitHub logo sverweij / dependency-cruiser

Validate and visualize dependencies. Your rules. JavaScript, TypeScript, CoffeeScript. ES6, CommonJS, AMD.

Dependency cruiser Dependency cruiser

Validate and visualise dependencies. With your rules. JavaScript. TypeScript. CoffeeScript. ES6, CommonJS, AMD.

What's this do?

Snazzy dot output to whet your appetite

This runs through the dependencies in any JavaScript, TypeScript, LiveScript or CoffeeScript project and ...

  • ... validates them against (your own) rules
  • ... reports violated rules
    • in text (for your builds)
    • in graphics (for your eyeballs)

As a side effect it can generate cool dependency graphs you can stick on the wall to impress your grandma.

How do I use it?

Install it

  • npm install --save-dev dependency-cruiser to use it as a validator in your project (recommended) or...
  • npm install --global dependency-cruiser if you just want to inspect multiple projects.

Show stuff to your grandma

To create a graph of the dependencies in your src folder, you'd run dependency cruiser with output type dot and run GraphViz dot on the result. In a one liner:

depcruise --include-only "^src" --output-type dot
…
Enter fullscreen mode Exit fullscreen mode

8. React Rich Text Editor

Pure React rich text WYSIWYG editor based on draft-js.

GitHub logo sstur / react-rte

Pure React rich text WYSIWYG editor based on draft-js.

React Rich Text Editor

Build Status

This is a UI component built completely in React that is meant to be a full-featured textarea replacement similar to CKEditor, TinyMCE and other rich text "WYSIWYG" editors. It's based on the excellent, open source Draft.js from Facebook which is performant and production-tested.

Demo

Try the editor here: react-rte.org/demo

Screenshot 1

Getting Started

$ npm install --save react-rte

RichTextEditor is the main editor component. It is comprised of the Draft.js <Editor>, some UI components (e.g. toolbar) and some helpful abstractions around getting and setting content with HTML/Markdown.

RichTextEditor is designed to be used like a textarea except that instead of value being a string, it is an object with toString on it. Creating a value from a string is also easy using createValueFromString(markup, 'html').

Browser Compatibility

The scripts are transpiled by Babel to ES6. Additionally, at least one of this package's dependencies does not…


9. Changesets

A way to manage your versioning and changelogs with a focus on monorepos

GitHub logo changesets / changesets

πŸ¦‹ A way to manage your versioning and changelogs with a focus on monorepos

A tool to manage versioning and changelogs
with a focus on multi-package repositories

View changelog

The changesets workflow is designed to help when people are making changes, all the way through to publishing. It lets contributors declare how their changes should be released, then we automate updating package versions, and changelogs, and publishing new versions of packages based on the provided information.

Changesets has a focus on solving these problems for multi-package repositories, and keeps packages that rely on each other within the multi-package repository up-to-date, as well as making it easy to make changes to groups of packages.

How do we do that?

A changeset is an intent to release a set of packages at particular semver bump types with a summary of the changes made.

The @changesets/cli package allows you to write changeset files as you make changes, then combine any number of changesets into a release, that flattens the…





10. React Table

Hooks for building fast and extendable tables and datagrids for React

GitHub logo tannerlinsley / react-table

βš›οΈ Hooks for building fast and extendable tables and datagrids for React

React Table Header

Hooks for building lightweight, fast and extendable datagrids for React

#TanStack semantic-release Join the discussion on Github

Enjoy this library? Try them all! React Query, React Form, React Charts

Visit react-table.tanstack.com for docs, guides, API and more!

Quick Features

  • Lightweight (5kb - 14kb+ depending on features used and tree-shaking)
  • Headless (100% customizable, Bring-your-own-UI)
  • Auto out of the box, fully controllable API
  • Sorting (Multi and Stable)
  • Filters
  • Pivoting & Aggregation
  • Row Selection
  • Row Expansion
  • Column Ordering
  • Animatable
  • Virtualizable
  • Resizable
  • Server-side/controlled data/state
  • Extensible via hook-based plugin system

Become a Sponsor

Previous Versions

Version 6

v6 is a great library and while it is still available to install and use, I am no longer offering any long-term support for it. If you intend to keep using v6, I recommend maintaining your own fork of the library and keeping it up to date for your version of React.

Where are the docs for the older v6 version?

Please visit…


Stargazing πŸ“ˆ

Top risers over last 7 daysπŸ”—

  1. Every Programmer Should Know +1,585 stars
  2. Tabby +1,222 stars
  3. JavaScript Algorithms +1,219 stars
  4. Awesome +1,196 stars
  5. Awesome Self Hostsed +1,141stars

Top growth(%) over last 7 daysπŸ”—

  1. Rakkas +26%
  2. Vitest +21%
  3. Molecule +20%
  4. md-block +19%
  5. React Snowfall +14%

Top risers over last 30 daysπŸ”—

  1. Tabby +6,991 stars
  2. Free Programming Books +4,553 stars
  3. Every Programmer Should Know +4,522 stars
  4. Awesome +4,395 stars
  5. Developer Roadmap +4,253 stars

Top growth(%) over last 30 daysπŸ”—

  1. Pico +394%
  2. Rakkas +150%
  3. Remix Auth +91%
  4. React Snowfall +87%
  5. Agrippa +85%

For all for the latest rankings please checkout Stargazing.dev


Trending Projects is available as a weekly newsletter please sign up at Stargazing.dev to ensure you never miss an issue.

If you enjoyed this article you can follow me on Twitter where I regularly post about HTML, CSS and JavaScript.

Discussion (0)