<?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: Shreyansh sheth</title>
    <description>The latest articles on DEV Community by Shreyansh sheth (@shreyanshsheth).</description>
    <link>https://dev.to/shreyanshsheth</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%2F717003%2F4d5f4cd3-8fb2-4398-b8fe-ace8ca9683a5.jpg</url>
      <title>DEV Community: Shreyansh sheth</title>
      <link>https://dev.to/shreyanshsheth</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shreyanshsheth"/>
    <language>en</language>
    <item>
      <title>System Design: Google Drive That Scales To The Moon</title>
      <dc:creator>Shreyansh sheth</dc:creator>
      <pubDate>Mon, 08 May 2023 19:38:02 +0000</pubDate>
      <link>https://dev.to/shreyanshsheth/system-design-google-drive-that-scales-to-the-moon-2a83</link>
      <guid>https://dev.to/shreyanshsheth/system-design-google-drive-that-scales-to-the-moon-2a83</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;So a few months ago I was building a new internal project that helps you upload files like google drive but also works as a CDN so you can use those assets on the front end. So here is the few lessons that I have learned along the way.&lt;/p&gt;

&lt;h2&gt;
  
  
  Requirement
&lt;/h2&gt;

&lt;p&gt;The project requirement is simply to create a multi-tenant app that will let you upload and download files in the workspace, ability to make the file public, and also make a file available through a single URL with the cache.&lt;br&gt;
To get file URL will be something like &lt;em&gt;&lt;strong&gt;/:workspaceid/:key&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Technology Choices
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Storage&lt;br&gt;
For Storage there are two options mainly, S3 &amp;amp; R2 but I have selected S3 because it's what I have used and it is a more mature solution with most of the issues and solutions online.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Functions&lt;br&gt;
I have used the lambda function for it. because it works with dynamo DB that I am selecting for file metadata&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;File Metadata&lt;br&gt;
for file metadata, we are storing the mime type, size, and original name of the file along with indexes that we will talk about later in the blog.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Auth&lt;br&gt;
For Authentication, We Used a simple cookie JWT-based system, and that won't matter much in the blog context.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;NOTE: front-end was on react(vite).&lt;/p&gt;

&lt;h2&gt;
  
  
  Let's Start Designing
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What We Need?&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;to upload a file&lt;/li&gt;
&lt;li&gt;to delete the file&lt;/li&gt;
&lt;li&gt;make the file public&lt;/li&gt;
&lt;li&gt;make the file available via cdn with caching&lt;/li&gt;
&lt;li&gt;in ui workspace users can see all their files&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Database Design&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For file-metadata database design is very simple as it contains query keys as file key and workspaceId as sort and partition keys.&lt;/p&gt;

&lt;p&gt;the reason that workspace-id is the partition key, is that will help make DynamoDB partition for each workspace and make it more efficient while we query for the list in frontend.&lt;/p&gt;

&lt;p&gt;and file key is the sort key that just helps to make sorting possible with ULID(Lexicographically Sortable Identifier) as it makes a list on UI based on when it is uploaded and also it is unique so it helps query single files easily.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;For ULID see this &lt;a href="https://blog.bitsrc.io/ulid-vs-uuid-sortable-random-id-generators-for-javascript-183400ef862c"&gt;blog&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Chart That Represents The DB Design&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Frvif4Tz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kz26rmgar4fs9z1f00g0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Frvif4Tz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kz26rmgar4fs9z1f00g0.png" alt="Database Design Image For This System" width="800" height="354"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see this is the metadata table for the files that we are uploading and this contains all important fields that are required for some or other purpose.&lt;/p&gt;

&lt;h2&gt;
  
  
  System Design
&lt;/h2&gt;

&lt;p&gt;For System Design, It Contains Some Part Related To AWSLambda, S3, CloudFront, Lambda@Edge &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;File Upload Service&lt;/strong&gt;&lt;br&gt;
Takes File Type, Size, and Mimetype, save it into a dynamo, and Returns POST upload URL that helps upload the file directly to s3 from frontend with some max-age.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;File Delete CRON&lt;/strong&gt;&lt;br&gt;
This function is a CRON (scheduled) that will delete files from the s3 periodically from deleteAfter &amp;amp; isDeleted as it uses GSI Field from table and also from DynamoDB. the ideal time for us is 4 days, so if any recovery comes we can resolve it as soon as possible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Get Private File&lt;/strong&gt;&lt;br&gt;
It Looks At AUTH Token That Represents The Workspace ID and returns a pre-sign URL get URL that can help you view the private file&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Make File Public&lt;/strong&gt;&lt;br&gt;
If the File Is Public It Will Be Served From Cloudfront With Its Caching Layer Also I Have Added Some Image Resizer As A Bonus Part There.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Here Is The Basic System Design Chart That Helps You Get a Top View Of The Things&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ACWoQWFA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oyp1ujdyw436exxhb56v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ACWoQWFA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oyp1ujdyw436exxhb56v.png" alt="Top View Of Desing" width="800" height="476"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The End
&lt;/h2&gt;

&lt;p&gt;If You Like This Article, Please Consider Following Me On LinkedIn And If You Have Some Cool Project Like This Just Contact Me, I Would Love To Work With Awesome People And Projects.&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/shreyansh-sheth/"&gt;Linkdin&lt;/a&gt;&lt;/p&gt;

</description>
      <category>systemdesign</category>
      <category>webdev</category>
      <category>cloud</category>
      <category>aws</category>
    </item>
    <item>
      <title>Let's Build Express Server. Beginners Guide</title>
      <dc:creator>Shreyansh sheth</dc:creator>
      <pubDate>Mon, 15 Nov 2021 09:53:52 +0000</pubDate>
      <link>https://dev.to/shreyanshsheth/lets-build-express-server-beginners-guide-3od1</link>
      <guid>https://dev.to/shreyanshsheth/lets-build-express-server-beginners-guide-3od1</guid>
      <description>&lt;h2&gt;
  
  
  What Is Express Js?
&lt;/h2&gt;

&lt;p&gt;Express Js Is Web Framework For Node.js&lt;/p&gt;

&lt;h2&gt;
  
  
  Where To Use Express Js
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Most Popular Use Of Express Js In the Current Time Is To Create Web Apis.&lt;/li&gt;
&lt;li&gt;Also Some People Are Using To Create Full-stack Web App With using Pug, Ejs, Or Basic HTML&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;here we are going to create a simple API to understand concepts of express&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Requirements
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;You need Node.js Installed In Your System. You can download node.js from &lt;a href="https://nodejs.org/en/"&gt;Node.js&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Open New Directory And Write This command to initialize a new project.&lt;br&gt;
&lt;code&gt;npm init -y&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;-Now install express as dependencies for your project&lt;br&gt;
&lt;code&gt;npm install express&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Create basic hello world API
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Create index.js file and import express js &amp;amp; initialize the app&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dZuXMzuF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kp5d08lre1s2qsxnnuqr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dZuXMzuF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kp5d08lre1s2qsxnnuqr.png" alt="Express Import &amp;amp; init app" width="800" height="412"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create an endpoint &lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;in simple term endpoint is a path where you are getting expected data&lt;br&gt;
&lt;code&gt;/users return all users&lt;/code&gt;&lt;br&gt;
&lt;code&gt;/products returns all products&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NO2La84K--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h2zjzs7u8btdijv8b172.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NO2La84K--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h2zjzs7u8btdijv8b172.png" alt="endpoint creatiion" width="790" height="500"&gt;&lt;/a&gt;&lt;br&gt;
here we have created endpoint &lt;code&gt;/&lt;/code&gt; where we are sending hello world as a response.&lt;/p&gt;

&lt;p&gt;3 Open a port for connections&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vDhQ5Wa4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0vkpl9sr0i8f9yf4cs89.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vDhQ5Wa4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0vkpl9sr0i8f9yf4cs89.png" alt="Open Port" width="800" height="306"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Run application
&amp;gt; write &lt;code&gt;node index.js&lt;/code&gt; to start the application&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5XYY1phn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j7ae0jnjbbekt29dywvz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5XYY1phn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j7ae0jnjbbekt29dywvz.png" alt="shell" width="800" height="332"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;open localhost:3000 on browser
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Aoq9Obgo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wavta22hcqth6i49ekcu.jpg" alt="browser image" width="557" height="187"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  hooray you made it 🥳
&lt;/h1&gt;

&lt;h3&gt;
  
  
  what now
&lt;/h3&gt;

&lt;p&gt;now try to render Html. try to create forms &amp;amp; process data using any database.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;find material online and create your own express apps.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>node</category>
    </item>
    <item>
      <title>Basic Guide Of tailwindcss</title>
      <dc:creator>Shreyansh sheth</dc:creator>
      <pubDate>Mon, 25 Oct 2021 18:33:32 +0000</pubDate>
      <link>https://dev.to/shreyanshsheth/basic-guide-of-tailwindcss-4558</link>
      <guid>https://dev.to/shreyanshsheth/basic-guide-of-tailwindcss-4558</guid>
      <description>&lt;h2&gt;
  
  
  What is Tailwindcss ?
&lt;/h2&gt;

&lt;p&gt;tailwindcss is a utility-first CSS framework for rapidly building custom user interfaces. &lt;/p&gt;

&lt;p&gt;Basically, all the styles utility are defined in class names. and by combining them you can create beautiful components. just like how you use bootstrap.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://tailwindcss.com/docs"&gt;tailwindcss docs&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Example
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;make padding top of div 0&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"pt-0"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Hey Readers&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here as you can see &lt;code&gt;pt-0&lt;/code&gt; as padding-top should be 0. Like that, we can also do &lt;code&gt;p-0&lt;/code&gt; for all sides &amp;amp; for margin, we can do &lt;code&gt;m-0&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;change button color from blue to red when hover&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"bg-blue-900 hover:bg-red-900"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Click Here!&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In tailwindcss there are different states like &lt;code&gt;hover&lt;/code&gt; &lt;code&gt;focus&lt;/code&gt; etc. and you can define property after them like &lt;code&gt;STATE:CLASS&lt;/code&gt; to work in an intended way. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; &lt;strong&gt;for diffrent screen sizes&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"w-16 md:w-32 lg:w-48"&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"..."&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here we define that for lg and further width will be 48, from md to lg screen the width will be 32 and base width will be 16.&lt;/p&gt;

&lt;p&gt;you can read about what exactly screen sizes are  &lt;a href="https://tailwindcss.com/docs/responsive-design"&gt;Here&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  where tailwind shines?
&lt;/h2&gt;

&lt;p&gt;In tailwind you are repeating yourself. so it really shines when you are working with component-based framework like react ,angular , vue etc. &lt;/p&gt;

&lt;h2&gt;
  
  
  disclamer
&lt;/h2&gt;

&lt;p&gt;If you want to use tailwind I recommend looking into tailwind docs because there are lots of features that might help you.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>webdev</category>
      <category>css</category>
      <category>design</category>
    </item>
    <item>
      <title>Why You Should Use Typescript Over Javascript?</title>
      <dc:creator>Shreyansh sheth</dc:creator>
      <pubDate>Thu, 14 Oct 2021 17:16:19 +0000</pubDate>
      <link>https://dev.to/shreyanshsheth/why-you-should-use-typescript-over-javascript-gkb</link>
      <guid>https://dev.to/shreyanshsheth/why-you-should-use-typescript-over-javascript-gkb</guid>
      <description>&lt;h2&gt;
  
  
  What Typescript Actually Is?
&lt;/h2&gt;

&lt;p&gt;Typescript is a strongly typed programming language like Java or C and typescript compiles into javascript so that we can use it in our browser or other platforms.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reasons To Use Typescript Over Javascript
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;h4&gt;
  
  
  Type Safety
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flpakahlru9nvtz1d2u1p.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%2Fuploads%2Farticles%2Flpakahlru9nvtz1d2u1p.png" alt="Typescript Typecheck"&gt;&lt;/a&gt;&lt;br&gt;
When we do dynamic assigning in javascript it allows us to do that and also it will give us expected results. but if you are working on a large codebase you are not going to track each variable and ensure the types of each of them&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h4&gt;
  
  
  Better Auto-Complete
&lt;/h4&gt;

&lt;p&gt;Typescript provides a complete type system so that ide/text editors eg.vs code can give you better autocompletion on your whole project and increase your productivity.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h4&gt;
  
  
  Conversion From Javascript To Typescript
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb05fwgb9m89vwnii2a5i.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%2Fuploads%2Farticles%2Fb05fwgb9m89vwnii2a5i.png" alt="jsts"&gt;&lt;/a&gt;&lt;br&gt;
Every valid javascript is a valid typescript. so you can start by converting your file to typescript files and set the rules of typescript low and make it strict as time goes on&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Where To Start
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.typescriptlang.org/" rel="noopener noreferrer"&gt;Tyescript Website And Doc&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=gp5H0Vw39yw" rel="noopener noreferrer"&gt;Freecodecamp Video For Typescript&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  conclusion
&lt;/h2&gt;

&lt;p&gt;Typescript is better tool to use when you are comfortable with javascript and need more control over your codebase and want to catch silly mistake on compile-time rather than runtime.&lt;/p&gt;

</description>
      <category>typescript</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Node.js &amp; Deno Comparison</title>
      <dc:creator>Shreyansh sheth</dc:creator>
      <pubDate>Tue, 05 Oct 2021 20:55:53 +0000</pubDate>
      <link>https://dev.to/shreyanshsheth/node-js-deno-comparison-1jhe</link>
      <guid>https://dev.to/shreyanshsheth/node-js-deno-comparison-1jhe</guid>
      <description>&lt;h2&gt;
  
  
  So what is Deno?
&lt;/h2&gt;

&lt;p&gt;Deno is JavaScript , typescript runtime like node.js but it can run typescript natively and has so many new features related to security and module delivery.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why compare to node.js?
&lt;/h2&gt;

&lt;p&gt;At it’s core Deno is same as node and they both uses V8 engine for javascript execution and also their creator &lt;a href="https://tinyclouds.org/"&gt;Ryan Dhal&lt;/a&gt; is same but they are completely different how you manage your dependencies and also files.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why You Should Use.
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Why you should use Deno?
&lt;/h3&gt;

&lt;p&gt;Deno has future because of it’s growing community and also it has so many features that node is lacking and also it is so much secure and better run time than node.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why you should use node?
&lt;/h3&gt;

&lt;p&gt;Although Deno is future proof but node has so much bigger community than any other platform and also if you find yourself stuck you can easily find solution.&lt;/p&gt;

&lt;h2&gt;
  
  
  Things that are changed with Deno.
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Have to give &lt;a href="https://deno.land/manual/runtime/permission_apis"&gt;permission&lt;/a&gt; for accessing files read and write , net , hrtime , etc.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://deno.land/manual/linking_to_external_code"&gt;Importing modules&lt;/a&gt; is completely change and now you can import from url and file sitting on CDN&lt;/li&gt;
&lt;li&gt;No-Package Manager / No-Modules Folder. All the modules fetch from URL cache under Deno and you don’t need to worry about that&lt;/li&gt;
&lt;li&gt;Don’t worry about different setup for typescript it’s just works out of the box.&lt;/li&gt;
&lt;li&gt;Deno has different built in APIs than node because all of async calls end up in some sort of promise.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Deno is the future, but node is current the king for JavaScript development thanks to massive size of community and millions of open source package.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>deno</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Diffrent Ways To Create A React Application</title>
      <dc:creator>Shreyansh sheth</dc:creator>
      <pubDate>Tue, 05 Oct 2021 20:50:47 +0000</pubDate>
      <link>https://dev.to/shreyanshsheth/diffrent-ways-to-create-a-react-application-55a5</link>
      <guid>https://dev.to/shreyanshsheth/diffrent-ways-to-create-a-react-application-55a5</guid>
      <description>&lt;h2&gt;
  
  
  1. Create-React-App
&lt;/h2&gt;

&lt;p&gt;Provide a Simple Environment With All The Things Already Setup For You And You Just Have To Write Code.&lt;/p&gt;

&lt;p&gt;Create React App doesn’t handle backend logic or databases; it just creates a frontend build pipeline, so you can use it with any backend you want. Under the hood, it uses Babel and webpack, but you don’t need to know anything about them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://create-react-app.dev/"&gt;&lt;strong&gt;CRA Docs&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;create new app with create-react-app&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;npx create-react-app appName
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  2. Vite
&lt;/h2&gt;

&lt;p&gt;Same As Create-React-App It Provide All Configuration Out Of The Box. Also, It Supports SSR &amp;amp; SSG.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://vitejs.dev/"&gt;&lt;strong&gt;Vite Docs&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;To Create Vite App&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 init vite@latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  3. Next.js
&lt;/h2&gt;

&lt;p&gt;Currently The Best Tool To Create SSR(server-site-rendered) &amp;amp; SSG(static-site-generation) For React. It Has Inbuilt Optimization That Makes Your App Run So Much Faster &amp;amp; Also If You Want To Add Serverless Function Next.js Also Provides That.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://nextjs.org/"&gt;&lt;strong&gt;Next.js Docs&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;To Create Next.js Application&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;npx create-next-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  4. Gatsby
&lt;/h2&gt;

&lt;p&gt;Gatsby Does SSG And It Has Huge Plugin System To Support Gatsby Compile Your React Code To HTML-CSS So User Don't Have To Wait For Javascript And React To Load&lt;br&gt;
&lt;a href="https://www.gatsbyjs.com/"&gt;&lt;strong&gt;Gatsby Docs&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;To Create Gatsby App&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 init gatsby
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  5. Razzle
&lt;/h2&gt;

&lt;p&gt;It Is Serverside Rendering Framework As Well And This Provide Much More Flexibility.&lt;br&gt;
&lt;a href="https://razzlejs.org/"&gt;&lt;strong&gt;Razzle Docs&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;To Create Razzle App&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 -g create-razzle-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  6. &lt;code&gt;&amp;lt;Script&amp;gt;&lt;/code&gt; Tags
&lt;/h2&gt;

&lt;p&gt;You Can Use Script Tags For React And After Importing That Your Code May Look Like This.&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;e&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;createElement&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;e&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;button&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="na"&gt;onClick&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="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;setState&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;liked&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&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="s1"&gt;Like&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;(&lt;strong&gt;React Docs&lt;/strong&gt;)(&lt;a href="https://reactjs.org/docs/add-react-to-a-website.html"&gt;https://reactjs.org/docs/add-react-to-a-website.html&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I Covered Major Ways To Build React App But You Can Setup Your Own System Like These.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>React.js : beginner guide, Where To Start</title>
      <dc:creator>Shreyansh sheth</dc:creator>
      <pubDate>Fri, 01 Oct 2021 09:03:33 +0000</pubDate>
      <link>https://dev.to/shreyanshsheth/react-js-beginner-guide-where-to-start-3jgc</link>
      <guid>https://dev.to/shreyanshsheth/react-js-beginner-guide-where-to-start-3jgc</guid>
      <description>&lt;h2&gt;
  
  
  Table Of Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;What Is React&lt;/li&gt;
&lt;li&gt;How It Works&lt;/li&gt;
&lt;li&gt;Is It Suitable For You&lt;/li&gt;
&lt;li&gt;Roadmap To Learn React&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What Is React &lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;React Is A Javascript Library To Build User Interfaces. Think Of It As Simple Web Library That You Can Inject Through &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; Tag. &lt;/p&gt;

&lt;h4&gt;
  
  
  Main Features Of React That Attracts Peoples
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;It Has Huge Community&lt;/li&gt;
&lt;li&gt;Library Is Declarative And Easy-To-Understand&lt;/li&gt;
&lt;li&gt;It Is Component Base&lt;/li&gt;
&lt;li&gt;Back By Facebook And Used In Many Morden Web Applications&lt;/li&gt;
&lt;li&gt;Different Production Ready Frameworks Build upon It&lt;/li&gt;
&lt;li&gt;You Can Use JSX To Write Components And It Makes It So Much Easy Rather Than Using Templates&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  How It Works &lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;It Uses Virtual Dom To Handle State And All Its Component And React Based On State Changes. And Updating Virtual Dom Update Browser Dom.&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;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;createElement&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;h1&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="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;heading&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;hey reader&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;React Is Just Library And If You Want To Work With Its True Potential You Have To Use Bable To Transpile All JSX into browser-javascript&lt;/p&gt;

&lt;p&gt;Above Component In Jsx is littraly&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;'heading'&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;hey reader&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But You Don't Have To Worry About This Transpiling Things Because All The Framework Build On Top Of React Just Do That Automatically.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is It Suitable For You &lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;For Most Cases React Is Completely Suitable To Work With Because It Provides 1000s' Of Open-Sources Community Library That Is Help To Solve So Many Problems.&lt;/p&gt;

&lt;p&gt;But, It Is Recommended To Just See What You Want To Achieve And It Is Too Overkill To Use React In That Scenario.&lt;/p&gt;

&lt;h3&gt;
  
  
  Roadmap To Learn React &lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Overview Of React
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=Tn6-PIqc4UM"&gt;Fireship 100 Seconds Of React&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Learning Material For React
&lt;/h4&gt;

&lt;p&gt;&lt;em&gt;I Am Recommending This Because I Have Used It For Myself Also&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://btholt.github.io/complete-intro-to-react-v6/"&gt;Brain Hold FrontEnd Masters Notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://reactjs.org/docs/getting-started.html"&gt;React Docs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  List Of Things To Learn
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Follow List To Get Better Understanding&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;I Have Bias In Some Library Than Other Just Because I Have Learned It And My Experience With That Libraries&lt;/em&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Starter Project (Vite.js, Create-React-App)&lt;/li&gt;
&lt;li&gt;How JSX &amp;amp; Babel Works With Bundlers&lt;/li&gt;
&lt;li&gt;React Functional Components (&lt;em&gt;You Can Use Class Components But Functional Is Easy To Use &amp;amp; Learn&lt;/em&gt;)&lt;/li&gt;
&lt;li&gt;Lifecycle In Functional Components&lt;/li&gt;
&lt;li&gt;UseState Hook In Functional Component&lt;/li&gt;
&lt;li&gt;Props In React&lt;/li&gt;
&lt;li&gt;Build Todo Application With It With Each Todo item is its own component. Use State &amp;amp; lifecycle Hooks Along With Props.&lt;/li&gt;
&lt;li&gt;Learn UseContext Hook &amp;amp; Improve Above Todo App With This Hook&lt;/li&gt;
&lt;li&gt;Learn UseMemo, UseReducer Hooks&lt;/li&gt;
&lt;li&gt;Learn About React-Router Or Reach Router To Create Different Pages And Make Use Of Them In Above Application&lt;/li&gt;
&lt;li&gt;Learn Different CSS &amp;amp; Components Library To Style Above Application.&lt;/li&gt;
&lt;li&gt;Learn About State Management Like Recoil &amp;amp; Redux (&lt;em&gt;"Redux Is Too Complicated And Takes Lots Of Time And Also You Probably Don't Need Redux So Be Careful &amp;amp; Select One You Like"&lt;/em&gt;)&lt;/li&gt;
&lt;li&gt;Learn About Single Page App, Static Site Generation And Server-Side Rendering&lt;/li&gt;
&lt;li&gt;Use Gatsby Or Next.js For Simple Project And Learn About Them.&lt;/li&gt;
&lt;li&gt;Use Typescript With React.&lt;/li&gt;
&lt;li&gt;Learn About One Last Thing That Is Datafetching And Error Handling

&lt;ul&gt;
&lt;li&gt;use ReactQuery Or Swr For Datafetching And Caching&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;Feel Free To Comment About Your Opinions &amp;amp; Improvement In This List And Blog&lt;/em&gt; &lt;/p&gt;

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