DEV Community

Iain Freestone
Iain Freestone

Posted on • Originally published at iainfreestone.com

🚀10 Trending projects on GitHub for web developers - 21st August 2020

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

1. Design resources for developers

Curated list of design and UI resources from stock photos, web templates, CSS frameworks, UI libraries, tools and much more.

GitHub logo bradtraversy / design-resources-for-developers

Curated list of design and UI resources from stock photos, web templates, CSS frameworks, UI libraries, tools and much more

Repository Banner

Please read contributing guidelines before submitting new resources.

Table of Contents

UI Graphics

Websites and resources with modern UI components in different formats such as PSD, Sketch, Figma, etc. They are great for ideas for web components/UI

Website                            Description
UI Design Daily Awesome UI Components of all types
100 Daily UI Free Figma library of products, elements, and screens
Sketch App Sources Sketch UIs, wireframes, icons and much more
Humaaans Cool illustrations of

2. Alpine.js

Alpine.js offers you the reactive and declarative nature of big frameworks like Vue or React at a much lower cost. You get to keep your DOM, and sprinkle in behavior as you see fit.Think of it like Tailwind for JavaScript.

GitHub logo alpinejs / alpine

A rugged, minimal framework for composing JavaScript behavior in your markup.

Alpine.js

Go to the Alpine docs for most things: Alpine Docs

Stay here for contribution-related information.

Looking for V2 docs? here they are

Contribution Guide:

Quickstart

  • clone this repo locally
  • run npm install & npm run build
  • Include the /packages/alpinejs/dist/cdn.js file from a <script> tag on a webpage and you're good to go!

Brief Tour

You can get everything installed with: npm install in the root directory of this repo after cloning it locally.

This repo is a "mono-repo" using npm workspaces for managing the packages. Each package has its own folder in the /packages directory.

Rather than having to run separate builds for each package, all package bundles are handled with the same command: npm run build

Here's a brief look at each package in this repo:

Package Description
alpinejs The main Alpine repo with all of Alpine's core
csp A repo to provide a "CSP safe" build of

3. RSSHub

RSSHub is an open source, easy to use, and extensible RSS feed aggregator, it's capable of generating RSS feeds from pretty much everything.

GitHub logo DIYgod / RSSHub

🍰 Everything is RSSible

RSSHub

RSSHub

🍰 Everything is RSSible

telegram build status Test coverage

Introduction

RSSHub is an open source, easy to use, and extensible RSS feed generator. It's capable of generating RSS feeds from pretty much everything.

RSSHub delivers millions of contents aggregated from all kinds of sources, our vibrant open source community is ensuring the deliver of RSSHub's new routes, new features and bug fixes.

RSSHub can be used with browser extension RSSHub Radar and mobile auxiliary app RSSBud (iOS) and RSSAid (Android)

English docs | Telegram Group | Telegram Channel


RSSHub 是一个开源、简单易用、易于扩展的 RSS 生成器,可以给任何奇奇怪怪的内容生成 RSS 订阅源。RSSHub 借助于开源社区的力量快速发展中,目前已适配数百家网站的上千项内容

可以配合浏览器扩展 RSSHub Radar 和 移动端辅助 App RSSBud (iOS) 与 RSSAid (Android) 食用

中文文档 | Telegram 群 | Telegram 频道

Special Thanks

Special Sponsors

              

Sponsors

Sayori Studio . Sion Kazama . 琚致远 . Rolly RSS 阅读器 . mokeyjay . 萌开源联盟 . hooke007 . feeds.pub

Contributors

Logo designer sheldonrrr

Backers

       

Related Projects

  • RSSHub Radar | 一个可以帮助你快速发现和订阅当前网站 RSS 和 RSSHub 的浏览器扩展
  • RSSBud

4. selectize.js

Selectize is an extensible jQuery-based custom UI control. It's useful for tagging, contact lists, country selectors, and so on. It clocks in at around ~7kb (gzipped). The goal is to provide a solid & usable experience with a clean and powerful API.

GitHub logo selectize / 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.

selectize.js

Selectize.js

→ Selectize is looking for new members on the maintenance team!

NPM version CDNJS version
Node.js CI Coverage Status
Discussion & Help

Selectize is an extensible jQuery-based custom <select>; UI control. It's useful for tagging, contact lists, country selectors, and so on. It clocks in at around ~7kb (gzipped). The goal is to provide a solid & usable experience with a clean and powerful API.

Features

  • Smart Option Searching / Ranking Options are efficiently scored and sorted on-the-fly (using sifter). Want to search an item's title and description? No problem.
  • Caret between items Order matters sometimes. Use the and arrow keys to move between selected items.
  • Select & delete multiple items at once Hold down option on Mac or ctrl on Windows to select more than one item to delete.
  • Díåcritîçs supported Great for international environments.
  • Item creation Allow users to create…

5. TSDX

Setting up a new TypeScript (x React) library can be tough. Between Rollup, Jest, tsconfig, Yarn resolutions, ESLint, and getting VSCode to play nicely....there is just a whole lot of stuff to do (and things to screw up). TSDX is a zero-config CLI that helps you develop, test, and publish modern TypeScript packages with ease--so you can focus on your awesome new library and not waste another afternoon on the configuration.

GitHub logo formium / tsdx

Zero-config CLI for TypeScript package development

tsdx

Blazing Fast Blazing Fast Blazing Fast Discord

Despite all the recent hype, setting up a new TypeScript (x React) library can be tough. Between Rollup, Jest, tsconfig, Yarn resolutions, ESLint, and getting VSCode to play nicely....there is just a whole lot of stuff to do (and things to screw up). TSDX is a zero-config CLI that helps you develop, test, and publish modern TypeScript packages with ease--so you can focus on your awesome new library and not waste another afternoon on the configuration.


6. wa-automate-nodejs (WhatsApp)

The most advanced NodeJS WhatsApp library for chatbots with advanced features. wa-automate-nodejs is the most advanced NodeJS library which provides a high-level API to control WhatsApp.

GitHub logo open-wa / wa-automate-nodejs

💬 🤖 The most advanced NodeJS WhatsApp library for chatbots with advanced features. Be sure to 🌟 this repository for updates!

wa-automate-nodejs

wa-automate-nodejs is the most advanced NodeJS library which provides a high-level API to control WA.

npm version node Downloads Average time to resolve an issue Percentage of issues still open

WhatsApp_Web 2.2108.8Twitter Follow

Deploy to DO

Key FeaturesGetting StartedEasy APIDocumentationGet a License KeySupport

Installation and Updating

Use this command to install the library for the first time and to keep the library up to date.

> npm i --save @open-wa/wa-automate@latest
Enter fullscreen mode Exit fullscreen mode

Usage

// import { create, Client } from '@open-wa/wa-automate';
const wa = require('@open-wa/wa-automate');

wa.create().then(client => start(client));

function start(client) {
  client.onMessage(async message => {
    if (message.body === 'Hi') {
      await client.sendText(message.from, '👋 Hello!');
    }
  });
}
Enter fullscreen mode Exit fullscreen mode

Custom Setup

Learn more about all possible configuration options here: ConfigObject

const wa = require(
Enter fullscreen mode Exit fullscreen mode

7. TypeORM

TypeORM is an ORM that can run in NodeJS, Browser, Cordova, PhoneGap, Ionic, React Native, NativeScript, Expo, and Electron platforms and can be used with TypeScript and JavaScript. Its goal is to always support the latest JavaScript features and provide additional features that help you to develop any kind of application that uses databases - from small applications with a few tables to large scale enterprise applications with multiple databases.

GitHub logo typeorm / typeorm

ORM for TypeScript and JavaScript (ES7, ES6, ES5). Supports MySQL, PostgreSQL, MariaDB, SQLite, MS SQL Server, Oracle, SAP Hana, WebSQL databases. Works in NodeJS, Browser, Ionic, Cordova and Electron platforms.

TypeORM is an ORM that can run in NodeJS, Browser, Cordova, PhoneGap, Ionic, React Native, NativeScript, Expo, and Electron platforms and can be used with TypeScript and JavaScript (ES5, ES6, ES7, ES8) Its goal is to always support the latest JavaScript features and provide additional features that help you to develop any kind of application that uses databases - from small applications with a few tables to large scale enterprise applications with multiple databases.

TypeORM supports both Active Record and Data Mapper patterns unlike all other JavaScript ORMs currently in existence which means you can write high quality, loosely coupled, scalable, maintainable applications the most productive way.

TypeORM is highly influenced by other ORMs, such as Hibernate, Doctrine and Entity Framework.

Features

  • supports both DataMapper and ActiveRecord (your choice)
  • entities and columns
  • database-specific column types
  • entity manager
  • repositories and custom repositories
  • clean object relational model
  • associations (relations)
  • eager…

8. Zustand

Small, fast and scaleable bearbones state-management solution. Has a comfy api based on hooks, isn't boilerplatey or opinionated, but still just enough to be explicit and flux-like.

GitHub logo pmndrs / zustand

🐻 Bear necessities for state management in React

Build Status Build Size Version Downloads Discord Shield

A small, fast and scalable bearbones state-management solution using simplified flux principles. Has a comfy api based on hooks, isn't boilerplatey or opinionated.

Don't disregard it because it's cute. It has quite the claws, lots of time was spent to deal with common pitfalls, like the dreaded zombie child problem, react concurrency, and context loss between mixed renderers. It may be the one state-manager in the React space that gets all of these right.

You can try a live demo here.

npm install zustand # or yarn add zustand
Enter fullscreen mode Exit fullscreen mode

First create a store

Your store is a hook! You can put anything in it: primitives, objects, functions. The set function merges state.

import create from 'zustand'
const useStore = create(set => ({
  bears: 0,
  increasePopulation: () => set(state => ({ bears: state.bears + 1
Enter fullscreen mode Exit fullscreen mode

9. jsQR

A pure javascript QR code reading library. This library takes in raw images and will locate, extract and parse any QR code found within.

GitHub logo cozmo / jsQR

A pure javascript QR code reading library. This library takes in raw images and will locate, extract and parse any QR code found within.

jsQR

Build Status

A pure javascript QR code reading library This library takes in raw images and will locate, extract and parse any QR code found within.

Demo

Installation

NPM

Available on npm. Can be used in a Node.js program or with a module bundler such as Webpack or Browserify.

npm install jsqr --save
// ES6 import
import jsQR from "jsqr";

// CommonJS require
const jsQR = require("jsqr");

jsQR(...);
Enter fullscreen mode Exit fullscreen mode

Browser

Alternatively for frontend use jsQR.js can be included with a script tag

<script src="jsQR.js"></script>
<script>
  jsQR(...);
</script>
Enter fullscreen mode Exit fullscreen mode

A note on webcams

jsQR is designed to be a completely standalone library for scanning QR codes. By design it does not include any platform specific code. This allows it to just as easily scan a frontend webcam stream…


10. joi

The most powerful schema description language and data validator for JavaScript.

GitHub logo sideway / joi

The most powerful data validation library for JS





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

If you enjoyed this article you can follow me on Twitter where I regularly post bite size tips relating to HTML, CSS and JavaScript.

Top comments (4)

Collapse
 
jwp profile image
John Peters • Edited

Brad Travery's work is always excellent!

Alpine looks very interesting. With the advent of -data- attributes, they may be onto something. This snippet shows their design well.

<div x-data="dropdown()">
    <button x-on:click="open">Open</button>

    <div x-show="isOpen()" x-on:click.away="close">
        // Dropdown
    </div>
</div>

Notice that the GUI is only concerned with GUI State, whereAs the x-data is used to tie in the event handlers. Pretty cool...

Thanks Iain!

Collapse
 
iainfreestone profile image
Iain Freestone

I am also excited to dig into Alpine looks like an awesome project.

Brad Traversy YouTube channel is brilliant, I was a bit sad to see that he will be stepping back from the camera for a while. Hopefully the channel will continue to grow under his guidance.

Collapse
 
jpomykala profile image
Jakub Pomykała

Great! I also made such list but for react localization and i18n libraries 📦
dev.to/jpomykala/top-12-libraries-...
:D

Some comments may only be visible to logged-in visitors. Sign in to view all comments.