<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Alvaro Torres Carrasco</title>
    <description>The latest articles on Forem by Alvaro Torres Carrasco (@alvarotorresc).</description>
    <link>https://forem.com/alvarotorresc</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F239154%2F2ee85d07-a909-4c7a-b7f4-c27163fb5499.jpg</url>
      <title>Forem: Alvaro Torres Carrasco</title>
      <link>https://forem.com/alvarotorresc</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/alvarotorresc"/>
    <language>en</language>
    <item>
      <title>NestJS: Introduction</title>
      <dc:creator>Alvaro Torres Carrasco</dc:creator>
      <pubDate>Sun, 14 Jun 2020 19:02:23 +0000</pubDate>
      <link>https://forem.com/alvarotorresc/nestjs-introduction-ekd</link>
      <guid>https://forem.com/alvarotorresc/nestjs-introduction-ekd</guid>
      <description>&lt;p&gt;This is the first post about NestJS. The introduction&lt;/p&gt;

&lt;p&gt;NestJS is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScript, is built with and fully supports TypeScript (yet still enables developers to code in pure JavaScript) and combines elements of Object Oriented Programming, Functional Programming, and Functional Reactive Programming.&lt;/p&gt;

&lt;p&gt;Under the hood, Nest makes use of robust HTTP Server frameworks like Express (the default) and optionally can be configured to use Fastify as well!&lt;/p&gt;

&lt;p&gt;Nest provides a level of abstraction above these common Node.js frameworks (Express/Fastify), but also exposes their APIs directly to the developer. This allows developers the freedom to use the myriad of third-party modules which are available for the underlying platform.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Prerequisites&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;You have to make sure that Node.js (&amp;gt;= 10.13.0) is installed on your operating system.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Language&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;NestJS is built with and fully supports TypeScript. However, Nest is compatible with both TypeScript and pure JavaScript. This framework takes advantage of the latest language features, so to use it with vanilla JavaScript we need a Babel compiler.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Why NestJS?&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;The main problem with other javascript frameworks is the structure of the project made with them. The majority of them has many powerful features and solutions but they dont have a easy testeable structure or a heavily convoluted file tree. However, Nest provides an out-of-the-box application architecture which allows developers and teams to create highly testable, scalable, loosely coupled, and easily maintainable applications. The architecture is heavily inspired by &lt;a href="https://angular.io"&gt;Angular&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Strengths&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;[X] Typescript and Javascript fully support&lt;br&gt;
[X] Powerful CLI&lt;br&gt;
[X] Decorators&lt;br&gt;
[X] Extensible, Versatile, Progressive&lt;br&gt;
[X] Open Source&lt;br&gt;
[X] GraphQL Friendly&lt;br&gt;
[X] WebSockets integrated&lt;/p&gt;
&lt;h1&gt;
  
  
  &lt;strong&gt;Powerful CLI&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;The Nest CLI is a command-line interface tool that helps you to initialize, develop, and maintain your Nest applications. It assists in multiple ways, including scaffolding the project, serving it in development mode, and building and bundling the application for production distribution. It embodies best-practice architectural patterns to encourage well-structured apps.&lt;/p&gt;

&lt;p&gt;All nest commands follow the same format:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;nest commandOrAlias requiredArg [optionalArg] [options]
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Command overview&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EjkCziCR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/u05in101xrjhue2wa5li.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EjkCziCR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/u05in101xrjhue2wa5li.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  &lt;strong&gt;Platform&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;Nest aims to be a platform-agnostic framework. Platform independence makes it possible to create reusable logical parts that developers can take advantage of across several different types of applications. Technically, Nest is able to work with any Node HTTP framework once an adapter is created. There are two HTTP platforms supported out-of-the-box: express and fastify. You can choose the one that best suits your needs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2iFGDQGS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/azuu8dxgjtje1q2qh8yv.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2iFGDQGS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/azuu8dxgjtje1q2qh8yv.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Installation&lt;/strong&gt;
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vJ70wriM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/nestjs"&gt;
        nestjs
      &lt;/a&gt; / &lt;a href="https://github.com/nestjs/nest"&gt;
        nest
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A progressive Node.js framework for building efficient, scalable, and enterprise-grade server-side applications on top of TypeScript &amp;amp; JavaScript (ES6, ES7, ES8) 🚀
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
  &lt;a href="http://nestjs.com/" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/c4fd9ae4b5274b73d4d51c42263409ce74572040/68747470733a2f2f6e6573746a732e636f6d2f696d672f6c6f676f2d736d616c6c2e737667" width="120" alt="Nest Logo"&gt;&lt;/a&gt;
&lt;/p&gt;
  &lt;p&gt;A progressive &lt;a href="http://nodejs.org" rel="nofollow"&gt;Node.js&lt;/a&gt; framework for building efficient and scalable server-side applications.&lt;/p&gt;
    &lt;p&gt;
&lt;a href="https://www.npmjs.com/~nestjscore" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/7fa06daeef27f85792c0ff1db02e0029fe0db68f/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f406e6573746a732f636f72652e737667" alt="NPM Version"&gt;&lt;/a&gt;
&lt;a href="https://www.npmjs.com/~nestjscore" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/195f84d670ceb5a1d47c755d24a991da4b902440/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f6c2f406e6573746a732f636f72652e737667" alt="Package License"&gt;&lt;/a&gt;
&lt;a href="https://www.npmjs.com/~nestjscore" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/f9755412e63c6d0ab62221c2f2fb0782d27c5057/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f646d2f406e6573746a732f636f6d6d6f6e2e737667" alt="NPM Downloads"&gt;&lt;/a&gt;
&lt;a href="https://circleci.com/gh/nestjs/nest" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/8cdeafa0d946a19f7473819d26e7a3683b6a3054/68747470733a2f2f696d672e736869656c64732e696f2f636972636c6563692f6275696c642f6769746875622f6e6573746a732f6e6573742f6d6173746572" alt="CircleCI"&gt;&lt;/a&gt;
&lt;a href="https://coveralls.io/github/nestjs/nest?branch=master" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/5521caec2ace4d57a7b721520ab14a2282ff94aa/68747470733a2f2f636f766572616c6c732e696f2f7265706f732f6769746875622f6e6573746a732f6e6573742f62616467652e7376673f6272616e63683d6d61737465722339" alt="Coverage"&gt;&lt;/a&gt;
&lt;a href="https://discord.gg/G7Qnnhy" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/68cd45460f562a9d976f5d12c7f277df1a1e5033/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646973636f72642d6f6e6c696e652d627269676874677265656e2e737667" alt="Discord"&gt;&lt;/a&gt;
&lt;a href="https://opencollective.com/nest#backer" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/59fc21498487bf93d3205e191f111e2322dbff7a/68747470733a2f2f6f70656e636f6c6c6563746976652e636f6d2f6e6573742f6261636b6572732f62616467652e737667" alt="Backers on Open Collective"&gt;&lt;/a&gt;
&lt;a href="https://opencollective.com/nest#sponsor" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/338a7c8d7bfde49ffdeed72f600a4463fd92755a/68747470733a2f2f6f70656e636f6c6c6563746976652e636f6d2f6e6573742f73706f6e736f72732f62616467652e737667" alt="Sponsors on Open Collective"&gt;&lt;/a&gt;
  &lt;a href="https://paypal.me/kamilmysliwiec" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/feffc3141437886bb77600ee7e2d50c9708b3708/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f446f6e6174652d50617950616c2d6666336635392e737667"&gt;&lt;/a&gt;
    &lt;a href="https://opencollective.com/nest#sponsor" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/1d83675f76d306c2cd923e19efe8aa98f374a617/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f537570706f727425323075732d4f70656e253230436f6c6c6563746976652d3431423838332e737667" alt="Support us"&gt;&lt;/a&gt;
  &lt;a href="https://twitter.com/nestframework" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/349ec30bf4f30c56cfe19e9eedcbf64f7275fac7/68747470733a2f2f696d672e736869656c64732e696f2f747769747465722f666f6c6c6f772f6e6573746672616d65776f726b2e7376673f7374796c653d736f6369616c266c6162656c3d466f6c6c6f77"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;h2&gt;
Description&lt;/h2&gt;
&lt;p&gt;Nest is a framework for building efficient, scalable &lt;a href="http://nodejs.org" rel="nofollow"&gt;Node.js&lt;/a&gt; server-side applications. It uses modern JavaScript, is built with  &lt;a href="http://www.typescriptlang.org" rel="nofollow"&gt;TypeScript&lt;/a&gt; (preserves compatibility with pure JavaScript) and combines elements of OOP (Object Oriented Programming), FP (Functional Programming), and FRP (Functional Reactive Programming).&lt;/p&gt;
&lt;p&gt;Under the hood, Nest makes use of &lt;a href="https://expressjs.com/" rel="nofollow"&gt;Express&lt;/a&gt;, but also, provides compatibility with a wide range of other libraries, like e.g. &lt;a href="https://github.com/fastify/fastify"&gt;Fastify&lt;/a&gt;, allowing for easy use of the myriad third-party plugins which are available.&lt;/p&gt;
&lt;h2&gt;
Philosophy&lt;/h2&gt;
&lt;p&gt;In recent years, thanks to Node.js, JavaScript has become the “lingua franca” of the web for both front and backend applications, giving rise to awesome projects like &lt;a href="https://angular.io/" rel="nofollow"&gt;Angular&lt;/a&gt;, &lt;a href="https://github.com/facebook/react"&gt;React&lt;/a&gt; and &lt;a href="https://github.com/vuejs/vue"&gt;Vue&lt;/a&gt; which improve developer productivity and enable the construction of fast, testable, extensible frontend applications. However, on the server-side, while there are a lot of superb libraries, helpers and tools…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/nestjs/nest"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;Install via npm:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm i -g @nestjs/cli
nest new project-name
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Install via yarn:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yarn add @nestjs/cli
nest new project-name
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Useful Templates&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Made with &lt;a href="https://www.docker.com"&gt;Docker&lt;/a&gt; and &lt;a href="//prisma.io"&gt;Prisma&lt;/a&gt;: &lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vJ70wriM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/z1-lab"&gt;
        z1-lab
      &lt;/a&gt; / &lt;a href="https://github.com/z1-lab/nestjs-backend-template"&gt;
        nestjs-backend-template
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Nest.js Backend Template&lt;/h1&gt;
&lt;h2&gt;
Getting started&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Clone this repository and open it&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight highlight-source-shell"&gt;&lt;pre&gt;$ git clone https://github.com/z1-lab/nestjs-backend-template
$ &lt;span class="pl-c1"&gt;cd&lt;/span&gt; nestjs-backend-template&lt;/pre&gt;&lt;/div&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Install dependencies&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight highlight-source-shell"&gt;&lt;pre&gt;$ yarn&lt;/pre&gt;&lt;/div&gt;
&lt;ol start="3"&gt;
&lt;li&gt;Create a copy of the &lt;code&gt;.env.development&lt;/code&gt; file and call it &lt;code&gt;.env&lt;/code&gt;. Update the environment variables to match your current environment.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight highlight-source-shell"&gt;&lt;pre&gt;$ cp .env.development .env&lt;/pre&gt;&lt;/div&gt;
&lt;ol start="4"&gt;
&lt;li&gt;Launch a PostgreSQL database with docker, it will use the port defined in the &lt;code&gt;DB_PORT&lt;/code&gt; var.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight highlight-source-shell"&gt;&lt;pre&gt;$ docker-compose up&lt;/pre&gt;&lt;/div&gt;
&lt;ol start="5"&gt;
&lt;li&gt;Generate the prisma client&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight highlight-source-shell"&gt;&lt;pre&gt;$ yarn prisma generate&lt;/pre&gt;&lt;/div&gt;
&lt;ol start="6"&gt;
&lt;li&gt;Create the database model&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight highlight-source-shell"&gt;&lt;pre&gt;$ yarn prisma migrate up --experimental&lt;/pre&gt;&lt;/div&gt;
&lt;ol start="7"&gt;
&lt;li&gt;Launch the dev mode&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight highlight-source-shell"&gt;&lt;pre&gt;$ yarn dev&lt;/pre&gt;&lt;/div&gt;
&lt;ol start="8"&gt;
&lt;li&gt;If you're going to edit the GraphQL schema, run the following command to regenerate the TypeScript types.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight highlight-source-shell"&gt;&lt;pre&gt;$ yarn gql:typings --watch&lt;/pre&gt;&lt;/div&gt;
&lt;h2&gt;
Scripts&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;yarn dev&lt;/code&gt;. Runs the project in dev mode, which means that it won't check types and will restart with every change you make.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;yarn build&lt;/code&gt;. Compiles the project to the &lt;code&gt;./dist&lt;/code&gt; folder.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;yarn typecheck&lt;/code&gt;…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/z1-lab/nestjs-backend-template"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;Typescript nestjs starter: &lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vJ70wriM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/nestjs"&gt;
        nestjs
      &lt;/a&gt; / &lt;a href="https://github.com/nestjs/typescript-starter"&gt;
        typescript-starter
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Nest framework TypeScript starter ☕
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
  &lt;a href="http://nestjs.com/" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/0d358238ba8c67946e6555aad926b947e1a5048f/68747470733a2f2f6e6573746a732e636f6d2f696d672f6c6f676f5f746578742e737667" width="320" alt="Nest Logo"&gt;&lt;/a&gt;
&lt;/p&gt;


&lt;p&gt;A progressive &lt;a href="http://nodejs.org" rel="nofollow"&gt;Node.js&lt;/a&gt; framework for building efficient and scalable server-side applications.&lt;/p&gt;
&lt;br&gt;
    &lt;p&gt;&lt;br&gt;
&lt;a href="https://www.npmjs.com/~nestjscore" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/7fa06daeef27f85792c0ff1db02e0029fe0db68f/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f406e6573746a732f636f72652e737667" alt="NPM Version"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.npmjs.com/~nestjscore" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/195f84d670ceb5a1d47c755d24a991da4b902440/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f6c2f406e6573746a732f636f72652e737667" alt="Package License"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.npmjs.com/~nestjscore" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/81f6810e49af7ffec1a07ab0c75290e2fa88fc62/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f646d2f406e6573746a732f636f72652e737667" alt="NPM Downloads"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://travis-ci.org/nestjs/nest" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/1900a31022c6c1c9691eba5a371da17c639cc351/68747470733a2f2f6170692e7472617669732d63692e6f72672f6e6573746a732f6e6573742e7376673f6272616e63683d6d6173746572" alt="Travis"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://travis-ci.org/nestjs/nest" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/4867fff83e95821836a4220219d30e72da780613/68747470733a2f2f696d672e736869656c64732e696f2f7472617669732f6e6573746a732f6e6573742f6d61737465722e7376673f6c6162656c3d6c696e7578" alt="Linux"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://coveralls.io/github/nestjs/nest?branch=master" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/58f781d20fa774dc49625609cc2e749a64ccdf8d/68747470733a2f2f636f766572616c6c732e696f2f7265706f732f6769746875622f6e6573746a732f6e6573742f62616467652e7376673f6272616e63683d6d61737465722335" alt="Coverage"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://discord.gg/G7Qnnhy" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/68cd45460f562a9d976f5d12c7f277df1a1e5033/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646973636f72642d6f6e6c696e652d627269676874677265656e2e737667" alt="Discord"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://opencollective.com/nest#backer" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/59fc21498487bf93d3205e191f111e2322dbff7a/68747470733a2f2f6f70656e636f6c6c6563746976652e636f6d2f6e6573742f6261636b6572732f62616467652e737667" alt="Backers on Open Collective"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://opencollective.com/nest#sponsor" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/338a7c8d7bfde49ffdeed72f600a4463fd92755a/68747470733a2f2f6f70656e636f6c6c6563746976652e636f6d2f6e6573742f73706f6e736f72732f62616467652e737667" alt="Sponsors on Open Collective"&gt;&lt;/a&gt;&lt;br&gt;
  &lt;a href="https://paypal.me/kamilmysliwiec" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/b89b81e94820c18a38e7c012ee0a4969bc0d7411/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f446f6e6174652d50617950616c2d6463336435332e737667"&gt;&lt;/a&gt;&lt;br&gt;
  &lt;a href="https://twitter.com/nestframework" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/349ec30bf4f30c56cfe19e9eedcbf64f7275fac7/68747470733a2f2f696d672e736869656c64732e696f2f747769747465722f666f6c6c6f772f6e6573746672616d65776f726b2e7376673f7374796c653d736f6369616c266c6162656c3d466f6c6c6f77"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;h2&gt;
Description&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/nestjs/nest"&gt;Nest&lt;/a&gt; framework TypeScript starter repository.&lt;/p&gt;

&lt;h2&gt;
Installation&lt;/h2&gt;

&lt;div class="highlight highlight-source-shell"&gt;&lt;pre&gt;$ npm install&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;
Running the app&lt;/h2&gt;

&lt;div class="highlight highlight-source-shell"&gt;&lt;pre&gt;&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; development&lt;/span&gt;
$ npm run start

&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; watch mode&lt;/span&gt;
$ npm run start:dev

&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; production mode&lt;/span&gt;
$ npm run start:prod&lt;/pre&gt;&lt;/div&gt;
&lt;h2&gt;
Test&lt;/h2&gt;
&lt;div class="highlight highlight-source-shell"&gt;&lt;pre&gt;&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; unit tests&lt;/span&gt;
$ npm run &lt;span class="pl-c1"&gt;test&lt;/span&gt;

&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; e2e tests&lt;/span&gt;
$ npm run test:e2e

&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; test coverage&lt;/span&gt;
$ npm run test:cov&lt;/pre&gt;&lt;/div&gt;
&lt;h2&gt;
Support&lt;/h2&gt;
&lt;p&gt;Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please &lt;a href="https://docs.nestjs.com/support" rel="nofollow"&gt;read more here&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
Stay in touch&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Author - &lt;a href="https://twitter.com/kammysliwiec" rel="nofollow"&gt;Kamil Myśliwiec&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Website - &lt;a href="https://nestjs.com/" rel="nofollow"&gt;https://nestjs.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Twitter - &lt;a href="https://twitter.com/nestframework" rel="nofollow"&gt;@nestframework&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
License&lt;/h2&gt;
&lt;p&gt;Nest is &lt;a href="https://github.com/nestjs/nest/blob/master/LICENSE"&gt;MIT licensed&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;

  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/nestjs/typescript-starter"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;






&lt;p&gt;&lt;em&gt;Follow me on &lt;a href="https://twitter.com/torresc_alvaro"&gt;Twitter&lt;/a&gt; if you want to know about my future articles, projects or whatever&lt;/em&gt;&lt;/p&gt;

</description>
      <category>node</category>
      <category>javascript</category>
      <category>typescript</category>
      <category>backend</category>
    </item>
    <item>
      <title>Javascript Libraries you should know in 2020 (Part 2)</title>
      <dc:creator>Alvaro Torres Carrasco</dc:creator>
      <pubDate>Mon, 18 May 2020 17:13:57 +0000</pubDate>
      <link>https://forem.com/alvarotorresc/javascript-libraries-you-should-know-in-2020-part-2-4a41</link>
      <guid>https://forem.com/alvarotorresc/javascript-libraries-you-should-know-in-2020-part-2-4a41</guid>
      <description>&lt;p&gt;You can check te first part here: &lt;a href="https://dev.to/alvaro_torresc/9-javascript-libraries-you-should-know-in-2020-5535"&gt;Part 1&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The second part (and maybe, not the last one) has finally arrived. I have worked very hard with my TFG and a daily routine with the internship. &lt;/p&gt;

&lt;p&gt;I don't roll up anymore&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Libraries&lt;/strong&gt;
&lt;/h1&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Anime.js&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Anime.js is a lightweight JavaScript animation library with a simple, yet powerful API. It works with CSS properties, SVG, DOM attributes, and JavaScript Objects.&lt;/p&gt;

&lt;p&gt;The most powerful feature of this library is Anime's built-in staggering system makes complex follow through and overlapping animations simple. It can be used on both timings and properties. You can animate multiple CSS transforms properties with different timings simultaneously on a single HTML element. Play, pause, control, reverse, and trigger events in sync using the complete built-in callbacks and controls functions.&lt;/p&gt;

&lt;p&gt;Anime.js works with anything web. CSS, SVG, DOM attributes, and JavaScript Objects: animate everything with a single unified API.&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/juliangarnier/embed/XvjWvx?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;His website: &lt;a href="https://animejs.com"&gt;https://animejs.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can check the source code:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vJ70wriM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/juliangarnier"&gt;
        juliangarnier
      &lt;/a&gt; / &lt;a href="https://github.com/juliangarnier/anime"&gt;
        anime
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      JavaScript animation engine
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
  &lt;a href="https://animejs.com" rel="nofollow"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wpGfNsWq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://raw.githubusercontent.com/juliangarnier/anime/master/documentation/assets/img/animejs-v3-header-animation.gif" width="250"&gt;&lt;/a&gt;
  &lt;br&gt;
  anime.js
&lt;/h1&gt;
&lt;h4&gt;
JavaScript animation engine | &lt;a href="https://animejs.com" rel="nofollow"&gt;animejs.com&lt;/a&gt;
&lt;/h4&gt;
&lt;p&gt;
  &lt;a href="https://www.npmjs.com/package/animejs" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/011820ee25bf1d3ddaf635d869903b98eccaeae7/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f616e696d656a732e7376673f7374796c653d666c61742d737175617265" alt="npm version"&gt;&lt;/a&gt;
  &lt;a href="https://www.npmjs.com/package/animejs" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/3e9b69d51aee25fad784a3097676696096621d47/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f646d2f616e696d656a732e7376673f7374796c653d666c61742d737175617265" alt="npm downloads"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;blockquote&gt;
  &lt;em&gt;Anime.js&lt;/em&gt; (&lt;code&gt;/ˈæn.ə.meɪ/&lt;/code&gt;) is a lightweight JavaScript animation library with a simple, yet powerful API.&lt;br&gt;
  It works with CSS properties, SVG, DOM attributes and JavaScript Objects
&lt;/blockquote&gt;

&lt;p&gt;
  &lt;a href="https://raw.githubusercontent.com/juliangarnier/anime/master/#getting-started"&gt;Getting started&lt;/a&gt; | &lt;a href="https://raw.githubusercontent.com/juliangarnier/anime/master/#documentation"&gt;Documentation&lt;/a&gt; | &lt;a href="https://raw.githubusercontent.com/juliangarnier/anime/master/#demos-and-examples"&gt;Demos and examples&lt;/a&gt; | &lt;a href="https://raw.githubusercontent.com/juliangarnier/anime/master/#browser-support"&gt;Browser support&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
Getting started&lt;/h2&gt;
&lt;h3&gt;
Download&lt;/h3&gt;
&lt;p&gt;Via npm&lt;/p&gt;
&lt;div class="highlight highlight-source-shell"&gt;&lt;pre&gt;$ npm install animejs --save&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;or manual &lt;a href="https://github.com/juliangarnier/anime/archive/master.zip"&gt;download&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;
Usage&lt;/h3&gt;
&lt;h4&gt;
ES6 modules&lt;/h4&gt;
&lt;div class="highlight highlight-source-js"&gt;&lt;pre&gt;&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-s1"&gt;anime&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'animejs/lib/anime.es.js'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h4&gt;
CommonJS&lt;/h4&gt;
&lt;div class="highlight highlight-source-js"&gt;&lt;pre&gt;&lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-s1"&gt;anime&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-en"&gt;require&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s"&gt;'animejs'&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h4&gt;
File include&lt;/h4&gt;
&lt;p&gt;Link &lt;code&gt;anime.min.js&lt;/code&gt; in your HTML :&lt;/p&gt;
&lt;div class="highlight highlight-text-html-basic"&gt;&lt;pre&gt;&lt;span class="pl-kos"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;script&lt;/span&gt; &lt;span class="pl-c1"&gt;src&lt;/span&gt;="&lt;span class="pl-s"&gt;anime.min.js&lt;/span&gt;"&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;&lt;span class="pl-kos"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="pl-ent"&gt;script&lt;/span&gt;&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;
Hello world&lt;/h3&gt;
&lt;div class="highlight highlight-source-js"&gt;&lt;pre&gt;&lt;span class="pl-en"&gt;anime&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;{&lt;/span&gt;
  &lt;span class="pl-c1"&gt;targets&lt;/span&gt;: &lt;span class="pl-s"&gt;'div'&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt;
  &lt;span class="pl-c1"&gt;translateX&lt;/span&gt;: &lt;span class="pl-c1"&gt;250&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt;
  &lt;span class="pl-c1"&gt;rotate&lt;/span&gt;: &lt;span class="pl-s"&gt;'1turn'&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt;
  &lt;span class="pl-c1"&gt;backgroundColor&lt;/span&gt;: &lt;span class="pl-s"&gt;'#FFF'&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt;
  &lt;span class="pl-c1"&gt;duration&lt;/span&gt;: &lt;span class="pl-c1"&gt;800&lt;/span&gt;
&lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2&gt;
&lt;a href="https://animejs.com/documentation/" rel="nofollow"&gt;Documentation&lt;/a&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://animejs.com/documentation/#cssSelector" rel="nofollow"&gt;Targets&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://animejs.com/documentation/#cssProperties" rel="nofollow"&gt;Properties&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://animejs.com/documentation/#duration" rel="nofollow"&gt;Property parameters&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://animejs.com/documentation/#direction" rel="nofollow"&gt;Animation parameters&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://animejs.com/documentation/#unitlessValue" rel="nofollow"&gt;Values&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://animejs.com/documentation/#animationKeyframes" rel="nofollow"&gt;Keyframes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://animejs.com/documentation/#staggeringBasics" rel="nofollow"&gt;Staggering&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://animejs.com/documentation/#timelineBasics" rel="nofollow"&gt;Timeline&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://animejs.com/documentation/#playPause" rel="nofollow"&gt;Controls&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://animejs.com/documentation/#update" rel="nofollow"&gt;Callbacks and promises&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://animejs.com/documentation/#motionPath" rel="nofollow"&gt;SVG Animations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://animejs.com/documentation/#linearEasing" rel="nofollow"&gt;Easing functions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://animejs.com/documentation/#remove" rel="nofollow"&gt;Helpers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
&lt;a href="http://codepen.io/collection/b392d3a52d6abf5b8d9fda4e4cab61ab/" rel="nofollow"&gt;Demos and examples&lt;/a&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://codepen.io/collection/b392d3a52d6abf5b8d9fda4e4cab61ab/" rel="nofollow"&gt;CodePen demos and examples&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://juliangarnier.com" rel="nofollow"&gt;juliangarnier.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://animejs.com" rel="nofollow"&gt;animejs.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://tobiasahlin.com/moving-letters/" rel="nofollow"&gt;Moving&lt;/a&gt;…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/juliangarnier/anime"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;br&gt;
Npm&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install animejs --save
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Three.js&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Three.js is the world's most popular JavaScript framework for displaying 3D content on the web, providing you with the power to display incredible models, games, music videos, scientific and data visualizations, or pretty much anything else you can imagine, right in your browser and on your smartphone!&lt;/p&gt;

&lt;p&gt;I think as it is of significant visual importance, we had better look at graphic examples&lt;/p&gt;

&lt;p&gt;&lt;a href="https://threejs.org/examples/#webgl_animation_cloth"&gt;Example 1&lt;/a&gt;&lt;br&gt;
&lt;a href="https://threejs.org/examples/#webgl_interactive_cubes"&gt;Example 2&lt;/a&gt;&lt;br&gt;
&lt;a href="https://threejs.org/examples/#webgl_materials_standard"&gt;Example 3&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;His website: &lt;a href="https://threejs.org"&gt;https://threejs.org&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can check the source code:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vJ70wriM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/mrdoob"&gt;
        mrdoob
      &lt;/a&gt; / &lt;a href="https://github.com/mrdoob/three.js"&gt;
        three.js
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      JavaScript 3D library.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
three.js&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://www.npmjs.com/package/three" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/38011111766e8b649c2aefd2c419c887fe7d99d7/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f7468726565" alt="NPM Package"&gt;&lt;/a&gt;
&lt;a href="https://bundlephobia.com/result?p=three" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/91a1a0529030a2c91db5f311a668767213507664/68747470733a2f2f62616467656e2e6e65742f62756e646c6570686f6269612f6d696e7a69702f7468726565" alt="Build Size"&gt;&lt;/a&gt;
&lt;a href="https://www.npmtrends.com/three" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/2b64fb28c9e6b21265850f18c75157dd87086a31/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f64772f7468726565" alt="NPM Downloads"&gt;&lt;/a&gt;
&lt;a href="https://david-dm.org/mrdoob/three.js#info=devDependencies" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/e35e922e64d48cd68411223e85a8487a13b41791/68747470733a2f2f696d672e736869656c64732e696f2f64617669642f6465762f6d72646f6f622f74687265652e6a73" alt="Dev Dependencies"&gt;&lt;/a&gt;
&lt;a href="https://lgtm.com/projects/g/mrdoob/three.js/" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/b160c5cee844a412e0c7e20b829fc6a97ba72bbd/68747470733a2f2f696d672e736869656c64732e696f2f6c67746d2f616c657274732f6769746875622f6d72646f6f622f74687265652e6a73" alt="Language Grade"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
JavaScript 3D library&lt;/h4&gt;
&lt;p&gt;The aim of the project is to create an easy to use, lightweight, 3D library with a default WebGL renderer. The library also provides Canvas 2D, SVG and CSS3D renderers in the examples.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://threejs.org/examples/" rel="nofollow"&gt;Examples&lt;/a&gt; —
&lt;a href="http://threejs.org/docs/" rel="nofollow"&gt;Documentation&lt;/a&gt; —
&lt;a href="https://github.com/mrdoob/three.js/wiki"&gt;Wiki&lt;/a&gt; —
&lt;a href="https://github.com/mrdoob/three.js/wiki/Migration-Guide"&gt;Migrating&lt;/a&gt; —
&lt;a href="http://stackoverflow.com/questions/tagged/three.js" rel="nofollow"&gt;Questions&lt;/a&gt; —
&lt;a href="https://discourse.threejs.org/" rel="nofollow"&gt;Forum&lt;/a&gt; —
&lt;a href="https://join.slack.com/t/threejs/shared_invite/enQtMzYxMzczODM2OTgxLTQ1YmY4YTQxOTFjNDAzYmQ4NjU2YzRhNzliY2RiNDEyYjU2MjhhODgyYWQ5Y2MyZTU3MWNkOGVmOGRhOTQzYTk" rel="nofollow"&gt;Slack&lt;/a&gt; —
&lt;a href="https://discordapp.com/invite/HF4UdyF" rel="nofollow"&gt;Discord&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
Usage&lt;/h3&gt;
&lt;p&gt;This code creates a scene, a camera, and a geometric cube, and it adds the cube to the scene. It then creates a &lt;code&gt;WebGL&lt;/code&gt; renderer for the scene and camera, and it adds that viewport to the &lt;code&gt;document.body&lt;/code&gt; element. Finally, it animates the cube within the scene for the camera.&lt;/p&gt;
&lt;div class="highlight highlight-source-js"&gt;
&lt;pre&gt;&lt;span class="pl-k"&gt;import&lt;/span&gt; * &lt;span class="pl-k"&gt;as&lt;/span&gt; &lt;span class="pl-c1"&gt;THREE&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'./js/three.module.js'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;var&lt;/span&gt; &lt;span class="pl-s1"&gt;camera&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-s1"&gt;scene&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-s1"&gt;renderer&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;var&lt;/span&gt; &lt;span class="pl-s1"&gt;geometry&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-s1"&gt;material&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-s1"&gt;mesh&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-en"&gt;init&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-en"&gt;animate&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;function&lt;/span&gt; &lt;span class="pl-en"&gt;init&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt;
    &lt;span class="pl-s1"&gt;camera&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-k"&gt;new&lt;/span&gt; &lt;span class="pl-c1"&gt;THREE&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;PerspectiveCamera&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt; &lt;span class="pl-c1"&gt;70&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-smi"&gt;window&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;innerWidth&lt;/span&gt; / &lt;/pre&gt;…&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/mrdoob/three.js"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;AOS&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;AOS (Animate On Scroll Library) is a lightweight library that allows us to animate div or these types of containers with curious movements like flip or fade.&lt;/p&gt;

&lt;p&gt;His website: &lt;a href="https://michalsnik.github.io/aos/"&gt;https://michalsnik.github.io/aos/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/michalsnik/embed/WxNdvq?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;In his website, you can check many other examples of what this library can do.&lt;/p&gt;

&lt;p&gt;You can check the source code:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vJ70wriM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/michalsnik"&gt;
        michalsnik
      &lt;/a&gt; / &lt;a href="https://github.com/michalsnik/aos"&gt;
        aos
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Animate on scroll library
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;&lt;a href="http://michalsnik.github.io/aos/" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/8e304ed9cb73c6f55f3231baffc66753ab2d3079/68747470733a2f2f7333322e706f7374696d672e6f72672f6b7476743539686f6c2f616f735f6865616465722e706e67" alt="AOS - Animate on scroll library"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://npmjs.org/package/aos" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/45585630247c4f36f3bdbebeff8c3d48a43d6ef1/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f616f732f6e6578742e7376673f7374796c653d666c6174" alt="NPM version"&gt;&lt;/a&gt;
&lt;a href="https://npmjs.org/package/aos" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/fa77f56194730e31e7d7823d8a1db5a3e3d737ca/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f646d2f616f732e7376673f7374796c653d666c6174" alt="NPM downloads"&gt;&lt;/a&gt;
&lt;a href="https://travis-ci.org/michalsnik/aos" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/b7adcee3210e1da27ed4522a7e1dd88aed085606/68747470733a2f2f7472617669732d63692e6f72672f6d696368616c736e696b2f616f732e7376673f6272616e63683d6d6173746572" alt="Build Status"&gt;&lt;/a&gt;
&lt;a href="https://gitter.im/michalsnik/aos?utm_source=badge&amp;amp;utm_medium=badge&amp;amp;utm_campaign=pr-badge" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/15862012eb17ead9e5651b0dddfde76326d44d66/68747470733a2f2f6261646765732e6769747465722e696d2f6d696368616c736e696b2f616f732e737667" alt="Gitter"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://twitter.com/michalsnik" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/411f07c6615109375a0c2d060fc96d42b3be335c/68747470733a2f2f696d672e736869656c64732e696f2f747769747465722f666f6c6c6f772f6d696368616c736e696b2e7376673f7374796c653d736f6369616c" alt="Twitter Follow"&gt;&lt;/a&gt; &lt;a href="https://twitter.com/home?status=AOS%20-%20Animate%20on%20Scroll%20library%0Ahttps%3A//github.com/michalsnik/aos" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/83d4084f7b71558e33b08844da5c773a8657e271/68747470733a2f2f696d672e736869656c64732e696f2f747769747465722f75726c2f687474702f736869656c64732e696f2e7376673f7374796c653d736f6369616c" alt="Twitter URL"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
❗❗❗ This is README for aos@next ❗❗❗
&lt;/h2&gt;
&lt;p&gt;For last stable release (v2) go &lt;a href="https://github.com/michalsnik/aos/tree/v2"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
🚀 &lt;a href="http://michalsnik.github.io/aos/" rel="nofollow"&gt;Demo&lt;/a&gt;
&lt;/h3&gt;
&lt;h3&gt;
🌟 Codepen Examples&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://codepen.io/michalsnik/pen/WxNdvq" rel="nofollow"&gt;Different built-in animations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://codepen.io/michalsnik/pen/jrOYVO" rel="nofollow"&gt;With anchor setting in use&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://codepen.io/michalsnik/pen/EyxoNm" rel="nofollow"&gt;With anchor-placement and different easings&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://codepen.io/michalsnik/pen/WxvNvE" rel="nofollow"&gt;With simple custom animations&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 To get a better understanding how this actually works, I encourage you to check &lt;a href="https://css-tricks.com/aos-css-driven-scroll-animation-library/" rel="nofollow"&gt;my post on CSS-tricks&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
⚙ Installation&lt;/h2&gt;

&lt;h3&gt;
Basic&lt;/h3&gt;
&lt;p&gt;Add styles in &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight highlight-text-html-basic"&gt;&lt;pre&gt;  &lt;span class="pl-kos"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;link&lt;/span&gt; &lt;span class="pl-c1"&gt;rel&lt;/span&gt;="&lt;span class="pl-s"&gt;stylesheet&lt;/span&gt;" &lt;span class="pl-c1"&gt;href&lt;/span&gt;="&lt;span class="pl-s"&gt;https://unpkg.com/aos@next/dist/aos.css&lt;/span&gt;" /&amp;gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Add script right before closing &lt;code&gt;&amp;lt;/body&amp;gt;&lt;/code&gt; tag, and initialize AOS:&lt;/p&gt;
&lt;div class="highlight highlight-text-html-basic"&gt;&lt;pre&gt;  &lt;span class="pl-kos"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;script&lt;/span&gt; &lt;span class="pl-c1"&gt;src&lt;/span&gt;="&lt;span class="pl-s"&gt;https://unpkg.com/aos@next/dist/aos.js&lt;/span&gt;"&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;&lt;span class="pl-kos"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="pl-ent"&gt;script&lt;/span&gt;&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="pl-kos"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;script&lt;/span&gt;&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="pl-c1"&gt;AOS&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;init&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
  &lt;span class="pl-kos"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="pl-ent"&gt;script&lt;/span&gt;&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;
Using package managers&lt;/h3&gt;
&lt;p&gt;Install &lt;code&gt;aos&lt;/code&gt; package:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;yarn add aos@next&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;or &lt;code&gt;npm install --save aos@next&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Import script, styles and initialize AOS:&lt;/p&gt;
&lt;div class="highlight highlight-source-js"&gt;
&lt;pre&gt;&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-c1"&gt;AOS&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'aos'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-s"&gt;'aos/dist/aos.css'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt; &lt;span class="pl-c"&gt;// You can also use &amp;lt;link&amp;gt; for styles&lt;/span&gt;
&lt;span class="pl-c"&gt;// ..&lt;/span&gt;
&lt;span class="pl-c1"&gt;AOS&lt;/span&gt;&lt;/pre&gt;…&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/michalsnik/aos"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;br&gt;
Npm&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install --save aos@next
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Cleave.js&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Cleave.js has a simple purpose: to help you format input text content automatically.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Features&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;[x] Credit card number formatting&lt;br&gt;
[x] Phone number formatting&lt;br&gt;
[x] Date formatting&lt;br&gt;
[x] Numeral formatting&lt;br&gt;
[x] Custom delimiter, prefix and blocks pattern&lt;br&gt;
[x] CommonJS / AMD mode&lt;br&gt;
[x] ReactJS component&lt;br&gt;
[x] AngularJS directive (1.x)&lt;br&gt;
[x] ES Module&lt;/p&gt;

&lt;p&gt;This is an example: &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7G_RiwSH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/83yblk5660ppe4tqizhf.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7G_RiwSH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/83yblk5660ppe4tqizhf.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;His website: &lt;a href="https://nosir.github.io/cleave.js/"&gt;https://nosir.github.io/cleave.js/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can check the source code:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vJ70wriM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/nosir"&gt;
        nosir
      &lt;/a&gt; / &lt;a href="https://github.com/nosir/cleave.js"&gt;
        cleave.js
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Format input text content when you are typing...
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Cleave.js&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://travis-ci.org/nosir/cleave.js" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/642429cfb532b626fcb54be7f1311d08d83d01da/68747470733a2f2f696d672e736869656c64732e696f2f7472617669732f6e6f7369722f636c656176652e6a732e7376673f6d61784167653d32353932303030" alt="Travis"&gt;&lt;/a&gt;
&lt;a href="https://www.codacy.com/app/nosir/cleave-js?utm_source=github.com&amp;amp;utm_medium=referral&amp;amp;utm_content=nosir/cleave.js&amp;amp;utm_campaign=badger" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/06ee13402819df7abb819e4126b7c6aea076d4e1/68747470733a2f2f6170692e636f646163792e636f6d2f70726f6a6563742f62616467652f47726164652f6231633062306461343266613431386638383730373661336637333532616561" alt="Codacy Badge"&gt;&lt;/a&gt;
&lt;a href="https://badge.fury.io/js/cleave.js" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/76c5606fbdc5c71246288cb0542a0a589078bea1/68747470733a2f2f62616467652e667572792e696f2f6a732f636c656176652e6a732e737667" alt="npm version"&gt;&lt;/a&gt;
&lt;a href="https://www.npmjs.com/package/cleave.js" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/d7dd272248fa30d573b2d302cd52e163310749a5/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f646d2f636c656176652e6a732e737667" alt="npm downloads"&gt;&lt;/a&gt;
&lt;a href="https://github.com/nosir/cleave.js/blob/master/doc/doc.md"&gt;&lt;img src="https://camo.githubusercontent.com/a9925ddea541434199f224a7a9cba39270c2b7dc/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646f63756d656e74732d636865636b2d3333363263322e737667" alt="Documents"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Cleave.js has a simple purpose: to help you format input text content automatically.&lt;/p&gt;
&lt;h2&gt;
Features&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Credit card number formatting&lt;/li&gt;
&lt;li&gt;Phone number formatting (i18n js lib separated for each country to reduce size)&lt;/li&gt;
&lt;li&gt;Date formatting&lt;/li&gt;
&lt;li&gt;Numeral formatting&lt;/li&gt;
&lt;li&gt;Custom delimiter, prefix and blocks pattern&lt;/li&gt;
&lt;li&gt;CommonJS / AMD mode&lt;/li&gt;
&lt;li&gt;ReactJS component&lt;/li&gt;
&lt;li&gt;AngularJS directive (1.x)&lt;/li&gt;
&lt;li&gt;ES Module&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; &lt;a href="http://nosir.github.io/cleave.js/" rel="nofollow"&gt;the demo page&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
Why?&lt;/h2&gt;
&lt;p&gt;The idea is to provide an easy way to increase input field readability by formatting your typed data. By using this library, you won't need to write any mind-blowing regular expressions or mask patterns to format input text.&lt;/p&gt;
&lt;p&gt;However, this isn't meant to replace any validation or mask library, you should still sanitize and validate your data in backend.&lt;/p&gt;
&lt;h2&gt;
Installation&lt;/h2&gt;
&lt;h4&gt;
npm&lt;/h4&gt;
&lt;div class="highlight highlight-source-shell"&gt;&lt;pre&gt;npm install --save cleave.js&lt;/pre&gt;&lt;/div&gt;
&lt;h4&gt;
CDN&lt;/h4&gt;
&lt;p&gt;cleave.js is available on &lt;a href="https://www.jsdelivr.com/package/npm/cleave.js" rel="nofollow"&gt;jsDelivr&lt;/a&gt; and on &lt;a href="https://cdnjs.com/libraries/cleave.js" rel="nofollow"&gt;cdnjs.com&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
old school&lt;/h4&gt;
&lt;p&gt;Grab file from &lt;a href="https://github.com/nosir/cleave.js/tree/master/dist"&gt;dist&lt;/a&gt; directory&lt;/p&gt;
&lt;h2&gt;
Usage&lt;/h2&gt;
&lt;p&gt;Simply include&lt;/p&gt;
&lt;div class="highlight highlight-text-html-basic"&gt;
&lt;pre&gt;&lt;span class="pl-kos"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;script&lt;/span&gt; &lt;span class="pl-c1"&gt;src&lt;/span&gt;="&lt;span class="pl-s"&gt;cleave.min.js&lt;/span&gt;"&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;&lt;span class="pl-kos"&gt;&amp;lt;/&lt;/span&gt;&lt;/pre&gt;…&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/nosir/cleave.js"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;br&gt;
Npm&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install --save cleave.js
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Granim.js&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Granim.js is a library to create fluid and interactive gradient animations with this small javascript library.&lt;/p&gt;

&lt;p&gt;This is an example: &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7n-rRqUp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/g88hmrv53m30h1gsysg0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7n-rRqUp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/g88hmrv53m30h1gsysg0.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;His website: &lt;a href="https://sarcadass.github.io/granim.js/"&gt;https://sarcadass.github.io/granim.js/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can check the source code:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vJ70wriM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/sarcadass"&gt;
        sarcadass
      &lt;/a&gt; / &lt;a href="https://github.com/sarcadass/granim.js"&gt;
        granim.js
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Create fluid and interactive gradient animations with this small javascript library.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Granim.js &lt;a href="https://travis-ci.org/sarcadass/granim.js" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/ae062bee17847cd56b11e91a8d52d40fd86d5daa/68747470733a2f2f7472617669732d63692e6f72672f7361726361646173732f6772616e696d2e6a732e7376673f6272616e63683d6d6173746572" alt="Build Status"&gt;&lt;/a&gt; &lt;a href="https://codecov.io/gh/sarcadass/granim.js" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/39da5a7d093b51396d6ba14e0364c6491c9f3541/68747470733a2f2f636f6465636f762e696f2f67682f7361726361646173732f6772616e696d2e6a732f6272616e63682f6d61737465722f67726170682f62616467652e737667" alt="codecov"&gt;&lt;/a&gt; &lt;a href="https://gitter.im/Granim-js/Lobby?utm_source=share-link&amp;amp;utm_medium=link&amp;amp;utm_campaign=share-link" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/218711106f1b3a74eab27abe01e86637870daf9f/68747470733a2f2f6261646765732e6769747465722e696d2f7361726361646173732f6772616e696d2e706e67" alt="gitter"&gt;&lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Create fluid and interactive gradient animations with this small javascript library.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;See the &lt;a href="http://sarcadass.github.io/granim.js" rel="nofollow"&gt;demo site&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;
Install&lt;/h2&gt;
&lt;h3&gt;
From NPM&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Run &lt;code&gt;npm install granim --save&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
From Bower&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Run &lt;code&gt;bower install granim&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
Static&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Download the latest version &lt;a href="https://github.com/sarcadass/granim.js/releases"&gt;in the release section&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
How to use&lt;/h2&gt;
&lt;div class="highlight highlight-text-html-basic"&gt;&lt;pre&gt;&lt;span class="pl-c"&gt;&amp;lt;!-- Create a &amp;lt;canvas&amp;gt; element --&amp;gt;&lt;/span&gt;
&lt;span class="pl-kos"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;canvas&lt;/span&gt; &lt;span class="pl-c1"&gt;id&lt;/span&gt;="&lt;span class="pl-s"&gt;granim-canvas&lt;/span&gt;"&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;&lt;span class="pl-kos"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="pl-ent"&gt;canvas&lt;/span&gt;&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="pl-c"&gt;&amp;lt;!-- Call the script --&amp;gt;&lt;/span&gt;
&lt;span class="pl-kos"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;script&lt;/span&gt; &lt;span class="pl-c1"&gt;src&lt;/span&gt;="&lt;span class="pl-s"&gt;granim.min.js&lt;/span&gt;"&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;&lt;span class="pl-kos"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="pl-ent"&gt;script&lt;/span&gt;&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="pl-c"&gt;&amp;lt;!-- Create a Granim instance --&amp;gt;&lt;/span&gt;
&lt;span class="pl-kos"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;script&lt;/span&gt;&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="pl-k"&gt;var&lt;/span&gt; &lt;span class="pl-s1"&gt;granimInstance&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-k"&gt;new&lt;/span&gt; &lt;span class="pl-v"&gt;Granim&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;{&lt;/span&gt;
   &lt;span class="pl-c1"&gt;element&lt;/span&gt;: &lt;span class="pl-s"&gt;'#granim-canvas'&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt;
   &lt;span class="pl-c1"&gt;name&lt;/span&gt;: &lt;span class="pl-s"&gt;'granim'&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt;
   &lt;span class="pl-c1"&gt;opacity&lt;/span&gt;: &lt;span class="pl-kos"&gt;[&lt;/span&gt;&lt;span class="pl-c1"&gt;1&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-c1"&gt;1&lt;/span&gt;&lt;span class="pl-kos"&gt;]&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt;
   &lt;span class="pl-c1"&gt;states&lt;/span&gt; : &lt;span class="pl-kos"&gt;{&lt;/span&gt;
       &lt;span class="pl-s"&gt;"default-state"&lt;/span&gt;: &lt;span class="pl-kos"&gt;{&lt;/span&gt;
           &lt;span class="pl-c1"&gt;gradients&lt;/span&gt;: &lt;span class="pl-kos"&gt;[&lt;/span&gt;
               &lt;span class="pl-kos"&gt;[&lt;/span&gt;&lt;span class="pl-s"&gt;'#834D9B'&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-s"&gt;'#D04ED6'&lt;/span&gt;&lt;span class="pl-kos"&gt;]&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt;
               &lt;span class="pl-kos"&gt;[&lt;/span&gt;&lt;span class="pl-s"&gt;'#1CD8D2'&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-s"&gt;'#93EDC7'&lt;/span&gt;&lt;span class="pl-kos"&gt;]&lt;/span&gt;
           &lt;span class="pl-kos"&gt;]&lt;/span&gt;
       &lt;span class="pl-kos"&gt;}&lt;/span&gt;
   &lt;span class="pl-kos"&gt;}&lt;/span&gt;
&lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-kos"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="pl-ent"&gt;script&lt;/span&gt;&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/sarcadass/granim.js"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;br&gt;
Npm&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install granim --save
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  Remember,it´s possible I will write another part of this post, with another 5 libraries
&lt;/h3&gt;




&lt;p&gt;&lt;em&gt;Follow me on &lt;a href="https://twitter.com/torresc_alvaro"&gt;Twitter&lt;/a&gt; if you want to know about my future articles, projects or whatever&lt;/em&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>productivity</category>
      <category>codenewbie</category>
      <category>libraries</category>
    </item>
    <item>
      <title>Javascript Libraries you should know in 2020 (Part 1)</title>
      <dc:creator>Alvaro Torres Carrasco</dc:creator>
      <pubDate>Thu, 19 Mar 2020 13:18:28 +0000</pubDate>
      <link>https://forem.com/alvarotorresc/9-javascript-libraries-you-should-know-in-2020-5535</link>
      <guid>https://forem.com/alvarotorresc/9-javascript-libraries-you-should-know-in-2020-5535</guid>
      <description>&lt;p&gt;As we all know, Javascript is a very versatile programming language. At this moment, I am currently doing my TFG and I need to add some new features. I am using NodeJS with Nest at the backend and ReactJS at the frontend. Mainly, I searched two libraries: to format my dates and to make some graphics. &lt;/p&gt;

&lt;p&gt;After an intense search, I found date-fns and ChartJS. It was there when I realized that it could be interesting to make a post about very useful javascript libraries, and this is the post.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Libraries&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;I found 10 very useful libraries but, in comments, you can collaborate and add your favorite library. This post is only the first part, with 5 libraries&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;ChartJS&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Simple yet flexible JavaScript charting for designers &amp;amp; developers&lt;br&gt;
ChartJS allows you to visualize your data with simple graphics. It offers us to mix and match bar and line charts to provide a clear visual distinction between datasets.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WGiBnhao--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/mau4e7ahj1vvkcgj10d0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WGiBnhao--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/mau4e7ahj1vvkcgj10d0.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can check the source code:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vJ70wriM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/chartjs"&gt;
        chartjs
      &lt;/a&gt; / &lt;a href="https://github.com/chartjs/Chart.js"&gt;
        Chart.js
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Simple HTML5 Charts using the &amp;lt;canvas&amp;gt; tag
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
    &lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/ca884126d1d74829f36c8fa2e6947d8a411aed1f/68747470733a2f2f7777772e63686172746a732e6f72672f6d656469612f6c6f676f2d7469746c652e737667"&gt;&lt;img src="https://camo.githubusercontent.com/ca884126d1d74829f36c8fa2e6947d8a411aed1f/68747470733a2f2f7777772e63686172746a732e6f72672f6d656469612f6c6f676f2d7469746c652e737667"&gt;&lt;/a&gt;&lt;br&gt;
    Simple yet flexible JavaScript charting for designers &amp;amp; developers
&lt;/p&gt;

&lt;p&gt;
    &lt;a href="https://www.chartjs.org/docs/latest/getting-started/installation.html" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/c561888f630ae698bb509bac147a3f4d60ead59d/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652f63686172746a732f43686172742e6a732e7376673f7374796c653d666c61742d737175617265266d61784167653d363030" alt="Downloads"&gt;&lt;/a&gt;
    &lt;a href="https://travis-ci.org/chartjs/Chart.js" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/6c99cd2b57418f3d621025925c6ec0106209dc42/68747470733a2f2f696d672e736869656c64732e696f2f7472617669732f63686172746a732f43686172742e6a732e7376673f7374796c653d666c61742d737175617265266d61784167653d363030" alt="Builds"&gt;&lt;/a&gt;
    &lt;a href="https://coveralls.io/github/chartjs/Chart.js?branch=master" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/0d8e5c03d3876e33fbd60cb11ae30174889e8903/68747470733a2f2f696d672e736869656c64732e696f2f636f766572616c6c732f63686172746a732f43686172742e6a732e7376673f7374796c653d666c61742d737175617265266d61784167653d363030" alt="Coverage"&gt;&lt;/a&gt;
    &lt;a href="https://github.com/chartjs/awesome"&gt;&lt;img src="https://camo.githubusercontent.com/d3e4785b25c9fff7a488fac6ae97b6d9a9485106/68747470733a2f2f617765736f6d652e72652f62616467652d666c6174322e737667" alt="Awesome"&gt;&lt;/a&gt;
    &lt;a href="https://chartjs-slack.herokuapp.com/" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/a81c65de05aeea38ce0cad22620e5bd5a5e0d311/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f736c61636b2d63686172746a732d626c75652e7376673f7374796c653d666c61742d737175617265266d61784167653d33363030" alt="Slack"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
Documentation&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.chartjs.org/docs/latest/" rel="nofollow"&gt;Introduction&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.chartjs.org/docs/latest/getting-started/" rel="nofollow"&gt;Getting Started&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.chartjs.org/docs/latest/general/" rel="nofollow"&gt;General&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.chartjs.org/docs/latest/configuration/" rel="nofollow"&gt;Configuration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.chartjs.org/docs/latest/charts/" rel="nofollow"&gt;Charts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.chartjs.org/docs/latest/axes/" rel="nofollow"&gt;Axes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.chartjs.org/docs/latest/developers/" rel="nofollow"&gt;Developers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/chartjs/awesome"&gt;Popular Extensions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.chartjs.org/samples/" rel="nofollow"&gt;Samples&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
Contributing&lt;/h2&gt;

&lt;p&gt;Instructions on building and testing Chart.js can be found in &lt;a href="https://www.chartjs.org/docs/master/developers/contributing/#building-and-testing" rel="nofollow"&gt;the documentation&lt;/a&gt;. Before submitting an issue or a pull request, please take a moment to look over the &lt;a href="https://www.chartjs.org/docs/master/developers/contributing/" rel="nofollow"&gt;contributing guidelines&lt;/a&gt; first. For support, please post questions on &lt;a href="https://stackoverflow.com/questions/tagged/chartjs" rel="nofollow"&gt;Stack Overflow&lt;/a&gt; with the &lt;code&gt;chartjs&lt;/code&gt; tag.&lt;/p&gt;

&lt;h2&gt;
License&lt;/h2&gt;

&lt;p&gt;Chart.js is available under the &lt;a href="https://opensource.org/licenses/MIT" rel="nofollow"&gt;MIT license&lt;/a&gt;.&lt;/p&gt;

&lt;/div&gt;
&lt;br&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/chartjs/Chart.js"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;br&gt;&lt;br&gt;
ChartsJS offers us 8 chart types and each one is customisable and animable. In addition, is responsive. Redraws charts on window resize for perfect scale granularity.

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KvQpvGbt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/7s6u2sa35p017ugqfhjf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KvQpvGbt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/7s6u2sa35p017ugqfhjf.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--M6a8gjUi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/mlg3d5432chxzwnhay5x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--M6a8gjUi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/mlg3d5432chxzwnhay5x.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;br&gt;
Npm&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install chart.js --save
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Using &lt;a href="https://cdnjs.com/libraries/Chart.js"&gt;CDN&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;His website: &lt;a href="https://www.chartjs.org"&gt;https://www.chartjs.org&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;Date-fns&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Date-fns provides the most comprehensive, yet simple and consistent toolset for manipulating JavaScript dates in a browser &amp;amp; Node.js.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;format&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;formatDistance&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;formatRelative&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;subDays&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;date-fns&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="nx"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;'Today is a' iiii&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;//=&amp;gt; "Today is a Thursday"&lt;/span&gt;

&lt;span class="nx"&gt;formatDistance&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;subDays&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;span class="c1"&gt;//=&amp;gt; "3 days ago"&lt;/span&gt;

&lt;span class="nx"&gt;formatRelative&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;subDays&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;span class="c1"&gt;//=&amp;gt; "last Friday at 7:26 p.m."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;You can check the source code:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vJ70wriM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/date-fns"&gt;
        date-fns
      &lt;/a&gt; / &lt;a href="https://github.com/date-fns/date-fns"&gt;
        date-fns
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      ⏳ Modern JavaScript date utility library ⌛️
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
  &lt;a href="https://date-fns.org/" rel="nofollow"&gt;
    &lt;img alt="date-fns" title="date-fns" src="https://res.cloudinary.com/practicaldev/image/fetch/s--huiOkl4O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/date-fns/date-fns/master/docs/logotype.svg" width="300"&gt;
  &lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
  &lt;b&gt;date-fns&lt;/b&gt; provides the most comprehensive, yet simple and consistent toolset
  &lt;br&gt;
  for manipulating &lt;b&gt;JavaScript dates&lt;/b&gt; in &lt;b&gt;a browser&lt;/b&gt; &amp;amp; &lt;b&gt;Node.js&lt;/b&gt;
&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;&lt;a href="https://raw.githubusercontent.com/date-fns/date-fns/master/#docs"&gt;🚀  date-fns v2 is out&lt;/a&gt;   |   &lt;a href="https://date-fns.org/docs/" rel="nofollow"&gt;📖  Documentation&lt;/a&gt;   |   &lt;a href="https://raw.githubusercontent.com/date-fns/date-fns/master/#javascript-jobs-by-date-fns"&gt;🧑‍💻  JavaScript Jobs&lt;/a&gt;&lt;/p&gt;
  
&lt;p&gt;Powering &lt;strong&gt;&amp;gt;500k Projects&lt;/strong&gt; &amp;amp; Generating &lt;strong&gt;~7 Million Downloads/Week&lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;




&lt;h1&gt;
It's like &lt;a href="https://lodash.com" rel="nofollow"&gt;Lodash&lt;/a&gt; for dates&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;It has &lt;a href="https://date-fns.org/docs/" rel="nofollow"&gt;&lt;strong&gt;180+ functions&lt;/strong&gt; for all occasions&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Modular&lt;/strong&gt;: Pick what you need. Works with webpack, Browserify, or Rollup and also supports tree-shaking.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Native dates&lt;/strong&gt;: Uses existing native type. It doesn't extend core objects for safety's sake.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Immutable &amp;amp; Pure&lt;/strong&gt;: Built using pure functions and always returns a new date instance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TypeScript &amp;amp; Flow&lt;/strong&gt;: Supports both Flow and TypeScript&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;I18n&lt;/strong&gt;: Dozens of locales. Include only what you need.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://date-fns.org/" rel="nofollow"&gt;and many more benefits&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight highlight-source-js"&gt;
&lt;pre&gt;&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt; &lt;span class="pl-s1"&gt;compareAsc&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-s1"&gt;format&lt;/span&gt; &lt;span class="pl-kos"&gt;}&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'date-fns'&lt;/span&gt;
&lt;span class="pl-en"&gt;format&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-k"&gt;new&lt;/span&gt; &lt;span class="pl-v"&gt;Date&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-c1"&gt;2014&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-c1"&gt;1&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-c1"&gt;11&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-s"&gt;'yyyy-MM-dd'&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;
&lt;span class="pl-c"&gt;//=&amp;gt; '2014-02-11'&lt;/span&gt;
&lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-s1"&gt;dates&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-kos"&gt;[&lt;/span&gt;&lt;/pre&gt;…&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/date-fns/date-fns"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Date-fns is modular so you can pick just what you need and stop bloating your project with useless functionality. It doesn't reinvent the wheel and uses the existing native type. Also, this library uses Functional Programming and works with pure function and always returns a new date instance instead of changing the passed one.&lt;/p&gt;

&lt;p&gt;In addition to its tiny size, date-fns is fast.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;br&gt;
Npm&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install date-fns --save
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Yarn&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yarn add date-fns
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;His website: &lt;a href="https://date-fns.org"&gt;https://date-fns.org&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;HammerJS&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Hammer is a open-source library that can recognize gestures made by touch, mouse and pointerEvents. It doesn’t have any dependencies, and it’s small, &lt;strong&gt;only 7.34 kB minified + gzipped!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It’s easy to use, just include the library and create a new instance.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;hammertime&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;Hammer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;myElement&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;myOptions&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;hammertime&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;on&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;pan&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ev&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ev&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;You can check the source code:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vJ70wriM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/hammerjs"&gt;
        hammerjs
      &lt;/a&gt; / &lt;a href="https://github.com/hammerjs/hammer.js"&gt;
        hammer.js
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A javascript library for multi-touch gestures :// You can touch this
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
&lt;a href="http://hammerjs.github.io" rel="nofollow"&gt;hammer.js&lt;/a&gt;  &lt;a href="https://npmjs.org/package/hammerjs" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/d177476710a48cbc728daea6b79ec1f51935f7a9/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f68616d6d65726a732e737667" alt="NPM Version"&gt;&lt;/a&gt;  &lt;a href="https://npmjs.org/package/hammerjs" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/4514fa06138dd60f5cb26c129080a459e4c68662/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f646d2f68616d6d65726a732e737667" alt="NPM Downloads"&gt;&lt;/a&gt;  &lt;a href="https://travis-ci.org/hammerjs/hammer.js" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/d8376600d4dfd43515fba3dcd642bc82d1fc0d37/68747470733a2f2f696d672e736869656c64732e696f2f7472617669732f73747265616d2d7574696c732f7261772d626f64792f6d61737465722e737667" alt="Build Status"&gt;&lt;/a&gt;
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;A JavaScript library for detecting touch gestures.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
Installation&lt;/h2&gt;

&lt;h3&gt;
NPM&lt;/h3&gt;
&lt;div class="highlight highlight-source-shell"&gt;&lt;pre&gt;npm install --save hammerjs&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;or&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;
Yarn&lt;/h3&gt;
&lt;div class="highlight highlight-source-shell"&gt;&lt;pre&gt;yarn add hammerjs&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;or&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;
CDN&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://cdnjs.com/libraries/hammer.js/" rel="nofollow"&gt;https://cdnjs.com/libraries/hammer.js/&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
Usage&lt;/h2&gt;
&lt;p&gt;hammer.js has a quick start option for gestures it already recognizes.&lt;/p&gt;
&lt;div class="highlight highlight-source-js"&gt;&lt;pre&gt;&lt;span class="pl-c"&gt;// Get a reference to an element.&lt;/span&gt;
&lt;span class="pl-k"&gt;var&lt;/span&gt; &lt;span class="pl-s1"&gt;square&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-smi"&gt;document&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;querySelector&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s"&gt;'.square'&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-c"&gt;// Create an instance of Hammer with the reference.&lt;/span&gt;
&lt;span class="pl-k"&gt;var&lt;/span&gt; &lt;span class="pl-s1"&gt;hammer&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-k"&gt;new&lt;/span&gt; &lt;span class="pl-v"&gt;Hammer&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s1"&gt;square&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-c"&gt;// Subscribe to a quick start event: press, tap, or doubletap.&lt;/span&gt;
&lt;span class="pl-c"&gt;// For a full list of quick start events, read the documentation.&lt;/span&gt;
&lt;span class="pl-s1"&gt;hammer&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;on&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s"&gt;'press'&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-k"&gt;function&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s1"&gt;e&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt;
  &lt;span class="pl-s1"&gt;e&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;target&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;classList&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;toggle&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s"&gt;'expand'&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
  &lt;span class="pl-smi"&gt;console&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;log&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s"&gt;"You're pressing me!"&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
  &lt;span class="pl-smi"&gt;console&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;log&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s1"&gt;e&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;If you want to recognize your own gestures, such as &lt;code&gt;tripletap&lt;/code&gt;, then you'll have to use…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/hammerjs/hammer.js"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
 &lt;br&gt;
Click in this &lt;a href="https://codepen.io/jtangelder/pen/ABFnd"&gt;url&lt;/a&gt; if you want to check how it works 

&lt;p&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;br&gt;
Npm&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install --save hammerjs
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Yarn&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yarn add hammerjs
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Using &lt;a href="https://cdnjs.com/libraries/hammer.js/"&gt;CDN&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;His website: &lt;a href="https://hammerjs.github.io"&gt;https://hammerjs.github.io&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;Ramda&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Ramda is a practical functional library for JavaScript programmers.&lt;/p&gt;

&lt;p&gt;There are already several excellent libraries with a functional flavor. Typically, they are meant to be general-purpose toolkits, suitable for working in multiple paradigms. Ramda has a more focused goal. They wanted a library designed specifically for a functional programming style, one that makes it easy to create functional pipelines, one that never mutates user data.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;R&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;ramda&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;identity&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;R&lt;/span&gt;
&lt;span class="nx"&gt;R&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;identity&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;You can check the source code:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vJ70wriM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/ramda"&gt;
        ramda
      &lt;/a&gt; / &lt;a href="https://github.com/ramda/ramda"&gt;
        ramda
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      🐏 Practical functional Javascript
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Ramda&lt;/h1&gt;
&lt;p&gt;A practical functional library for JavaScript programmers.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/ramda/ramda/actions?query=workflow%3ABuild"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--l5TP-1WM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/ramda/ramda/workflows/Build/badge.svg" alt="Build Status"&gt;&lt;/a&gt;
&lt;a href="https://codeclimate.com/github/ramda/ramda/test_coverage" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/1dfade170f28a0a8cbe0c346c35f44365bc2695c/68747470733a2f2f6170692e636f6465636c696d6174652e636f6d2f76312f6261646765732f39353361336335656534323365353330316431382f746573745f636f766572616765" alt="Test Coverage"&gt;&lt;/a&gt;
&lt;a href="https://www.npmjs.org/package/ramda" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/6d7beaa522f59c1823e72b9e65ced782db4fe776/68747470733a2f2f62616467652e667572792e696f2f6a732f72616d64612e737667" alt="npm module"&gt;&lt;/a&gt;
&lt;a href="https://nest.land/package/ramda" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/5c7f7f6339926b00e89febc91ae6ad3cb8894f8d/68747470733a2f2f6e6573742e6c616e642f62616467652e737667" alt="nest badge"&gt;&lt;/a&gt;
&lt;a href="https://david-dm.org/ramda/ramda" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/bf2b873cd1e632d2760f53041f92d0c9d630abf8/68747470733a2f2f64617669642d646d2e6f72672f72616d64612f72616d64612e737667" alt="dependencies"&gt;&lt;/a&gt;
&lt;a href="https://gitter.im/ramda/ramda?utm_source=badge&amp;amp;utm_medium=badge&amp;amp;utm_campaign=pr-badge&amp;amp;utm_content=badge" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/f98684533164e648a01fa01c60f1fbacf06beb99/68747470733a2f2f6261646765732e6769747465722e696d2f4a6f696e5f436861742e737667" alt="Gitter"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
Why Ramda?&lt;/h2&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/66e5b8122f99a1a0a2ffaed17eb85fd080ed38fc/68747470733a2f2f72616d64616a732e636f6d2f72616d646146696c6c65645f323030783233352e706e67"&gt;&lt;img src="https://camo.githubusercontent.com/66e5b8122f99a1a0a2ffaed17eb85fd080ed38fc/68747470733a2f2f72616d64616a732e636f6d2f72616d646146696c6c65645f323030783233352e706e67" width="170" height="190"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There are already several excellent libraries with a functional flavor. Typically, they are meant to be general-purpose toolkits, suitable for working in multiple paradigms. Ramda has a more focused goal. We wanted a library designed specifically for a functional programming style, one that makes it easy to create functional pipelines, one that never mutates user data.&lt;/p&gt;
&lt;h2&gt;
What's Different?&lt;/h2&gt;
&lt;p&gt;The primary distinguishing features of Ramda are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Ramda emphasizes a purer functional style. Immutability and side-effect free functions
are at the heart of its design philosophy. This can help you get the job done with simple
elegant code.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ramda functions are automatically curried. This allows you to easily build up new functions
from old ones simply by not supplying the final parameters.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The parameters to Ramda functions are arranged to make it convenient for currying. The data
to be operated on is…&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/ramda/ramda"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
The primary distinguishing features of Ramda are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Ramda emphasizes a purer functional style. Immutability and side-effect free functions are at the heart of its design philosophy. This can help you get the job done with simple, elegant code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ramda functions are automatically curried. This allows you to easily build up new functions from old ones simply by not supplying the final parameters.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The parameters to Ramda functions are arranged to make it convenient for currying. The data to be operated on is generally supplied last.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ramda provides us a playground to test it: &lt;a href="https://ramdajs.com/repl/"&gt;https://ramdajs.com/repl/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;br&gt;
Npm&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install ramda
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Using CDN:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"//cdnjs.cloudflare.com/ajax/libs/ramda/0.25.0/ramda.min.js"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;His website: &lt;a href="https://ramdajs.com"&gt;https://ramdajs.com&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;ParticlesJS&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;A lightweight JavaScript library for creating particles.&lt;br&gt;
Many tiny particles moving and interacting with each other or with you have a certain appeal. If you are ever in the situation where you need to work with many particles, Particles.js will serve you well. As is evident from the name, it is a JavaScript library that can help you create particle systems. Plus, it's lightweight, easy to use, and gives you a lot of control.&lt;/p&gt;

&lt;p&gt;You can check the source code:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vJ70wriM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/VincentGarreau"&gt;
        VincentGarreau
      &lt;/a&gt; / &lt;a href="https://github.com/VincentGarreau/particles.js"&gt;
        particles.js
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A lightweight JavaScript library for creating particles
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h2&gt;
particles.js&lt;/h2&gt;
&lt;h3&gt;
A lightweight JavaScript library for creating particles.&lt;/h3&gt;

&lt;h3&gt;
&lt;code&gt;Demo / Generator&lt;/code&gt;
&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://vincentgarreau.com/particles.js/" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/cdc9e740f0c04b77449e476c91e6f7770a6af6e7/687474703a2f2f76696e63656e74676172726561752e636f6d2f7061727469636c65732e6a732f6173736574732f696d672f6769746875622d73637265656e2e6a7067" alt="particles.js generator"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Configure, export, and share your particles.js configuration on CodePen: &lt;br&gt;
&lt;a href="http://vincentgarreau.com/particles.js/" rel="nofollow"&gt;http://vincentgarreau.com/particles.js/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;CodePen demo: &lt;br&gt;
&lt;a href="http://codepen.io/VincentGarreau/pen/pnlso" rel="nofollow"&gt;http://codepen.io/VincentGarreau/pen/pnlso&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
&lt;code&gt;Usage&lt;/code&gt;
&lt;/h3&gt;
&lt;p&gt;Load particles.js and configure the particles:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;index.html&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight highlight-text-html-basic"&gt;&lt;pre&gt;&lt;span class="pl-kos"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;div&lt;/span&gt; &lt;span class="pl-c1"&gt;id&lt;/span&gt;="&lt;span class="pl-s"&gt;particles-js&lt;/span&gt;"&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;&lt;span class="pl-kos"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="pl-ent"&gt;div&lt;/span&gt;&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="pl-kos"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;script&lt;/span&gt; &lt;span class="pl-c1"&gt;src&lt;/span&gt;="&lt;span class="pl-s"&gt;particles.js&lt;/span&gt;"&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;&lt;span class="pl-kos"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="pl-ent"&gt;script&lt;/span&gt;&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;app.js&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight highlight-source-js"&gt;&lt;pre&gt;&lt;span class="pl-c"&gt;/* particlesJS.load(@dom-id, @path-json, @callback (optional)); */&lt;/span&gt;
&lt;span class="pl-s1"&gt;particlesJS&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;load&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s"&gt;'particles-js'&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-s"&gt;'assets/particles.json'&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-k"&gt;function&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt;
  &lt;span class="pl-smi"&gt;console&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;log&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s"&gt;'callback - particles.js config loaded'&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;particles.json&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight highlight-source-js"&gt;
&lt;pre&gt;&lt;span class="pl-kos"&gt;{&lt;/span&gt;
  &lt;span class="pl-s"&gt;"particles"&lt;/span&gt;: &lt;span class="pl-kos"&gt;{&lt;/span&gt;
    &lt;span class="pl-s"&gt;"number"&lt;/span&gt;: &lt;span class="pl-kos"&gt;{&lt;/span&gt;
      &lt;span class="pl-s"&gt;"value"&lt;/span&gt;: &lt;span class="pl-c1"&gt;80&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt;
      &lt;span class="pl-s"&gt;"density"&lt;/span&gt;: &lt;span class="pl-kos"&gt;{&lt;/span&gt;
        &lt;span class="pl-s"&gt;"enable"&lt;/span&gt;: &lt;span class="pl-c1"&gt;true&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt;
        &lt;span class="pl-s"&gt;"value_area"&lt;/span&gt;: &lt;span class="pl-c1"&gt;800&lt;/span&gt;
      &lt;span class="pl-kos"&gt;}&lt;/span&gt;
    &lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt;
    &lt;span class="pl-s"&gt;"color"&lt;/span&gt;: &lt;span class="pl-kos"&gt;{&lt;/span&gt;
      &lt;span class="pl-s"&gt;"value"&lt;/span&gt;: &lt;span class="pl-s"&gt;"#ffffff"&lt;/span&gt;
    &lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt;
    &lt;span class="pl-s"&gt;"shape"&lt;/span&gt;: &lt;span class="pl-kos"&gt;{&lt;/span&gt;
      &lt;span class="pl-s"&gt;"type"&lt;/span&gt;: &lt;span class="pl-s"&gt;"circle"&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt;
      &lt;span class="pl-s"&gt;"stroke"&lt;/span&gt;: &lt;span class="pl-kos"&gt;{&lt;/span&gt;
        &lt;span class="pl-s"&gt;"width"&lt;/span&gt;: &lt;span class="pl-c1"&gt;0&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt;
        &lt;span class="pl-s"&gt;"color"&lt;/span&gt;: &lt;span class="pl-s"&gt;"#000000"&lt;/span&gt;
      &lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt;
      &lt;span class="pl-s"&gt;"polygon"&lt;/span&gt;: &lt;span class="pl-kos"&gt;{&lt;/span&gt;
        &lt;span class="pl-s"&gt;"nb_sides"&lt;/span&gt;: &lt;span class="pl-c1"&gt;5&lt;/span&gt;
      &lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt;
      &lt;span class="pl-s"&gt;"image"&lt;/span&gt;: &lt;span class="pl-kos"&gt;{&lt;/span&gt;
        &lt;span class="pl-s"&gt;"src"&lt;/span&gt;: &lt;/pre&gt;…&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/VincentGarreau/particles.js"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;CodePen demo: &lt;a href="http://codepen.io/VincentGarreau/pen/pnlso"&gt;http://codepen.io/VincentGarreau/pen/pnlso&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Usage&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;index.html&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"particles-js"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"particles.js"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;app.js&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="cm"&gt;/* particlesJS.load(@dom-id, @path-json, @callback (optional)); */&lt;/span&gt;
&lt;span class="nx"&gt;particlesJS&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;load&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;particles-js&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;assets/particles.json&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;callback - particles.js config loaded&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;br&gt;
Npm&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install particles.js
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Using &lt;a href="http://www.jsdelivr.com/#!particles.js"&gt;CDN&lt;/a&gt;&lt;br&gt;
His website: &lt;a href="https://vincentgarreau.com/particles.js/"&gt;https://vincentgarreau.com/particles.js/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can check the second part &lt;a href="https://dev.to/alvaro_torresc/javascript-libraries-you-should-know-in-2020-part-2-4a41"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Remember, as soon as posible, I will write the second part of this post, with another 5 libraries
&lt;/h3&gt;




&lt;p&gt;&lt;em&gt;Follow me on &lt;a href="https://twitter.com/torresc_alvaro"&gt;Twitter&lt;/a&gt; if you want to know about my future articles, projects or whatever&lt;/em&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>productivity</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>Conventional Commits</title>
      <dc:creator>Alvaro Torres Carrasco</dc:creator>
      <pubDate>Thu, 05 Mar 2020 12:24:18 +0000</pubDate>
      <link>https://forem.com/alvarotorresc/conventional-commits-1an9</link>
      <guid>https://forem.com/alvarotorresc/conventional-commits-1an9</guid>
      <description>&lt;p&gt;Hello 🙋‍♂️, today I´m going to write about Conventional Commits (as you can see in the title). I've always wondered if there was a standardization with commits. I think this standardization is necessary and it can make our life easier. I asked a colleague if this exists, and it's the topic I'm going to talk to you about.&lt;/p&gt;

&lt;p&gt;Git is a very powerful tool that most of us have installed on their machines. The worst part of using git is the no standardization with commits. Many people don´t follow any rules and the commit log, when you have to work with a team, has many possibilities to be chaotic. &lt;/p&gt;

&lt;p&gt;Conventional Commits is a specification for adding human and machine-readable meaning to commit messages. This is a lightweight convention on top of commit messages. It provides an easy set of rules for creating an explicit commit history, which makes it easier to write automated tools on top of. This convention dovetails with &lt;a href="https://semver.org"&gt;SemVer&lt;/a&gt;, by describing the features, fixes, and breaking changes made in commit messages.&lt;/p&gt;

&lt;p&gt;Commits should have the following structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;type&amp;gt;[optional scope]: &amp;lt;description&amp;gt;

[optional body]

[optional footer]
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;






&lt;h3&gt;
  
  
  Types of commit:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;feat&lt;/strong&gt;:  Add a new feature to the codebase (MINOR in semantic versioning).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;fix&lt;/strong&gt;: Fix a bug (equivalent to a PATCH in Semantic Versioning).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;docs&lt;/strong&gt;: Documentation changes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;style&lt;/strong&gt;: Code style change (semicolon, indentation...).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;refactor&lt;/strong&gt;: Refactor code without changing public API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;perf&lt;/strong&gt;: Update code performances.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;test&lt;/strong&gt;: Add test to an existing feature.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;chore&lt;/strong&gt;: Update something without impacting the user (ex: bump a dependency in 
package.json).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Some examples:
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Commit with no body:
&lt;/h4&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;feat: allow provided config object to extend other configs

docs: correct spelling of CHANGELOG
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h4&gt;
  
  
  Commit message with scope:
&lt;/h4&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;feat(lang): add spanish language
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h4&gt;
  
  
  Commit message for a fix using an (optional) issue number:
&lt;/h4&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;fix: correct minor typos in code

see the issue for details on the typos fixed

closes issue #12
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;






&lt;h2&gt;
  
  
  Benefits
&lt;/h2&gt;

&lt;h5&gt;
  
  
  Understandability
&lt;/h5&gt;

&lt;p&gt;Commits are more descriptives and it's easier to understand them. It became also easier to contribute.&lt;/p&gt;

&lt;h5&gt;
  
  
  Changelogs
&lt;/h5&gt;

&lt;p&gt;Automatically generating CHANGELOGs.&lt;/p&gt;

&lt;h5&gt;
  
  
  Revert changes
&lt;/h5&gt;

&lt;p&gt;If you have one action per commit, it´s easier to revert a change or a git conflict&lt;/p&gt;

&lt;h5&gt;
  
  
  Improve your Git skills
&lt;/h5&gt;

&lt;p&gt;Not all repositories have a squash and merge option, you sometimes have to do this operation by yourself. It's important to know what is going on under the machine operations!!&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Follow me on &lt;a href="https://twitter.com/torresc_alvaro"&gt;Twitter&lt;/a&gt; if you want to know about my future articles, projects or whatever&lt;/em&gt;&lt;/p&gt;

</description>
      <category>git</category>
      <category>github</category>
      <category>productivity</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Creating a Twitter Bot</title>
      <dc:creator>Alvaro Torres Carrasco</dc:creator>
      <pubDate>Thu, 20 Feb 2020 20:25:35 +0000</pubDate>
      <link>https://forem.com/alvarotorresc/creating-a-twitter-bot-1pd1</link>
      <guid>https://forem.com/alvarotorresc/creating-a-twitter-bot-1pd1</guid>
      <description>&lt;p&gt;Hello 💁‍♂️, this is my second post on this platform and my first post written in english. Excuse me if I make mistakes with the language &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5tuHTmue--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/iy37qa7kckozd2sc2cg6.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5tuHTmue--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/iy37qa7kckozd2sc2cg6.gif" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;⚠️ Warning: this post have many gifs⚠️&lt;/p&gt;

&lt;p&gt;Today We´re going to do it a &lt;strong&gt;Typescript Twitter Bot&lt;/strong&gt; that retweet tweets that contains the hastag #100DaysOfCode. 100DaysOfCode it´s a coding challenge. It has two main rules: Code minimum an hour every day for the next 100 days and tweet your progress every day with the #100DaysOfCode hashtag. You can visit his website for more information: &lt;a href="https://www.100daysofcode.com/"&gt;100DaysOfCode&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Before start, we need 3️⃣ important things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Nodejs and yarn&lt;/strong&gt;: to download click here &lt;a href="https://nodejs.org/en/"&gt;Node&lt;/a&gt; and install it. Then, install yarn: npm i yarn. For more informationl, click here &lt;a href="https://yarnpkg.com/"&gt;Yarn&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Your favourite code editor&lt;/strong&gt;. My favourite and my recommendation &lt;strong&gt;is Visual Studio Code&lt;/strong&gt;. You can download it here: &lt;a href="https://code.visualstudio.com/"&gt;VsCode&lt;/a&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Twitter Developer Account&lt;/strong&gt;. First, you must have a working twitter acount. Now go to &lt;a href="https://developer.twitter.com/en/apply-for-access"&gt;Twitter Developers&lt;/a&gt;. In my case, I am going to use my personal account&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iPeaF9cN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ys7m0d08yvuady10pvpw.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iPeaF9cN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ys7m0d08yvuady10pvpw.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You have to click on apply for a developer account and select "Making a bot". Then, complete with your personal data. In the next step, you have to explain in english how you plan to use Twitter data and/or API. It´s easy. With respect to the following options, select these like the picture: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1nhDh-JM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/x329g6331j10j4veqdry.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1nhDh-JM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/x329g6331j10j4veqdry.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bLXvKPj2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/6nhnsypqrmmm9xh6l06u.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bLXvKPj2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/6nhnsypqrmmm9xh6l06u.gif" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this area, explain what are you going to rt, mg or whatever you want. Read (or not🙄, as you prefer🤣) and accept the conditions. Next, you have to confirm your email. &lt;/p&gt;

&lt;p&gt;⚠️ &lt;strong&gt;WARNING: look at the spam folder❗️❗️❗️&lt;/strong&gt;⚠️ &lt;/p&gt;

&lt;p&gt;AND...... &lt;em&gt;YES!!!!&lt;/em&gt; 🤗🤗🤗&lt;br&gt;
At this moment, We have a development account&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IRFOqIPa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/skwd59kyfc61080clqk7.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IRFOqIPa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/skwd59kyfc61080clqk7.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At this moment, we have to create an app. Write your personal information in the fields. When you finish, you have to see a screen like this. If not, but you have created the app succesfully, click in your profile name and go to apps.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VVUG6hoi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/okcq2uii5c3i0ynggw1a.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VVUG6hoi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/okcq2uii5c3i0ynggw1a.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click on details and go to &lt;strong&gt;Keys and tokens&lt;/strong&gt;. Take a txt 📝 and copy &lt;strong&gt;Api key&lt;/strong&gt;, &lt;strong&gt;Api secret key&lt;/strong&gt;, &lt;strong&gt;access token&lt;/strong&gt; and &lt;strong&gt;access token secret&lt;/strong&gt;. We will use it later.&lt;/p&gt;

&lt;p&gt;When you finish these steps, &lt;strong&gt;Congratulations&lt;/strong&gt; We configure our developer twitter account.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dD1CYjfZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/1u473idrh4uo1r1bjxat.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dD1CYjfZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/1u473idrh4uo1r1bjxat.gif" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We are going to start with the main reason for this post: &lt;strong&gt;creating a twitter bot&lt;/strong&gt;. In this case, we are going to use a node/typescript starter that one friend did it some days ago: &lt;a href="https://github.com/HorusGoul/node-ts-starter"&gt;Node/Typescript starter&lt;/a&gt; and her post about the starter: &lt;a href="https://dev.to/horusgoul/node-js-typescript-starter-for-your-next-project-mea"&gt;Post Starter&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Assuming we have git installed&lt;/strong&gt; (if not &lt;a href="https://www.linode.com/docs/development/version-control/how-to-install-git-on-linux-mac-and-windows/"&gt;Install Git&lt;/a&gt;), we are going to follow the steps that appears in the readme of my friend post.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--AABT8y33--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/z0hd8czzhotvviq461ns.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AABT8y33--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/z0hd8czzhotvviq461ns.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Open the project in your IDE and you have to see something like this: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XYNXvEFE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/7ihhylhf2ne8eqxg1c8o.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XYNXvEFE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/7ihhylhf2ne8eqxg1c8o.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We are going to create &lt;strong&gt;two files&lt;/strong&gt; in src folder: &lt;strong&gt;bot.ts&lt;/strong&gt; and &lt;strong&gt;config.ts&lt;/strong&gt;. You can delete index.ts. When you created it, select the file who is named &lt;strong&gt;package.json&lt;/strong&gt;. In this file, node administrate our dependencies. You have to change it and it should be like this (your name, license and personal data can be changed): &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Gwd0Y1Zl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/4rtc5qbsutcjkwm4t3ex.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Gwd0Y1Zl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/4rtc5qbsutcjkwm4t3ex.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We are lucky because things like babel o eslint are &lt;strong&gt;preconfigured by Horus&lt;/strong&gt;, the creator of the starter. &lt;/p&gt;

&lt;p&gt;The next step consist on modify the file &lt;strong&gt;config.ts&lt;/strong&gt;. In this file, we have to put our Twitter developers keys that we saved some minutes ago. This keys are the "passwords" for the Twitter API and without them, it´s impossible to make a Twitter bot. The config.ts should be as follows: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3iwlYrtM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/rkr3q4606i07f5gufour.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3iwlYrtM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/rkr3q4606i07f5gufour.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Maybe you are at home or in a café and you are asking yourself what is the commented lines, and it´s normal. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--AgFMQCPO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/eogf2xnuj07ji8x1rymg.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AgFMQCPO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/eogf2xnuj07ji8x1rymg.gif" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is because EsLint is a static code analysis tool for identyfing problematic patterns and warnings in Javascript code. Basically, ESLint ask us to use camel case, but for Twitter API, these names have to be like that. &lt;/p&gt;

&lt;p&gt;For the next steps, &lt;strong&gt;I recommend you to enable terminal inside VsCode&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;The First and the more important step, we have to &lt;strong&gt;import a twitter package for nodejs&lt;/strong&gt;. His name is Twit and you must install like that:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;
yarn add twit
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;When you import install and code the import in bot.ts, will be appear a type error. We have to &lt;strong&gt;install the types&lt;/strong&gt; module for twit:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;yarn add @types/twit
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KCQXVah3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/jfotzwayv8uypimzvuei.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KCQXVah3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/jfotzwayv8uypimzvuei.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, we have to create a new &lt;strong&gt;instance of twit&lt;/strong&gt;. In this case, his name are going to be twitter and it´s required to import the config.ts&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;Twitter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;twit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./config&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;We are going to create an &lt;strong&gt;object named twitterOptions&lt;/strong&gt;, for example. In this object, we have to indicate to twitter some parameters that are essential. Again, add a comment line to skip EsLint. This object is &lt;strong&gt;Twit.Params type&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;twitterOptions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;twit&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Params&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;q&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#100DaysOfCode&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;count&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="c1"&gt;// eslint-disable-next-line @typescript-eslint/camelcase&lt;/span&gt;
  &lt;span class="na"&gt;result_type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;recent&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;The parameter "q"&lt;/strong&gt; indicate the hastag we want to retweet. You can change it for another hastag.&lt;/p&gt;

&lt;p&gt;If you want to know more about these parameters, click here: &lt;a href="https://developer.twitter.com/en/docs/tweets/search/api-reference/get-search-tweets"&gt;Parameters Twitter API&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--S3Hb7opI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/vn0nschg2th9y1qd4c6x.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--S3Hb7opI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/vn0nschg2th9y1qd4c6x.gif" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Create an arrow function with a name, in my case, &lt;strong&gt;retweetLatest&lt;/strong&gt;.&lt;br&gt;
Inside this function, we are going to make a &lt;strong&gt;Get request&lt;/strong&gt;. This request GET any of the REST API endpoints. There are three parameters. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;T.get(path, [params], callback)&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;path&lt;/strong&gt; is the endpoint to hit, &lt;strong&gt;params&lt;/strong&gt; (Optional) parameters for the request and &lt;strong&gt;callback&lt;/strong&gt;: function (err, data, response) data is the parsed data received from Twitter and response is the message received from Twitter.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;Twitter&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kd"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;search/tweets&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;twitterOptions&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;any&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Inside, we are to put an &lt;strong&gt;if&lt;/strong&gt; structure to discrminate if there is an error or not:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;There was an error with your hashtag search:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Inside the &lt;strong&gt;if&lt;/strong&gt; , we have to pick the id of the tweet we picked.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;With&lt;/span&gt; &lt;span class="nx"&gt;the&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt; &lt;span class="nx"&gt;saved&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;we&lt;/span&gt; &lt;span class="nx"&gt;are&lt;/span&gt; &lt;span class="nx"&gt;going&lt;/span&gt; &lt;span class="nx"&gt;to&lt;/span&gt; &lt;span class="nx"&gt;make&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="nx"&gt;post&lt;/span&gt; &lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="nx"&gt;Same&lt;/span&gt; &lt;span class="nx"&gt;usage&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;Twitter&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;statuses/retweet/&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;retweetId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;{},&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;Response&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

    &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Import the Response type in the Twit initial import as you can see in the picture: &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PMTcDhK---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/mmeiqx93bpsapyn74epj.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PMTcDhK---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/mmeiqx93bpsapyn74epj.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To finish the retweet bot, you have to put &lt;strong&gt;two if&lt;/strong&gt; structures discriminating by &lt;strong&gt;response&lt;/strong&gt; and &lt;strong&gt;error&lt;/strong&gt; and bot.ts is like that: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--blrOJRGl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/s3vekqeqce8a6t09n5z8.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--blrOJRGl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/s3vekqeqce8a6t09n5z8.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To finish, call the function and add one &lt;strong&gt;setInterval&lt;/strong&gt; to call the same function every so often:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;retweetLatest&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nx"&gt;setInterval&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;retweetLatest&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;To run the bot, put this command in the terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;yarn dev
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;When you run this command in your terminal, see your Bot account in Twitter. You have to see a retweet (if there are any) in your feed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1efTS8c3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/9x9cqxhb78pju8apdlhg.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1efTS8c3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/9x9cqxhb78pju8apdlhg.gif" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;First, thanks you for reading this post. Comment if you liked it 😁, or if not😢.&lt;/p&gt;

&lt;p&gt;To say goodbye, I put my repo of this &lt;a href="https://github.com/alvarotorresc/bot_twitter_ts"&gt;bot&lt;/a&gt; on github. The repo of the &lt;a href="https://github.com/HorusGoul/node-ts-starter"&gt;starter&lt;/a&gt; that we use in this tutorial and last but not least, &lt;strong&gt;FOLLOW ME ON TWITTER&lt;/strong&gt; &lt;a href="https://twitter.com/torresc_alvaro"&gt;Alvaro Torres Carrasco&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7Puvt4ZR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/70etm8aakq9a0g26wnvo.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7Puvt4ZR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/70etm8aakq9a0g26wnvo.gif" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>bot</category>
      <category>twitter</category>
      <category>node</category>
      <category>typescript</category>
    </item>
    <item>
      <title>Personal Brand para estudiantes🎓</title>
      <dc:creator>Alvaro Torres Carrasco</dc:creator>
      <pubDate>Thu, 14 Nov 2019 11:36:17 +0000</pubDate>
      <link>https://forem.com/alvarotorresc/personal-brand-para-estudiantes-2516</link>
      <guid>https://forem.com/alvarotorresc/personal-brand-para-estudiantes-2516</guid>
      <description>&lt;p&gt;Hola, soy &lt;strong&gt;Álvaro Torres&lt;/strong&gt; 🙋‍♂️ y este es mi primer post en la plataforma. Aclarar antes de todo que &lt;strong&gt;no soy un profesional ni tengo estudios de marketing digital&lt;/strong&gt;, solo me baso en mi corta experiencia y en las de aquellas personas con las que he compartido conocimientos en estos 3 años que llevo en el mundo de la programación.&lt;/p&gt;

&lt;p&gt;Antes de todo, me gustaría explicar porqué hago este post. Conozco a muchos estudiantes como yo, que salen al mundo laboral, ya sea a través de &lt;strong&gt;FCT&lt;/strong&gt; o tras haber &lt;strong&gt;acabado la universidad&lt;/strong&gt; y &lt;strong&gt;creen que con tener el título es suficiente&lt;/strong&gt; (spoiler ➡ &lt;strong&gt;NO&lt;/strong&gt;❗❗). Considero que cada programador debería tener bien cuidada su imagen personal, ya que en este mundo tan globalizado en el que vivimos actualmente, y más en este nuestro sector, &lt;strong&gt;ser visible es vital&lt;/strong&gt;. ¿Has buscado alguna vez tu nombre en internet?🌐. Si no lo has hecho hace menos de un mes, te insto a abrir una pestaña nueva y comprobarlo. Venga, no seas vago, tómate unos segundos. ¿Ya?, prosigamos. ¿Qué habéis obtenido de vuestra búsqueda? Supongo que redes sociales, perfiles en plataformas conocidas y alguna cosa más (todo legal por favor 🙄). Pero, ¿es esto correcto?. Os voy a dejar una captura de lo que pasa cuando buscas mi nombre en internet:  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F6xcu6gp6fwgg00nkeg5v.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F6xcu6gp6fwgg00nkeg5v.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;El resultado de mi búsqueda es ciertamente bueno&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/l49JCSwMXyxHnYJws/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/l49JCSwMXyxHnYJws/giphy.gif" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Aunque no todo lo que debería&lt;/strong&gt;. Como programador, lo más importante es que se vean, como en la captura de mi nombre, Linkedin, Twitter, plataformas como Medium o Dev.to y resultados que sean buenos para que una persona, la cual no te conoce de nada, al ver tu currículum o al hacer una entrevista de trabajo por ejemplo, luego pueda contrastar quién eres y tenga al alcance de la mano esos resultados. ¿Cómo se consigue esto? Lo veremos más adelante.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Github&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Probablemente sea &lt;strong&gt;el mejor escaparate para un desarrollador&lt;/strong&gt;. Para los más despistados, Github es una plataforma para programadores y desarrolladores en la que alojar proyectos utilizando el sistema de control de versiones &lt;strong&gt;&lt;em&gt;Git&lt;/em&gt;&lt;/strong&gt;. En cualquier puesto de trabajo al que quieras acceder, es tu principal valedor. Cualquier persona puede ver como has &lt;strong&gt;estructurado tu proyecto, con que tecnologías lo has desarrollado o incluso con que equipo de trabajo has realizado el proyecto&lt;/strong&gt;. Para tener un buen perfil de Github, los profesionales nos indican que hay ciertas prácticas a seguir ✅. La regla más importante es la siguiente: &lt;strong&gt;El peor perfil de Github es aquel que está vacío&lt;/strong&gt;. No hace falta que desarrolles el nuevo Facebook, no es el cometido en este post. En este caso la utilizaremos como un escaparate para que los demás puedan ver nuestros proyectos. Otra de las cosas más importantes es &lt;strong&gt;contribuir en proyectos Open Source&lt;/strong&gt; o hacer esos tan famosos &lt;em&gt;pull request&lt;/em&gt; a proyectos de amigos, conocidos, compañeros de trabajo o proyectos que te parezcan interesantes, &lt;strong&gt;que tengas una cierta actividad en el perfil&lt;/strong&gt;. Demostrar que eres capaz de ver y tratar un código que no has escrito y aportar algo que ayude al proyecto. Escribe un &lt;strong&gt;&lt;em&gt;README&lt;/em&gt;&lt;/strong&gt; que describa correctamente el contenido y objetivo del proyecto y utiliza una organización de carpetas con nombres claros y que ayuden a entender el contenido de cada carpeta. Una de las últimas &lt;strong&gt;&lt;em&gt;features&lt;/em&gt;&lt;/strong&gt; introducidas es &lt;strong&gt;GitHub Pages&lt;/strong&gt;. Algo tan sencillo, y a la vez tan increíblemente potente, como poder ver nuestros proyectos en un hosting real de forma gratuita, eso sí, páginas estáticas. Ya no hay excusa para subir tu web personal a Github Pages.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/3oD3YveOJWdwIAfZ5e/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/3oD3YveOJWdwIAfZ5e/giphy.gif" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Otra de las buenas prácticas que se recomiendan al usar Github es tener una buena estructura en los mensajes de &lt;strong&gt;_commits-&lt;/strong&gt;.&lt;br&gt;
Puedes emplear algunos sufijos como:&lt;/p&gt;

&lt;p&gt;☑ &lt;strong&gt;feat&lt;/strong&gt;:&lt;br&gt;
Describe si trabajaste en un nuevo feature&lt;/p&gt;

&lt;p&gt;☑ &lt;strong&gt;fix&lt;/strong&gt;:&lt;br&gt;
Describe si solucionaste un bug&lt;/p&gt;

&lt;p&gt;☑ &lt;strong&gt;docs&lt;/strong&gt;:&lt;br&gt;
Dice si hiciste algún cambio en la documentación&lt;/p&gt;

&lt;p&gt;☑ &lt;strong&gt;test&lt;/strong&gt;:&lt;br&gt;
Indica si añadiste un test&lt;/p&gt;

&lt;p&gt;☑ &lt;strong&gt;refactor&lt;/strong&gt;:&lt;br&gt;
Nos muestra que se ejecutó algún refactor en el código&lt;/p&gt;

&lt;p&gt;Sé ordenado y pulcro a la hora de trabajar en Github ya que recuerda, es una plataforma donde todos pueden ver tu código y tu forma de trabajar es muy importante para las empresas. Te dejo un &lt;a href="https://platzi.com/blog/buenas-practicas-git-y-github/" rel="noopener noreferrer"&gt;post&lt;/a&gt; de Platzi donde ver buenas prácticas para usar esta plaforma.&lt;/p&gt;

&lt;p&gt;Y recuerda, si no sigues estas pautas &lt;br&gt;
&lt;a href="https://i.giphy.com/media/W3TI2Bwx9kfXCcQSb9/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/W3TI2Bwx9kfXCcQSb9/giphy.gif" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Linkedin&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;El arma indispensable, que todo programador debería tener en su aval, con permiso de Github, es &lt;strong&gt;Linkedin&lt;/strong&gt;. ¿Qué es Linkedin?.&lt;br&gt;
Linkedin tiene 3 funciones principales: &lt;br&gt;
➡ &lt;strong&gt;Plataforma de gestión de contactos&lt;/strong&gt;: &lt;strong&gt;&lt;strong&gt;networking&lt;/strong&gt;&lt;/strong&gt;. Esta red social nos permite conectar con gente de todo el mundo 👨‍👩‍👧‍👧, teniendo acceso a su perfil y sus datos profesionales y permitiendo que los conectados de esa persona, puedan conectar contigo.&lt;br&gt;
➡ &lt;strong&gt;Comunicación&lt;/strong&gt;: podemos escribir, compartir y opinar del tema que queramos y todos nuestros contactos, y a la vez, los de este, ver y poder interactuar con nuestro post 📑.&lt;br&gt;
➡ &lt;strong&gt;Empleo&lt;/strong&gt;: es una de las herramientas más potentes de empleo profesional. Todo profesional debe tener Linkedin, por lo tanto, tienes visibilidad en el mundo profesional de manera instantánea.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/l378BQcSJnA8YeI24/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/l378BQcSJnA8YeI24/giphy.gif" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tener una &lt;strong&gt;foto clara de tu rostro&lt;/strong&gt;, tener actualizado al día tanto el &lt;strong&gt;historial académico&lt;/strong&gt; como el profesional. Es importante que vean que has estudiado y dónde has trabajado. &lt;em&gt;Publica, lee, comparte&lt;/em&gt;. Interactúa con los demás en Linkedin. Por último, y no menos importante, &lt;em&gt;personaliza tu URL&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OJO&lt;/strong&gt; 👀: Para esto hay que tener un buen perfil de Linkedin, muy completo y siguiendo unas pautas precisas, os dejo este &lt;a href="https://keepcoding.io/es/blog/consejos-para-potenciar-tu-perfil-de-linkedin-como-programador/" rel="noopener noreferrer"&gt;post&lt;/a&gt;. A mí me ayudó mucho.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/loRq2Z9QcstgF7QoD1/giphy-downsized.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/loRq2Z9QcstgF7QoD1/giphy-downsized.gif" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Redes sociales&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Es importante que si quieres usar tus redes sociales como forma de visibilización en el mundo de la tecnología, seas &lt;strong&gt;constante&lt;/strong&gt;, tengas &lt;strong&gt;buen contenido&lt;/strong&gt; y sean algo más &lt;strong&gt;serias&lt;/strong&gt; que cuando teníamos 15 años (ejemplo: shuRubio19 🤣). En muchas ocasiones, las redes sociales, sobre todo &lt;strong&gt;Twitter&lt;/strong&gt;, es una gran fuente de información, de &lt;strong&gt;visibilización&lt;/strong&gt; para tus propios posts, aplicaciones, etc o simplemente para búsqueda de empleo. Una muy buena idea para llenar tus redes sociales es con &lt;strong&gt;fotos de los eventos de tecnología a los que acudes o ir informando del progreso de tu proyecto personal&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Plataformas&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Un aspecto muy en cuenta para las empresas son tus &lt;strong&gt;gustos y aficiones personales&lt;/strong&gt;, si te cultivas en tu tiempo libre o sin embargo, eres un amante de los deportes de riesgo. Es una buen síntoma que tengas aficiones y que no solo te dediques a la informática. Yo por ejemplo, escribo artículos sobre baloncesto en un blog muy conocido en España&lt;br&gt;
(spam: &lt;a href="https://www.solobasket.com/users/alvaritotc" rel="noopener noreferrer"&gt;https://www.solobasket.com/users/alvaritotc&lt;/a&gt; 🏀).&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Tu propia web&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Otra buenísima práctica es tener &lt;strong&gt;tu propia web&lt;/strong&gt;, con un dominio con tu nombre y apellidos, que &lt;strong&gt;salga en los primeros resultados&lt;/strong&gt; de Google al buscarte. En ella es bueno que pongas tu &lt;strong&gt;currículum web&lt;/strong&gt;, &lt;strong&gt;tus post personales&lt;/strong&gt; (si tienes), enlaces a tus redes sociales o hasta una demostración de lo que puedes hacer. Hay muchos designers ✍🏻 que usan su propia web para demostrar lo que son capaces de imaginar y crean un entorno muy amigable para el usuario, en resumen, tu carta de presentación.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/zKNxmEraPcoKI/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/zKNxmEraPcoKI/giphy.gif" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Es muy recomendable, aunque quizás algo más díficil si estás empezando, que des &lt;strong&gt;cursos online&lt;/strong&gt; 🎓, en plataformas web como Udemy o incluso en Youtube. Con cursos online, a la vez que demuestras tu manejo de dicha tecnología, también das a conocer tu manera de expresarte, de comunicarte con los demás. Otra muy buena idea, y os aviso ya, pronto pondré en práctica, es hacer tu propio &lt;strong&gt;&lt;em&gt;Podcast&lt;/em&gt;&lt;/strong&gt;, en plataformas como iVoox o Spotify. Todas estas prácticas no son más que una ayuda para aumentar nuestra presencia como programadores en la web y que podamos tener &lt;em&gt;una red de contactos amplia&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;En resumen&lt;/strong&gt; 📝
&lt;/h2&gt;

&lt;p&gt;La mejor forma de tener &lt;strong&gt;visibilidad online&lt;/strong&gt; es ser tú mismo, y para ello debes tener en cuenta estos tips que te he dado. Es importante ser activo en aquellas plataformas en las que estás dado de alta y sobre todo darle uso y los resultados llegarán. El primer día mi Linkedin no estaba en el primer resultado de Google dado que hay un cantante sudamericano, si no recuerdo mal, que comparte nombre conmigo. Me ha costado lo mío, pero al final al buscar mi nombre y mis apellidos salen los resultados que buscaba. Todo se puede conseguir con esfuerzo.&lt;/p&gt;

&lt;p&gt;Muchas gracias por dejar que te robe unos minutos de tu vida y dedicarte a leer mi Post. Nos vemos en la próxima. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fen4ls4vpepbcofv2dd3e.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fen4ls4vpepbcofv2dd3e.gif" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>personalbrand</category>
      <category>hiring</category>
      <category>offers</category>
    </item>
  </channel>
</rss>
