<?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>DEV Community: Ajay kumbhare</title>
    <description>The latest articles on DEV Community by Ajay kumbhare (@ajaykumbhare).</description>
    <link>https://dev.to/ajaykumbhare</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%2F450957%2Fcd0f725c-f0f6-4d99-a978-8c1c773f71a8.jpg</url>
      <title>DEV Community: Ajay kumbhare</title>
      <link>https://dev.to/ajaykumbhare</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ajaykumbhare"/>
    <language>en</language>
    <item>
      <title>Frontend Interview Resources</title>
      <dc:creator>Ajay kumbhare</dc:creator>
      <pubDate>Thu, 05 May 2022 05:08:42 +0000</pubDate>
      <link>https://dev.to/ajaykumbhare/frontend-interview-resources-2mjb</link>
      <guid>https://dev.to/ajaykumbhare/frontend-interview-resources-2mjb</guid>
      <description>&lt;h2&gt;
  
  
  Preparing for front-end interviews?
&lt;/h2&gt;

&lt;p&gt;I have found some good repositories to prepare for front-end interviews.&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--566lAguM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/thedaviddias"&gt;
        thedaviddias
      &lt;/a&gt; / &lt;a href="https://github.com/thedaviddias/Resources-Front-End-Beginner"&gt;
        Resources-Front-End-Beginner
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      💯 The most essential list of resources for Front-End beginners (🇺🇸 🇬🇧 🇨🇦 &amp;amp; 🇫🇷)
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
The most essential list of resources for Front-End beginners (🇺🇸 🇬🇧 &amp;amp; 🇫🇷)&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://gitter.im/Front-End-Checklist/Lobby?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/302af9f69db66ff30b12f9b98450455d6198c3a281c2680d24a8bbd94e67840f/68747470733a2f2f6261646765732e6769747465722e696d2f46726f6e742d456e642d436865636b6c6973742f4c6f6262792e737667" alt="Join the chat at https://gitter.im/sky-starter-kit/Lobby"&gt;&lt;/a&gt; &lt;a href="https://github.com/thedaviddias/Resources-Front-End-Beginner/graphs/contributors"&gt;&lt;img src="https://camo.githubusercontent.com/83c049da06e9fd913b13000a3f0ee0d1b4e10e89031ecf51f33b2891f50c384c/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6e7472696275746f72732f7468656461766964646961732f5265736f75726365732d46726f6e742d456e642d426567696e6e65722e737667" alt="Contributors"&gt;&lt;/a&gt;
&lt;a href="https://creativecommons.org/publicdomain/zero/1.0/" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/90cbb26907a2e8a092d334981bb960ae729c5fe774e50c5eae34a6c409b52c3b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4343302d677265656e2e737667" alt="CC0"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you want to learn how to become a Front-End developer, you are in the right place!&lt;/p&gt;
&lt;p&gt;I will regularly update that list with new resources and links I found on the web. Don't hesitate to participate by sending a PR! Maybe your first on Github :)&lt;/p&gt;
&lt;p&gt;I'm using some emoticons to give you more information on these links.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;All links without a flag are in English 🇺🇸 🇬🇧. The flag 🇫🇷 means the resource is in French, 🌍 means the resource is multi-language.&lt;/li&gt;
&lt;li&gt;
💰 are paid tutorials, 🆓 are free tutorials. Sometimes you will have some free videos / articles and other paid on the same website.&lt;/li&gt;
&lt;li&gt;
🔝 indicate that the link is a reference&lt;/li&gt;
&lt;li&gt;
📹 is present when video content is available&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
Table of Contents&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/thedaviddias/Resources-Front-End-Beginner#start-here"&gt;Start here&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/thedaviddias/Resources-Front-End-Beginner#learn-html"&gt;Learn HTML&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/thedaviddias/Resources-Front-End-Beginner#learn-css"&gt;Learn CSS&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/thedaviddias/Resources-Front-End-Beginner#learn-javascript"&gt;Learn&lt;/a&gt;&lt;/strong&gt;…&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/thedaviddias/Resources-Front-End-Beginner"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&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--566lAguM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/sadanandpai"&gt;
        sadanandpai
      &lt;/a&gt; / &lt;a href="https://github.com/sadanandpai/frontend-learning-kit"&gt;
        frontend-learning-kit
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Frontend tech guide and curated collection of frontend materials
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Frontend Learning Kit&lt;/h1&gt;
&lt;h4&gt;
Frontend tech guide and curated collection of frontend materials&lt;/h4&gt;
&lt;div&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/sadanandpai/frontend-learning-kit./frontend.svg"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zTNcRr7_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/sadanandpai/frontend-learning-kit./frontend.svg" height="300px"&gt;&lt;/a&gt;
  &lt;p&gt;
    &lt;a href="https://github.com/sadanandpai/frontend-learning-kit"&gt;&lt;img src="https://camo.githubusercontent.com/1eedd89a388c1907162ea271655041e783a7365d85a96f2e69e3c05426423978/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f736164616e616e647061692f66726f6e74656e642d6c6561726e696e672d6b69743f7374796c653d666f722d7468652d6261646765"&gt;&lt;/a&gt;
    &lt;a href="https://github.com/sadanandpai/frontend-learning-kit"&gt;&lt;img src="https://camo.githubusercontent.com/e983b92b4b1e3bae7096b30f226697e4130bdda0764e3b8d7a8269e8735dc762/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f666f726b732f736164616e616e647061692f66726f6e74656e642d6c6561726e696e672d6b69743f6c6f676f436f6c6f723d677265656e267374796c653d666f722d7468652d6261646765"&gt;&lt;/a&gt;
    &lt;a href="https://github.com/sadanandpai/frontend-learning-kit"&gt;&lt;img src="https://camo.githubusercontent.com/4f26b1624d2a793780d9682d69158afc5ccd9977641b6bb9a74b5976986c5cc5/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6e7472696275746f72732f736164616e616e647061692f66726f6e74656e642d6c6561726e696e672d6b69743f6c6f676f436f6c6f723d677265656e267374796c653d666f722d7468652d6261646765"&gt;&lt;/a&gt;
    &lt;a href="https://github.com/sadanandpai/frontend-learning-kit"&gt;&lt;img src="https://camo.githubusercontent.com/a8e926a2773c96113e47e3783ddfb73b724cf7d5e21e91bc790335bf9b4e781c/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f736164616e616e647061692f66726f6e74656e642d6c6561726e696e672d6b69743f7374796c653d666f722d7468652d6261646765"&gt;&lt;/a&gt;
  &lt;/p&gt;
  Show your support by giving a ⭐  to this repo
&lt;/div&gt;

&lt;div&gt;
    &lt;h4&gt;
&lt;a href="https://github.com/sadanandpai/frontend-learning-kit./2022_FE_roadmap.pdf"&gt;2022 Frontend Dev Interview checklist &amp;amp; Roadmap&lt;/a&gt;
&lt;/h4&gt;
    &lt;h4&gt;
&lt;a href="https://github.com/sadanandpai/frontend-learning-kit./role-guide.md"&gt;Frontend Role Guide&lt;/a&gt; to know about different frontend roles and their criterion&lt;/h4&gt;
    &lt;h4&gt;
&lt;a href="https://github.com/sadanandpai/frontend-learning-kit./interview-guide.md"&gt;Frontend Interview Guide&lt;/a&gt; to know about different frontend interview rounds&lt;/h4&gt;
    &lt;h4&gt;
&lt;a href="https://github.com/sadanandpai/frontend-learning-kit./frontend_projects.pdf"&gt;Frontend projects for Practice &amp;amp; interviews&lt;/a&gt; (beginners to intermediates)&lt;/h4&gt;
    &lt;h4&gt;
&lt;a href="https://github.com/sadanandpai/frontend-learning-kit./faq.md"&gt;FAQs&lt;/a&gt; to clarify common doubts&lt;/h4&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;h2&gt;
Frontend resources/materials&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;HTML&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
📗  &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTML" rel="nofollow"&gt;MDN HTML&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
📗  &lt;a href="https://www.w3schools.com/html/" rel="nofollow"&gt;W3 Schools&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;
&lt;p&gt;&lt;strong&gt;CSS&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
📗  &lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS" rel="nofollow"&gt;MDN CSS&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
📗  &lt;a href="https://web.dev/learn/css/" rel="nofollow"&gt;Web Dev&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
🎥  &lt;a href="https://www.udemy.com/course/css-the-complete-guide-incl-flexbox-grid-sass/" rel="nofollow"&gt;CSS Complete Guide - Udemy&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
📘  &lt;a href="https://css-for-js.dev/" rel="nofollow"&gt;CSS for JS developers&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;
&lt;p&gt;&lt;strong&gt;Advanced CSS&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
📘  &lt;a href="https://debuggingcss.com/" rel="nofollow"&gt;Debugging CSS&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
🎥  &lt;a href="https://cssdemystified.com/" rel="nofollow"&gt;CSS Demystified&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;
&lt;p&gt;&lt;strong&gt;JavaScript&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
📗  &lt;a href="https://eloquentjavascript.net/" rel="nofollow"&gt;Eloquent JavaScript&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
📗  &lt;a href="https://javascript.info/" rel="nofollow"&gt;JavaScript Info&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
📗  &lt;a href="https://www.javascripttutorial.net/" rel="nofollow"&gt;JavaScript Tutorial&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
📘  &lt;a href="https://exploringjs.com/impatient-js/toc.html" rel="nofollow"&gt;JavaScript for Impatient Programmers&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
📘  &lt;a href="https://justjavascript.com/" rel="nofollow"&gt;Just Javascript&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
🎥  &lt;a href="https://www.udemy.com/course/the-complete-javascript-course/" rel="nofollow"&gt;Complete JavaScript&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
🎥  &lt;a href="https://www.udemy.com/course/javascript-the-complete-guide-2020-beginner-advanced/" rel="nofollow"&gt;Javascript Complete Guide&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;
&lt;p&gt;&lt;strong&gt;Advanced JavaScript&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
📗  &lt;a href="https://github.com/getify/You-Dont-Know-JS"&gt;You don't know JS&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
📗  &lt;a href="https://www.manning.com/books/secrets-of-the-javascript-ninja-second-edition" rel="nofollow"&gt;Secrets of the JavaScript Ninja&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
📘  &lt;a href="https://exploringjs.com/deep-js/toc.html" rel="nofollow"&gt;Deep JavaScript&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
📘  &lt;a href="https://www.oreilly.com/library/view/professional-javascript-for/9781119366447/" rel="nofollow"&gt;Professional JavaScript for Web developers&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
🎥  &lt;a href="https://frontendmasters.com/courses/deep-javascript-v3/" rel="nofollow"&gt;Deep JavaScript&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/sadanandpai/frontend-learning-kit"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&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--566lAguM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/thedaviddias"&gt;
        thedaviddias
      &lt;/a&gt; / &lt;a href="https://github.com/thedaviddias/Front-End-Design-Checklist"&gt;
        Front-End-Design-Checklist
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      💎 The Design Checklist for Creative Web Designers and Patient Front-End Developers
    &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://github.com/thedaviddias/Front-End-Design-Checklist/images/front-end-design-checklist-banner.jpg"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--auYsv73E--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/thedaviddias/Front-End-Design-Checklist/images/front-end-design-checklist-banner.jpg" alt="Front-End Design Checklist"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
Front-End Design Checklist&lt;/h2&gt;
&lt;p&gt;
  &lt;em&gt; The Design Checklist for Front-End Developers is an exhaustive list of elements which can help developers to analyse and understand web designs and ensure the quality of their Front-End development.&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://makeapullrequest.com" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/b0ad703a46e8b249ef2a969ab95b2cb361a2866ecb8fe18495a2229f5847102d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5052732d77656c636f6d652d627269676874677265656e2e737667" alt="PRs Welcome"&gt;&lt;/a&gt; &lt;a href="https://gitter.im/Front-End-Checklist/Front-End-Design-Checklist" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/43d50456885636a2da1c0d03b88be6c9938035d2430ff0c2b5022bfa5480439c/68747470733a2f2f6261646765732e6769747465722e696d2f46726f6e742d456e642d436865636b6c6973742f46726f6e742d456e642d44657369676e2d436865636b6c6973742e737667" alt="Join the chat at https://gitter.im/Front-End-Checklist/Front-End-Design-Checklist"&gt;&lt;/a&gt; &lt;a href="https://creativecommons.org/publicdomain/zero/1.0/" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/90cbb26907a2e8a092d334981bb960ae729c5fe774e50c5eae34a6c409b52c3b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4343302d677265656e2e737667" alt="CC0"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
Table of Contents&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/thedaviddias/Front-End-Design-Checklist#1---design-requirements"&gt;1. Design requirements&lt;/a&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/thedaviddias/Front-End-Design-Checklist#11---grid-system"&gt;1.1 Grid system&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/thedaviddias/Front-End-Design-Checklist#12---colors"&gt;1.2 Colors&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/thedaviddias/Front-End-Design-Checklist#13---fonts-and-texts"&gt;1.3 Fonts and texts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/thedaviddias/Front-End-Design-Checklist#14---links-and-navigation"&gt;1.4 Links and navigation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/thedaviddias/Front-End-Design-Checklist#15---images--icons"&gt;1.5 Images / Icons&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/thedaviddias/Front-End-Design-Checklist#16---forms-and-buttons"&gt;1.6 Forms and buttons&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/thedaviddias/Front-End-Design-Checklist#17---responsive-web-design"&gt;1.7 Responsive Web Design&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/thedaviddias/Front-End-Design-Checklist#18---style-guide-and-component-approach"&gt;1.8 Style Guide and component approach&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/thedaviddias/Front-End-Design-Checklist#19---delivery-files"&gt;1.9 Delivery files&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/thedaviddias/Front-End-Design-Checklist#2---analysis-and-pre-work-phases"&gt;2. Analysis and pre-work phases&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/thedaviddias/Front-End-Design-Checklist#21---paper-analysis"&gt;2.1 Paper analysis&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/thedaviddias/Front-End-Design-Checklist#22---pre-development-phase"&gt;2.2 Pre-development phase&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/thedaviddias/Front-End-Design-Checklist#3---validation"&gt;3. Validation&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/thedaviddias/Front-End-Design-Checklist#4---development-phase"&gt;4. Development phase&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/thedaviddias/Front-End-Design-Checklist#5---before-production"&gt;5. Before production&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;


&lt;blockquote&gt;
&lt;p&gt;The &lt;strong&gt;Design Checklist for Front-End Developers&lt;/strong&gt; is an exhaustive list of elements which Web Designers and Front-End Developers need to take into consideration to facilitate their collaboration. The following elements are a mix between known practices and new elements based on a long experience analysing web designs.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In case you are looking for a list of all elements…&lt;/p&gt;
&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/thedaviddias/Front-End-Design-Checklist"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&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--566lAguM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/thedaviddias"&gt;
        thedaviddias
      &lt;/a&gt; / &lt;a href="https://github.com/thedaviddias/Front-End-Checklist"&gt;
        Front-End-Checklist
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      🗂 The perfect Front-End Checklist for modern websites and meticulous developers
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
&lt;br&gt;
  &lt;a rel="noopener noreferrer" href="https://raw.githubusercontent.com/thedaviddias/Front-End-Checklist/master/data/images/logo-front-end-checklist.jpg"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pRijHDR_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/thedaviddias/Front-End-Checklist/master/data/images/logo-front-end-checklist.jpg" alt="Front-End Checklist" width="130"&gt;&lt;/a&gt;
  &lt;br&gt;
    &lt;br&gt;
  Front-End Checklist
  &lt;br&gt;
&lt;/h1&gt;

&lt;h3&gt;
🚨 Currently working on a V2 of frontendchecklist.io,&lt;br&gt;feel free to &lt;a href="https://github.com/thedaviddias/Front-End-Checklist/discussions"&gt;discuss&lt;/a&gt; any feature you would like to see in the next version&lt;/h3&gt;

&lt;h4&gt;
The Front-End Checklist is an exhaustive list of all elements you need to have / to test before launching your website / HTML page to production.&lt;/h4&gt;
&lt;p&gt;
  &lt;a href="http://makeapullrequest.com" rel="nofollow"&gt;
    &lt;img src="https://camo.githubusercontent.com/0ff11ed110cfa69f703ef0dcca3cee6141c0a8ef465e8237221ae245de3deb3d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5052732d77656c636f6d652d627269676874677265656e2e7376673f7374796c653d666c61742d737175617265" alt="PRs Welcome"&gt;
  &lt;/a&gt;
    &lt;a href="https://github.com/thedaviddias/Front-End-Checklist/graphs/contributors"&gt;
    &lt;img src="https://camo.githubusercontent.com/4aa098f8dd3ba3a7ef5d3cdf8a446144cc7c939e50ded629055e56c8a33deba1/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6e7472696275746f72732f7468656461766964646961732f46726f6e742d456e642d436865636b6c6973742e7376673f7374796c653d666c61742d737175617265" alt="Contributors"&gt;
  &lt;/a&gt;
  &lt;a href="https://github.com/thedaviddias/Front-End-Checklist/"&gt;
    &lt;img src="https://camo.githubusercontent.com/8072e14bbbee2ad3fa40a5b99d029bb33942dc45f2e596225ffee15f48100131/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f46726f6e74e28091456e645f436865636b6c6973742d666f6c6c6f7765642d627269676874677265656e2e7376673f7374796c653d666c61742d737175617265" alt="Front‑End_Checklist followed"&gt;
  &lt;/a&gt;
    &lt;a href="https://creativecommons.org/publicdomain/zero/1.0/" rel="nofollow"&gt;
    &lt;img src="https://camo.githubusercontent.com/7de1b7fd70687fa6d07e273737f0465ef27971f193842c2d2c4a4ac01b3946bf/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4343302d677265656e2e7376673f7374796c653d666c61742d737175617265" alt="CC0"&gt;
  &lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://github.com/thedaviddias/Front-End-Checklist#how-to-use"&gt;How To Use&lt;/a&gt; • &lt;a href="https://github.com/thedaviddias/Front-End-Checklist#contributing"&gt;Contributing&lt;/a&gt; • &lt;a href="https://frontendchecklist.io" rel="nofollow"&gt;Website&lt;/a&gt; • &lt;a href="https://www.producthunt.com/posts/front-end-checklist" rel="nofollow"&gt;Product Hunt&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
    &lt;span&gt;Other Checklists:&lt;/span&gt;
    &lt;br&gt;
  &lt;a href="https://github.com/thedaviddias/Front-End-Performance-Checklist#---------front-end-performance-checklist-"&gt;🎮 Front-End Performance Checklist&lt;/a&gt; • &lt;a href="https://github.com/thedaviddias/Front-End-Design-Checklist#front-end-design-checklist"&gt;💎 Front-End Design Checklist&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;It is based on Front-End developers' years of experience, with the additions coming from some other open-source checklists.&lt;/p&gt;




&lt;h2&gt;
How to use?&lt;/h2&gt;

&lt;p&gt;All items in the &lt;strong&gt;Front-End Checklist&lt;/strong&gt; are required for the majority of the projects, but some elements can be omitted or are not essential (in the case of an administration web app, you may not need RSS feed for example). We choose to use 3 levels of flexibility:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a rel="noopener noreferrer" href="https://github.com/thedaviddias/Front-End-Checklistdata/images/priority/low.svg"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RUrESHZT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/thedaviddias/Front-End-Checklistdata/images/priority/low.svg" alt="Low"&gt;&lt;/a&gt; means that the item is &lt;strong&gt;recommended&lt;/strong&gt; but can be…&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/thedaviddias/Front-End-Checklist"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&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--566lAguM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/thedaviddias"&gt;
        thedaviddias
      &lt;/a&gt; / &lt;a href="https://github.com/thedaviddias/Front-End-Performance-Checklist"&gt;
        Front-End-Performance-Checklist
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      🎮 The only Front-End Performance Checklist that runs faster than the others
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
&lt;br&gt;
  &lt;a href="https://github.com/thedaviddias/Front-End-Performance-Checklist"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UaTRi69d--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/thedaviddias/Front-End-Performance-Checklist/master/images/logo-front-end-performance-checklist.jpg" alt="Front-End Performance Checklist" width="170"&gt;&lt;/a&gt;
  &lt;br&gt;
    &lt;br&gt;
  Front-End Performance Checklist
  &lt;br&gt;
&lt;/h1&gt;
&lt;h4&gt;
🎮 The only Front-End Performance Checklist that runs faster than the others.&lt;/h4&gt;
&lt;p&gt;One simple rule: "Design and code with performance in mind"&lt;/p&gt;
&lt;p&gt;
  &lt;a href="http://makeapullrequest.com" rel="nofollow"&gt;
    &lt;img src="https://camo.githubusercontent.com/0ff11ed110cfa69f703ef0dcca3cee6141c0a8ef465e8237221ae245de3deb3d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5052732d77656c636f6d652d627269676874677265656e2e7376673f7374796c653d666c61742d737175617265" alt="PRs Welcome"&gt;
  &lt;/a&gt;
  &lt;a href="https://discord.gg/btHQRkm" rel="nofollow"&gt;
    &lt;img src="https://camo.githubusercontent.com/0e6bc4911e2e7b111836490bc55d0f5d0544da8e8e1c8385b301b352bc434cdc/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f636861742d6f6e5f646973636f72642d3438333745322e7376673f7374796c653d666c61742d737175617265" alt="Discord"&gt;
  &lt;/a&gt;
    &lt;a href="https://opensource.org/licenses/MIT" rel="nofollow"&gt;
    &lt;img src="https://camo.githubusercontent.com/6ae43f07818e28c456bc0e4f35a61ebb4f08677499bf4eaa31c508107ccec75f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d626c75652e7376673f7374796c653d666c61742d737175617265" alt="Licence MIT"&gt;
  &lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
  &lt;a href="https://github.com/thedaviddias/Front-End-Performance-Checklist#how-to-use"&gt;How To Use&lt;/a&gt; • &lt;a href="https://github.com/thedaviddias/Front-End-Performance-Checklist#contributing"&gt;Contributing&lt;/a&gt; • &lt;a href="https://www.producthunt.com/posts/front-end-performance-checklist" rel="nofollow"&gt;Product Hunt&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
  &lt;a href="https://github.com/JohnsenZhou/Front-End-Performance-Checklist"&gt;🇨🇳&lt;/a&gt;
  &lt;a href="https://github.com/WilliamDASILVA/Front-End-Performance-Checklist"&gt;🇫🇷&lt;/a&gt;
  &lt;a href="https://github.com/ParkSB/Front-End-Performance-Checklist"&gt;🇰🇷&lt;/a&gt;
  &lt;a href="https://github.com/fernandofawkes/Front-End-Performance-Checklist"&gt;🇵🇹&lt;/a&gt;
  &lt;a href="https://github.com/lex111/Front-End-Performance-Checklist"&gt;🇷🇺&lt;/a&gt;
  &lt;a href="https://github.com/GameWith/Front-End-Performance-Checklist"&gt;🇯🇵&lt;/a&gt;
  &lt;a href="https://github.com/ms-fadaei/Front-End-Performance-Checklist"&gt;🇮🇷&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    &lt;span&gt;Other Checklists:&lt;/span&gt;
    &lt;br&gt;
  🗂 &lt;a href="https://github.com/thedaviddias/Front-End-Checklist#---------front-end-checklist-"&gt;Front-End Checklist&lt;/a&gt; • 💎 &lt;a href="https://github.com/thedaviddias/Front-End-Design-Checklist#front-end-design-checklist"&gt;Front-End Design Checklist&lt;/a&gt;
&lt;/p&gt;
&lt;h2&gt;
Introduction&lt;/h2&gt;
&lt;p&gt;Performance is a huge subject, but it's not always a "back-end" or an "admin" subject: it's a Front-End responsibility too. The Front-End Performance Checklist is an exhaustive list of elements you should check or at least be aware of, as a Front-End developer and apply to your project (personal and professional).&lt;/p&gt;
&lt;h3&gt;
How to use?&lt;/h3&gt;
&lt;p&gt;For each rule, you will have a paragraph explaining &lt;em&gt;why&lt;/em&gt; this rule is important and &lt;em&gt;how&lt;/em&gt; you can fix it. For more deep information, you should find links that will point to 🛠 tools, 📖 articles or 📹 medias that can complete the checklist.&lt;/p&gt;
&lt;p&gt;All…&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/thedaviddias/Front-End-Performance-Checklist"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&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--566lAguM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/yangshun"&gt;
        yangshun
      &lt;/a&gt; / &lt;a href="https://github.com/yangshun/front-end-interview-handbook"&gt;
        front-end-interview-handbook
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      ⚡️ Front End interview preparation materials for busy engineers
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Front End Interview Handbook&lt;/h1&gt;
&lt;div&gt;
  &lt;a href="https://dribbble.com/shots/4263961-Front-End-Interview-Scroll" rel="nofollow"&gt;
    &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lbKY7Tof--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/yangshun/front-end-interview-handbookassets/scroll.svg" alt="Front End Interview Handbook" width="400"&gt;
    &lt;/a&gt;
  &lt;br&gt;
  &lt;h3&gt;
    &lt;a href="https://www.frontendinterviewhandbook.com" rel="nofollow"&gt;Read on the website&lt;/a&gt;
  &lt;/h3&gt;
  &lt;p&gt;
    Follow us on &lt;a href="https://facebook.com/techinterviewhandbook" rel="nofollow"&gt;Facebook&lt;/a&gt; | &lt;a href="https://twitter.com/techinterviewhb" rel="nofollow"&gt;Twitter&lt;/a&gt; | &lt;a href="https://t.me/techinterviewhandbook" rel="nofollow"&gt;Telegram&lt;/a&gt;
  &lt;/p&gt;
&lt;/div&gt;

&lt;h2&gt;
What is this?&lt;/h2&gt;
&lt;p&gt;Unlike typical software engineer job interviews, front end job interviews have less emphasis on algorithms and have more questions on intricate knowledge and expertise about the domain — HTML, CSS, JavaScript, just to name a few areas.&lt;/p&gt;
&lt;p&gt;While there are some existing resources to help front end developers in preparing for interviews, they aren't as abundant as materials for a software engineer interview. Among the existing resources, probably the most helpful question bank would be &lt;a href="https://github.com/h5bp/Front-end-Developer-Interview-Questions"&gt;Front-end Developer Interview Questions&lt;/a&gt;. Unfortunately, I couldn't find many complete and satisfactory answers to these questions online, hence here is my attempt at answering them. Being an open source repository, the project can live on with the support of the community as the state of web evolves.&lt;/p&gt;
&lt;h2&gt;
Why do I want this?&lt;/h2&gt;
&lt;h3&gt;
🔍 Front End&lt;/h3&gt;…&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/yangshun/front-end-interview-handbook"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&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--566lAguM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/andrew--r"&gt;
        andrew--r
      &lt;/a&gt; / &lt;a href="https://github.com/andrew--r/frontend-case-studies"&gt;
        frontend-case-studies
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      💼 A curated list of technical talks and articles about real world enterprise frontend development
    &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://github.com/andrew--r/frontend-case-studiesassets/logo.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HavLVDbX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/andrew--r/frontend-case-studiesassets/logo.png" alt="Frontend case studies logo"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Articles like “Building a simple todo list with [framework or technology name]” won’t teach you how that framework or technology solves real-world problems and works at a large scale. This document is a curated list of technical talks and articles about real-world enterprise frontend development.&lt;/p&gt;
&lt;h2&gt;
Table of contents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/andrew--r/frontend-case-studies#english"&gt;English&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#adroll"&gt;AdRoll&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#aha"&gt;Aha!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#airbnb"&gt;Airbnb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#aldo"&gt;ALDO&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#algolia"&gt;Algolia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#allegro"&gt;Allegro&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#artsy"&gt;Artsy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#atlassian"&gt;Atlassian&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#australian-broadcasting-corporation"&gt;Australian Broadcasting Corporation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#badoo"&gt;Badoo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#bbc"&gt;BBC&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#betty-crocker"&gt;Betty Crocker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#bitmovin"&gt;Bitmovin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#blogfoster"&gt;blogfoster&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#bloomberg"&gt;Bloomberg&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#buzzfeed"&gt;BuzzFeed&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#campaign-monitor"&gt;Campaign Monitor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#carbon-five"&gt;Carbon Five&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#carousell"&gt;Carousell&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#carscom"&gt;cars.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#checkbot"&gt;Checkbot&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#clearleft"&gt;Clearleft&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#cloudflare"&gt;Cloudflare&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#cloud-four"&gt;Cloud Four&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#codesandbox"&gt;CodeSandbox&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#cond%C3%A9-nast"&gt;Condé Nast&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#conductor"&gt;Conductor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#dazn"&gt;DAZN&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#de-voorhoede"&gt;De Voorhoede&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#dev"&gt;DEV&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#discord"&gt;Discord&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#divriots"&gt;&amp;lt;div&amp;gt;RIOTS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#dropbox"&gt;Dropbox&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#ebay"&gt;eBay&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#electronic-arts"&gt;Electronic Arts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#eleme"&gt;Ele.me&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#etsy"&gt;Etsy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#evil-martians"&gt;Evil Martians&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#expedia-group"&gt;Expedia Group&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#ezcater"&gt;ezCater&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#facebook"&gt;Facebook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#fastqbio"&gt;fastq.bio&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#figma"&gt;Figma&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#financial-times"&gt;Financial Times&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#flickr"&gt;Flickr&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#flipboard"&gt;Flipboard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#flipkart"&gt;Flipkart&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#flocktory"&gt;Flocktory&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#futurice"&gt;Futurice&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#garbarino"&gt;Garbarino&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#github"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#gitlab"&gt;GitLab&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#goibibo"&gt;Goibibo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#google"&gt;Google&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#govuk"&gt;GOV.UK&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#grammarly"&gt;grammarly&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#gusto"&gt;Gusto&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#healthcaregov"&gt;HealthCare.gov&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#heap"&gt;Heap&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#in-der-apotheke"&gt;in der Apotheke&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#infinite-red"&gt;Infinite Red&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#insider-inc"&gt;Insider Inc.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#instagram"&gt;Instagram&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#internet-archive"&gt;Internet Archive&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#intuit"&gt;Intuit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#invision"&gt;InVision&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#khan-academy"&gt;Khan Academy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#kickstarter"&gt;Kickstarter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#klarna"&gt;Klarna&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#line"&gt;Line&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#linkedin"&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#lucidchart"&gt;Lucidchart&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#lyft"&gt;Lyft&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#mailru"&gt;Mail.ru&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#mailchimp"&gt;Mailchimp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#mdn"&gt;MDN&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#medium"&gt;Medium&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#memsql"&gt;MemSQL&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#mercado-libre"&gt;Mercado Libre&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#microsoft-to-do"&gt;Microsoft To-Do&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andrew--r/frontend-case-studies#mixmax"&gt;Mixmax&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;…&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&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/andrew--r/frontend-case-studies"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;If you have any good resources feel free to share I will add them.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;P.S. - Read daily/weekly one case study you will learn a lot.&lt;br&gt;
I have created a &lt;a href="https://ajaycod.notion.site/Interview-Resources-d920d545eefe4964b4bb786dd0b16f45"&gt;notion&lt;/a&gt; page for resources feel free to bookmark it. I will add more resources and good blogs. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Thanks for reading. Let's connect on &lt;a href="https://twitter.com/KumbhareAjay"&gt;Twitter&lt;/a&gt; and &lt;a href="https://www.linkedin.com/in/ajaykumbhare/"&gt;LinkedIn&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>interview</category>
      <category>career</category>
    </item>
    <item>
      <title>2. First-Class Objects</title>
      <dc:creator>Ajay kumbhare</dc:creator>
      <pubDate>Thu, 23 Sep 2021 18:27:18 +0000</pubDate>
      <link>https://dev.to/ajaykumbhare/2-first-class-objects-56dj</link>
      <guid>https://dev.to/ajaykumbhare/2-first-class-objects-56dj</guid>
      <description>&lt;p&gt;Functions in JavaScript are first-class objects which means they can be stored in variables, objects, or in the array.&lt;/p&gt;

&lt;p&gt;We can work with functions in JavaScript in many different ways&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We can store functions in variables
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-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;professor&lt;/span&gt; &lt;span class="o"&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="s2"&gt;Let's do heist again...&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;ul&gt;
&lt;li&gt;We can pass as an argument to a function
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-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;filter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;array&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;callback&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="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;array&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;isEven&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;num&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;num&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;filter&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;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="nx"&gt;isEven&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;We can return a function from another function
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-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;doSum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;a&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="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The above code is an example of the curry function that will discuss in the next blog. but if you see it returns a function so when you call &lt;code&gt;doSum(10)&lt;/code&gt; it will return &lt;code&gt;(b) =&amp;gt; a + b&lt;/code&gt; function and it will expect one more argument.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We can store function inside an objects
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-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;bank&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;balance&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;100000&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;I am learning FP. If you feel I am wrong then please feel free to write a comment in the comment box so I will update the document.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>javascript</category>
      <category>functional</category>
      <category>typescript</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>2. Implement custom Omit Type in TypeScript</title>
      <dc:creator>Ajay kumbhare</dc:creator>
      <pubDate>Tue, 17 Aug 2021 12:14:09 +0000</pubDate>
      <link>https://dev.to/ajaykumbhare/2-implement-custom-omit-type-in-typescript-2i0g</link>
      <guid>https://dev.to/ajaykumbhare/2-implement-custom-omit-type-in-typescript-2i0g</guid>
      <description>&lt;h3&gt;
  
  
  Implement Omit&amp;lt;Type, Keys&amp;gt;
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Constructs a type by picking all properties from Type and then removing Keys.&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kr"&gt;interface&lt;/span&gt; &lt;span class="nx"&gt;Todo&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;completed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;boolean&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;If you see the above interface it has 3 properties title, description, and completed. If you want to remove title key from that interface then you can use the Omit utility type. But here I am going to create a custom Omit type that will do the same thing as the Omit utility type.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;type&lt;/span&gt; &lt;span class="nx"&gt;CustomOmit&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;T&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;K&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nx"&gt;keyof&lt;/span&gt; &lt;span class="nx"&gt;T&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&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;Key&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="nx"&gt;keyof&lt;/span&gt; &lt;span class="nx"&gt;T&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;Key&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nx"&gt;K&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="nx"&gt;never&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Key&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;T&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;Key&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;If you see the above code snippet which expects Type and Keys. Omit will only remove keys from the Type or Interface which we are passing that's why I have return &lt;code&gt;K extends keyof T&lt;/code&gt;. and later we just need to check key is available in K if it's available we will return never else will return keyValue pair.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;type&lt;/span&gt; &lt;span class="nx"&gt;TodoPreview&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;Omit&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Todo&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;title&lt;/span&gt;&lt;span class="dl"&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="nx"&gt;type&lt;/span&gt; &lt;span class="nx"&gt;TodoPreviewCustomOmit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;CustomOmit&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Todo&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;title&lt;/span&gt;&lt;span class="dl"&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;Above both snippets will work the same and it will pick all key/value except title key from Todo type.&lt;/p&gt;

&lt;p&gt;For Ex.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-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;todo&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;TodoPreviewCustomOmit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;completed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;boolean&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;For more details please refer &lt;a href="https://www.typescriptlang.org/docs/handbook/utility-types.html#omittype-keys"&gt;official doc&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>typescript</category>
      <category>webdev</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>1. Implement custom Pick Type in TypeScript
</title>
      <dc:creator>Ajay kumbhare</dc:creator>
      <pubDate>Mon, 09 Aug 2021 09:50:07 +0000</pubDate>
      <link>https://dev.to/ajaykumbhare/1-implement-custom-pick-type-in-typescript-466h</link>
      <guid>https://dev.to/ajaykumbhare/1-implement-custom-pick-type-in-typescript-466h</guid>
      <description>&lt;p&gt;I am starting the TypeScript hacks series. In this series, I will add more posts where you can practice and learn TypeScript. &lt;/p&gt;

&lt;p&gt;This is my first post on the TypeScript hacks series. so let's get started.&lt;/p&gt;

&lt;h3&gt;
  
  
  Implement Pick&amp;lt;Type, Keys&amp;gt;
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Constructs a type by picking the set of properties Keys from Type.&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kr"&gt;interface&lt;/span&gt; &lt;span class="nx"&gt;Todo&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;completed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;boolean&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;If you see the above interface it has 3 properties title, description, and completed. If you want to pick some (title and completed) keys from that interface then you can use the Pick utility type. But here I am going to create a custom Pick type that will do the same thing as the Pick utility type.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;type&lt;/span&gt; &lt;span class="nx"&gt;CustomPick&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;T&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;K&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nx"&gt;keyof&lt;/span&gt; &lt;span class="nx"&gt;T&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&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;Key&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="nx"&gt;K&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="nx"&gt;T&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;Key&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;If you see the above code snippet which expects Type and Keys. Pick will only select keys from the Type or Interface which we are passing that's why I have return &lt;code&gt;K extends keyof T&lt;/code&gt;. and later we just need to check key is available in K if it's available we will return that.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;type&lt;/span&gt; &lt;span class="nx"&gt;TodoPreview&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;Pick&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Todo&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;title&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;completed&lt;/span&gt;&lt;span class="dl"&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="nx"&gt;type&lt;/span&gt; &lt;span class="nx"&gt;TodoPreviewCustomPick&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;CustomPick&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Todo&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;title&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;completed&lt;/span&gt;&lt;span class="dl"&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;Above both snippets will work the same and it will expect title and completed keys should be available when you are using that type.&lt;/p&gt;

&lt;p&gt;For Ex.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-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;todo&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;TodoPreviewCustomPick&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Clean room&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;completed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&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;For more details please refer &lt;a href="https://www.typescriptlang.org/docs/handbook/utility-types.html#picktype-keys"&gt;official doc&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>typescript</category>
      <category>webdev</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>1. Higher-Order Functions (HOF)</title>
      <dc:creator>Ajay kumbhare</dc:creator>
      <pubDate>Thu, 11 Mar 2021 08:30:15 +0000</pubDate>
      <link>https://dev.to/ajaykumbhare/1-higher-order-functions-hof-dec</link>
      <guid>https://dev.to/ajaykumbhare/1-higher-order-functions-hof-dec</guid>
      <description>&lt;p&gt;&lt;em&gt;There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. - C.A.R. Hoare, 1980 ACM Turing Award Lecture&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;higher-order function&lt;/strong&gt; is a function that takes a function as an argument or returns a function.&lt;/p&gt;

&lt;p&gt;When we were in school we learned algebra formulas like &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;f.g = f(g(x))&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;can be translated into JavaScript&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-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;compose&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;f&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;g&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;f&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;g&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  How to write HOF?
&lt;/h3&gt;



&lt;div class="highlight js-code-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;filter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;predicate&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;xs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;xs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;predicate&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;isEven&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;type&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="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;instanceof&lt;/span&gt; &lt;span class="nx"&gt;type&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;isEven&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Number&lt;/span&gt;&lt;span class="p"&gt;),&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="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;undefined&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="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;6&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;span class="c1"&gt;// [2, 4, 100]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you see the above code I have created 2 functions &lt;em&gt;filter&lt;/em&gt; and &lt;em&gt;isEven&lt;/em&gt;. &lt;em&gt;filter&lt;/em&gt; function accepts two arguments function and array so we can say that filter function is &lt;strong&gt;higher-order function&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;So, the &lt;em&gt;predicate&lt;/em&gt; is -&amp;gt; &lt;em&gt;isEven(Number)&lt;/em&gt; so both are functions (&lt;em&gt;isEven&lt;/em&gt; and &lt;em&gt;Number&lt;/em&gt;)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;xs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;predicate&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Equivalent to&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;xs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;isEven&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Number&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you see the definition of &lt;em&gt;isEven&lt;/em&gt; function its curry function so you can call curry function like&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;function_name&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;argument_1&lt;/span&gt;&lt;span class="p"&gt;)(&lt;/span&gt;&lt;span class="nx"&gt;argument_2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So, when &lt;em&gt;xs.filter(predicate)&lt;/em&gt; executes its passing array values too in a predicate function like&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;xs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;val&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;predicate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;val&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="c1"&gt;// or&lt;/span&gt;
&lt;span class="nx"&gt;xs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;val&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;isEven&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Number&lt;/span&gt;&lt;span class="p"&gt;)(&lt;/span&gt;&lt;span class="nx"&gt;val&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So, when you pass function and array in the &lt;em&gt;filter&lt;/em&gt; function it will filter values based on your predicate function and array values.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I am learning FP. If you feel I am wrong then please feel free to write a comment in the comment box so I will update the document.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>functional</category>
      <category>javascript</category>
      <category>typescript</category>
      <category>node</category>
    </item>
    <item>
      <title>Build a Telegram Bot using Node.js</title>
      <dc:creator>Ajay kumbhare</dc:creator>
      <pubDate>Fri, 11 Sep 2020 16:41:38 +0000</pubDate>
      <link>https://dev.to/ajaykumbhare/build-a-telegram-bot-using-node-js-171h</link>
      <guid>https://dev.to/ajaykumbhare/build-a-telegram-bot-using-node-js-171h</guid>
      <description>&lt;p&gt;A bot is a software program that operates on the Internet and performs repetitive tasks.&lt;/p&gt;

&lt;p&gt;In this tutorial, we will create a Telegram bot which helps to download images from &lt;a href="https://www.pexels.com/"&gt;Pexels&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Getting started
&lt;/h3&gt;

&lt;p&gt;There is a bot called &lt;a href="https://t.me/BotFather"&gt;BotFather&lt;/a&gt; which helps you to create your bot.&lt;/p&gt;

&lt;p&gt;BotFather is the one bot to rule them all. Use it to create new bot accounts and manage your existing bots.&lt;/p&gt;

&lt;p&gt;BotFather provides you some commands as following.&lt;/p&gt;

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

&lt;p&gt;so to create a Bot click on the &lt;code&gt;/newBot&lt;/code&gt; command. after you create a bot BotFather will provide you token.&lt;/p&gt;

&lt;p&gt;There are many good frameworks available for NodeJS, in this tutorial we're going to use Telegraf.&lt;/p&gt;

&lt;h3&gt;
  
  
  Let's start coding
&lt;/h3&gt;

&lt;p&gt;Initialize the project and install Telegraf&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;$&lt;/span&gt; &lt;span class="nx"&gt;npm&lt;/span&gt; &lt;span class="nx"&gt;init&lt;/span&gt;
&lt;span class="nx"&gt;$&lt;/span&gt; &lt;span class="nx"&gt;npm&lt;/span&gt; &lt;span class="nx"&gt;install&lt;/span&gt; &lt;span class="nx"&gt;telegraf&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now create a file and let's add it script and make a simple bot.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Telegraf&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&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;telegraf&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;bot&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;Telegraf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;BOT_TOKEN&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nx"&gt;bot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;hears&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;hi&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;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;reply&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Hey there&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="nx"&gt;bot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;launch&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Preview
&lt;/h3&gt;

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

&lt;h3&gt;
  
  
  PexelsPlashBot
&lt;/h3&gt;

&lt;p&gt;We're going to send the top 10 photos from the Pexels that a user asks for. Install axios library to simplify sending GET requests and grabbing data from Pexels.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;npm&lt;/span&gt; &lt;span class="nx"&gt;install&lt;/span&gt; &lt;span class="nx"&gt;axios&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;save&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Telegraf&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&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;telegraf&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&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;Telegraf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;BOT_TOKEN&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;axios&lt;/span&gt; &lt;span class="o"&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="s2"&gt;axios&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;pexelKey&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;PEXEL_KEY&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 get an API key from &lt;a href="https://www.pexels.com/api/documentation/"&gt;PexelsApi&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-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;fetchImages&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;text&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="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;photos&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;axios&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="s2"&gt;`https://api.pexels.com/v1/search?query=&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nb"&gt;encodeURI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;&lt;span class="s2"&gt;&amp;amp;per_page=10`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;Authorization&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;pexelKey&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}).&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;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;e&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
    &lt;span class="c1"&gt;// {photos} contains photos object recieved from Pexels&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;photos&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;photos&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;src&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="na"&gt;media&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;src&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;original&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="na"&gt;caption&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Pexel&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;photo&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}));&lt;/span&gt;
      &lt;span class="c1"&gt;// mapping response from photos object&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="nx"&gt;e&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;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;
&lt;span class="c1"&gt;// when user sends a text message app.on("text") will call&lt;/span&gt;
&lt;span class="nx"&gt;app&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="s2"&gt;text&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ctx&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="c1"&gt;// A Telegraf Context encapsulates telegram update&lt;/span&gt;
  &lt;span class="c1"&gt;//  So you can use everything you see there&lt;/span&gt;
  &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;reply&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;⌛️ Please Wait It will take few seconds to grab Images&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// bot will send a reply to users. &lt;/span&gt;
    &lt;span class="c1"&gt;// GET the data from Pexels API&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;photos&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;fetchImages&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="c1"&gt;// fetchImages will return image objects from pexels.&lt;/span&gt;
    &lt;span class="nx"&gt;photos&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;replyMediaGroup&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;photos&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;reply&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Sorry Image not found :(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="c1"&gt;// if photos available then we are sending photos otherwise we are sending a reply as `Sorry Image not found :(`&lt;/span&gt;
    &lt;span class="c1"&gt;// we are sending 10 images here so replyMediaGroup accepts an array with objects of media, caption, and type&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&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;e&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;reply&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Please try after sometime PexelsPlash is down :(&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;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I'm alive &lt;a href="https://t.me/PexelsPlashBot"&gt;@PexelsPlashBot&lt;/a&gt;&lt;/p&gt;

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

&lt;h3&gt;
  
  
  Wrapping up
&lt;/h3&gt;

&lt;p&gt;As you can see, we've created a simple Telegram bot in minutes. but you can do more cool stuffs using telegram bot API's.&lt;/p&gt;

&lt;p&gt;You can find the source code of this bot on &lt;a href="https://github.com/Ajaykumbhare/PexelsPlash"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>node</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>design</category>
    </item>
    <item>
      <title>What's new in Electron 10.0.0?</title>
      <dc:creator>Ajay kumbhare</dc:creator>
      <pubDate>Sun, 30 Aug 2020 11:37:56 +0000</pubDate>
      <link>https://dev.to/ajaykumbhare/what-s-new-in-electron-10-0-0-2hjo</link>
      <guid>https://dev.to/ajaykumbhare/what-s-new-in-electron-10-0-0-2hjo</guid>
      <description>&lt;h5&gt;
  
  
  Electron 10.0.0 Released 🎉
&lt;/h5&gt;

&lt;p&gt;Electron 10.0.0 has been released! It includes upgrades to Chromium 85, V8 8.5, and Node.js 12.16 and added several new API integrations and improvements.&lt;/p&gt;

&lt;p&gt;You can install it with npm via npm install electron@latest&lt;/p&gt;

&lt;h4&gt;
  
  
  New in this release:
&lt;/h4&gt;

&lt;p&gt;⚡️  Upgraded to Chrome 85&lt;br&gt;
🌌 Improved window event handling&lt;br&gt;
🎟️  Session persistence API enhancements&lt;/p&gt;

&lt;h4&gt;
  
  
  What's new features added?
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Added &lt;code&gt;contents.getBackgroundThrottling()&lt;/code&gt; method and &lt;code&gt;contents.backgroundThrottling&lt;/code&gt; property.&lt;/li&gt;
&lt;li&gt;Added a &lt;code&gt;sameSite&lt;/code&gt; property to the Cookie structure allowing you to get and set the same site policy for cookies.&lt;/li&gt;
&lt;li&gt;Added new &lt;code&gt;render-process-gone&lt;/code&gt; event on &lt;code&gt;app&lt;/code&gt; to replace the &lt;code&gt;renderer-process-crashed&lt;/code&gt; event.&lt;/li&gt;
&lt;li&gt;Added new &lt;code&gt;useSessionCookies&lt;/code&gt; flag to &lt;code&gt;net&lt;/code&gt; requests to allow them to use the session cookie store.&lt;/li&gt;
&lt;li&gt;Added support for &lt;code&gt;MessagePort&lt;/code&gt; in the &lt;code&gt;main&lt;/code&gt; process. &lt;/li&gt;
&lt;li&gt;Added the ability to get the "Recent" folder on Windows with &lt;code&gt;app.getPath('recent')&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;BrowserWindow &lt;code&gt;darkTheme&lt;/code&gt; option now defaults to &lt;code&gt;nativeTheme.shouldUseDarkColors&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Can now check if a given session is persistent by calling the &lt;code&gt;ses.isPersistent()&lt;/code&gt; API.&lt;/li&gt;
&lt;li&gt;Added &lt;code&gt;fullScreen&lt;/code&gt; property support for &lt;code&gt;BrowserWindow&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Restored support for pdfium-based PDF viewer.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>javascript</category>
      <category>node</category>
      <category>webdev</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>Load chrome extensions in puppeteer</title>
      <dc:creator>Ajay kumbhare</dc:creator>
      <pubDate>Wed, 12 Aug 2020 17:40:44 +0000</pubDate>
      <link>https://dev.to/ajaykumbhare/load-chrome-extensions-in-puppeteer-4fk0</link>
      <guid>https://dev.to/ajaykumbhare/load-chrome-extensions-in-puppeteer-4fk0</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;What is puppeteer&lt;/strong&gt;?
&lt;/h2&gt;

&lt;p&gt;Puppeteer is a Node library which provides a high-level API to control headless Chrome or Chromium over the DevTools Protocol. You can do all things automatically which you are doing on the browser manually.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generate screenshots and PDFs of pages&lt;/li&gt;
&lt;li&gt;Crawl a website&lt;/li&gt;
&lt;li&gt;Create an up-to-date, automated testing environment. Run your tests directly in the latest version of Chrome using the latest JavaScript and browser features&lt;/li&gt;
&lt;li&gt;Test Chrome Extensions&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Load chrome extensions&lt;/strong&gt;
&lt;/h2&gt;

&lt;div class="highlight js-code-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;puppeteer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&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;puppeteer&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;span class="k"&gt;async &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="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;customArgs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="s2"&gt;`--start-maximized`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s2"&gt;`--load-extension=&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;extdarkreader&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;
  &lt;span class="p"&gt;];&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;browser&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;puppeteer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;launch&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;defaultViewport&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;executablePath&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;chrome&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;headless&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;ignoreDefaultArgs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;--disable-extensions&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="s2"&gt;--enable-automation&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="na"&gt;args&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;customArgs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;page&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;browser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;newPage&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;page&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;goto&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`https://dev.to/`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;page&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;waitForNavigation&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;page&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;close&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;browser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;close&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;By default, some functionalities are disabled in puppeteer so you can enable by assigning few arguments in ignoreDefaultArgs.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

 ignoreDefaultArgs: ["--disable-extensions"]


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;ignoreDefaultArgs : &amp;gt; If true, then do not use puppeteer.defaultArgs(). If an array is given, then filter out the given default arguments. Dangerous option; use with care. Defaults to false.&lt;/p&gt;

&lt;p&gt;After running above code got a dark theme of website &lt;a href="https://dev.to"&gt;https://dev.to&lt;/a&gt;&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%2Fi%2Ffcgrxgi86aycm52yh551.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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ffcgrxgi86aycm52yh551.png" alt="https://dev.to"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Followings are default arguments are used in puppeteer.&lt;/em&gt;&lt;/p&gt;

&lt;div class="highlight js-code-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;DEFAULT_ARGS&lt;/span&gt; &lt;span class="o"&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;--disable-background-networking&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;--enable-features=NetworkService,NetworkServiceInProcess&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;--disable-background-timer-throttling&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;--disable-backgrounding-occluded-windows&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;--disable-breakpad&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;--disable-client-side-phishing-detection&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;--disable-component-extensions-with-background-pages&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;--disable-default-apps&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;--disable-dev-shm-usage&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;--disable-extensions&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="c1"&gt;// BlinkGenPropertyTrees disabled due to crbug.com/937609&lt;/span&gt;
  &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;--disable-features=TranslateUI,BlinkGenPropertyTrees&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;--disable-hang-monitor&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;--disable-ipc-flooding-protection&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;--disable-popup-blocking&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;--disable-prompt-on-repost&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;--disable-renderer-backgrounding&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;--disable-sync&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;--force-color-profile=srgb&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;--metrics-recording-only&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;--no-first-run&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;--enable-automation&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;--password-store=basic&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;--use-mock-keychain&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;em&gt;If you have any questions or if you want more posts on puppeteer please comment out on comment box.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>node</category>
      <category>puppeteer</category>
      <category>automation</category>
    </item>
    <item>
      <title>Implement Dark mode on your website</title>
      <dc:creator>Ajay kumbhare</dc:creator>
      <pubDate>Tue, 11 Aug 2020 20:49:38 +0000</pubDate>
      <link>https://dev.to/ajaykumbhare/implement-dark-mode-on-your-website-3ohd</link>
      <guid>https://dev.to/ajaykumbhare/implement-dark-mode-on-your-website-3ohd</guid>
      <description>&lt;h2&gt;
  
  
  How to implement dark mode on your website?
&lt;/h2&gt;

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

&lt;p&gt;I will use &lt;a href="https://github.com/darkreader/darkreader"&gt;darkreader&lt;/a&gt; npm library which has more than 7.5K stars.&lt;/p&gt;

&lt;p&gt;You can use Dark Reader to enable dark mode on your website.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Install the package from NPM&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;/div&gt;



&lt;p&gt;you can import es modules in your main file from darkreader.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-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;enable&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;disable&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;darkreader&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;blockquote&gt;
&lt;p&gt;enable - Enables dark mode for current web page&lt;br&gt;
disable - Disables dark mode for current web page&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;to enable dark mode on your website add just call &lt;code&gt;enable()&lt;/code&gt; function in your file.&lt;/p&gt;

&lt;p&gt;also, you can customize some filters by passing parameters in the enable method. &lt;/p&gt;

&lt;p&gt;for example,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;enable&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;brightness&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="na"&gt;contrast&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;90&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;sepia&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;10&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;It supports the following parameters which you can use it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;mode: 0 | 1 

&lt;ul&gt;
&lt;li&gt;1 - dark mode, 0 - dimmed mode&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;[ brightness | grayscale | contrast | sepia ] : number 

&lt;ul&gt;
&lt;li&gt;value (0 - 100+)&lt;/li&gt;
&lt;li&gt;Default [ 100 | 0 | 100 | 0 ]&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;useFont: boolean

&lt;ul&gt;
&lt;li&gt;Specifies if custom font should be used&lt;/li&gt;
&lt;li&gt;Default false&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;fontFamily: string

&lt;ul&gt;
&lt;li&gt;Font family to use&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;textStroke: number

&lt;ul&gt;
&lt;li&gt;Makes text look bolder (0 - 1px)&lt;/li&gt;
&lt;li&gt;Default 0&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;darkSchemeBackgroundColor: string

&lt;ul&gt;
&lt;li&gt;Background color to use for dark mode&lt;/li&gt;
&lt;li&gt;Default #181a1b&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;darkSchemeTextColor: string

&lt;ul&gt;
&lt;li&gt;Text color to use for dark mode&lt;/li&gt;
&lt;li&gt;Default #e8e6e3&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;lightSchemeBackgroundColor: string

&lt;ul&gt;
&lt;li&gt;Background color to use for light mode&lt;/li&gt;
&lt;li&gt;Default #dcdad7&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;lightSchemeTextColor: string

&lt;ul&gt;
&lt;li&gt;Text color to use for light mode&lt;/li&gt;
&lt;li&gt;Default #181a1b&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;scrollbarColor: string

&lt;ul&gt;
&lt;li&gt;Scrollbar color&lt;/li&gt;
&lt;li&gt;Default auto&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;selectionColor: string

&lt;ul&gt;
&lt;li&gt;Selection color&lt;/li&gt;
&lt;li&gt;Default auto&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Resources
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/darkreader/darkreader"&gt;https://github.com/darkreader/darkreader&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>react</category>
      <category>webdev</category>
      <category>design</category>
    </item>
  </channel>
</rss>
