<?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: Salman Shaikh</title>
    <description>The latest articles on DEV Community by Salman Shaikh (@slmn).</description>
    <link>https://dev.to/slmn</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%2F283964%2F5344edf3-e78c-4050-8233-0e545a3fcd93.jpg</url>
      <title>DEV Community: Salman Shaikh</title>
      <link>https://dev.to/slmn</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/slmn"/>
    <language>en</language>
    <item>
      <title>Why not to start freelancing</title>
      <dc:creator>Salman Shaikh</dc:creator>
      <pubDate>Thu, 03 Nov 2022 16:47:16 +0000</pubDate>
      <link>https://dev.to/slmn/why-not-to-start-freelancing-14c5</link>
      <guid>https://dev.to/slmn/why-not-to-start-freelancing-14c5</guid>
      <description>&lt;p&gt;Hello all,&lt;/p&gt;

&lt;p&gt;Recently, Many newbie programmers have been coming to me for freelancing advice. My first response to them is, "Don't do it" I know it sounds weird at first but trusts me. I have an explanation for this.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reasons for becoming a freelancer:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Insufficient job income&lt;/li&gt;
&lt;li&gt;Manage premium expenses&lt;/li&gt;
&lt;li&gt;Urge to try something new&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you belong to 3rd point, You should skip this article. Go ahead. For others, freelancing is not a good idea.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why not start freelancing for money?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Tough Competition&lt;/li&gt;
&lt;li&gt;De-moralizing&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Tough Competition
&lt;/h3&gt;

&lt;p&gt;A lot of competition going on in the current freelancing market space. Unless you have a referral or something, it's hard to find a client. I will tell you why:&lt;/p&gt;

&lt;p&gt;The current biggest freelancing marketplaces are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fiverr&lt;/li&gt;
&lt;li&gt;Upwork&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both have a large number of freelancers. Let's say you enter these marketplaces.&lt;/p&gt;

&lt;h4&gt;
  
  
  Fiverr
&lt;/h4&gt;

&lt;p&gt;Fiverr allows 10 bids per day on buyers' requests (which is going away). The catch is you cannot see all the offers. Because when you join Fiverr, You will be a "Level 0" seller.&lt;/p&gt;

&lt;p&gt;Fiverr allows a buyer to show their requirement to the specific level of sellers only. Most buyers prefer at least a "Level 1" Seller. So "Level 0" sellers won't be able to see those requests.&lt;/p&gt;

&lt;p&gt;From my observation, "Level 0" Sellers can see a maximum of 10-15 buyer requests. Whereas "Level 1" Seller can see a minimum of 1000-1200 Buyers Requests.&lt;/p&gt;

&lt;p&gt;I guess now you can see why it's hard to get clients on Fiverr as a newbie freelancer.&lt;/p&gt;

&lt;h4&gt;
  
  
  Upwork
&lt;/h4&gt;

&lt;p&gt;Upwork doesn't have these types of filters like Fiverr, But they do have something else. It's called Connect.&lt;/p&gt;

&lt;p&gt;We can use it to bid on projects. They give you 10 Connects for free every month. But after that, you have to buy connect from Upwork. Applying on a listing takes 3-4 connects on average.&lt;/p&gt;

&lt;p&gt;So, it's not easy to get clients on Upwork either.&lt;/p&gt;

&lt;p&gt;I am not saying these platforms aren't good/you shouldn't use them. You can use them when you are ready to.&lt;/p&gt;

&lt;h3&gt;
  
  
  De-moralizing
&lt;/h3&gt;

&lt;p&gt;Tough competition leads us to de-moralizing. Even after doing great in your work, You start feeling worthless and inefficient to work.&lt;/p&gt;

&lt;p&gt;We don't see how much time and experience it takes to get into freelancing and start comparing ourselves to others with better experiences and knowledge.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Also, they take 20% of your income ;-;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  My Advice
&lt;/h2&gt;

&lt;p&gt;The current biggest freelancing marketplaces are full of competition because many freelancers are looking for jobs and are more experienced than you.&lt;/p&gt;

&lt;p&gt;The current time is to gain knowledge and experience. Don't struggle to get clients. Freelancing does teach so many things. But that is possible when you have clients. I am not saying you cannot. I am saying it's hard because of (experienced) competition.&lt;/p&gt;

&lt;p&gt;It's not the time to start freelancing. But to learn skills, harness technologies/frameworks, and gain experience. After that, you will be ready to jump into the freelancing world.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"If you are willing to fight a battle, Never go unprepared."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Good Bye, and Don't worry, you got this.&lt;/p&gt;

</description>
      <category>freelacing</category>
      <category>webdev</category>
      <category>programming</category>
      <category>mentalhealth</category>
    </item>
    <item>
      <title>Journey to functional approach</title>
      <dc:creator>Salman Shaikh</dc:creator>
      <pubDate>Thu, 17 Feb 2022 09:35:17 +0000</pubDate>
      <link>https://dev.to/slmn/journey-to-functional-approach-41p4</link>
      <guid>https://dev.to/slmn/journey-to-functional-approach-41p4</guid>
      <description>&lt;p&gt;Hello all, &lt;/p&gt;

&lt;p&gt;It's been a while since I made &lt;a href="https://slmn.sh/typing-test" rel="noopener noreferrer"&gt;Monkeytype clone in React&lt;/a&gt;. I wrote the whole app in the Class Components approach because I was a newbie at that time, and it was the easiest way to make a React app. But after some time, I understood why it's not the best approach.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why functional instead of class?
&lt;/h2&gt;

&lt;p&gt;In Class-based components, You can't use one component's function in other component because it integrates functionality with UI very tightly.&lt;/p&gt;

&lt;p&gt;States in class-based components are mutated using &lt;code&gt;this.setState()&lt;/code&gt;. Some of you might have observed the problem here. For others, "this" is the problem. It prevents/makes it hard to mutate the state when the helper function is not in the same scope. &lt;/p&gt;

&lt;p&gt;Class-based components causes the following issues:&lt;/p&gt;

&lt;h4&gt;
  
  
  Lesser Reusability
&lt;/h4&gt;

&lt;p&gt;For example, If we have counterIncrement function in a class component. It'll definitely use this.setState() to increase the counter. We can't use that counterIncrement in any other component because it's bound to that class only.&lt;/p&gt;

&lt;h4&gt;
  
  
  Duplication
&lt;/h4&gt;

&lt;p&gt;We have to write same counterIncrement function in all the other components or pass it somehow as a props and that creates lots of duplicate code everywhere.&lt;/p&gt;

&lt;h4&gt;
  
  
  Increased Complexity
&lt;/h4&gt;

&lt;p&gt;Just because we're passing and creating functions it creates confusion that what function is doing what. &lt;/p&gt;

&lt;h2&gt;
  
  
  Beginning of the journey
&lt;/h2&gt;

&lt;p&gt;Recently, I re-wrote the entire app using Function Components. I noticed that I was passing so many states as props.&lt;/p&gt;

&lt;p&gt;Result component before state management:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Result&lt;/span&gt;
    &lt;span class="na"&gt;words&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&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;words&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
    &lt;span class="na"&gt;typedHistory&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&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;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;typedHistory&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
    &lt;span class="na"&gt;timeLimit&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&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;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;timeLimit&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
    &lt;span class="na"&gt;spaces&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&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;words&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;indexOf&lt;/span&gt;&lt;span class="p"&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;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;currWord&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
    &lt;span class="na"&gt;resetTest&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&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="nf"&gt;resetTest&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="si"&gt;}&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;At that point, I knew that I required a state management library. So I chose redux because it was co-developed by React team members. It made everything super easy to manage. On the other hand, I had to re-write every core function to integrate redux in the app.&lt;/p&gt;

&lt;p&gt;Result component after state management:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Result&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;Looks so clean ✨.&lt;/p&gt;

&lt;p&gt;So, How I'm passing props now? Answer to that is &lt;code&gt;useSelector()&lt;/code&gt; hook from react-redux library. It makes fetching state from any component piece of cake.&lt;/p&gt;

&lt;p&gt;Redux word seems scary, but it's not even that horrifying if you know what you're doing. I enjoyed working with the react-redux library. There were some hiccups due to typescript, but everything else worked as expected.&lt;/p&gt;

&lt;p&gt;Also, I noticed some performance gain after switching to the functional approach. It might be just a placebo, but the typing-test feels much smoother than before.&lt;/p&gt;

&lt;p&gt;I encourage people to use the functional approach when making any react app. It will make your code easy to maintain in the long run.&lt;/p&gt;

&lt;p&gt;You can check out the new and fresh typing-test code here:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/slmnsh" rel="noopener noreferrer"&gt;
        slmnsh
      &lt;/a&gt; / &lt;a href="https://github.com/slmnsh/typing-test" rel="noopener noreferrer"&gt;
        typing-test
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Typing test website build with React
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;typing-test&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/salmannotkhan/typing-test/actions/workflows/node.js.yml/badge.svg"&gt;&lt;img src="https://github.com/salmannotkhan/typing-test/actions/workflows/node.js.yml/badge.svg" alt="Deployment CI"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/7062ac11abbaa6d8e56bdb5f3e54390c8d2559d7af81ef31604519ae5ee8e208/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f647634347066776d3771737564343378686565692e706e67"&gt;&lt;img src="https://camo.githubusercontent.com/7062ac11abbaa6d8e56bdb5f3e54390c8d2559d7af81ef31604519ae5ee8e208/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f647634347066776d3771737564343378686565692e706e67" alt="typing-test(test)"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;NOTE: This is my recreation of already existing &lt;a href="https://monkeytype.com" rel="nofollow noopener noreferrer"&gt;monkeytype&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This site is currently live: &lt;a href="https://salmannotkhan.github.io/typing-test" rel="nofollow noopener noreferrer"&gt;Visit Here&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;How to run locally&lt;/h2&gt;
&lt;/div&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;git clone https://github.com/salmannotkhan/typing-test.git
&lt;span class="pl-c1"&gt;cd&lt;/span&gt; typing-test
npm install
npm start     &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; to start local server at `localhost:3000`&lt;/span&gt;
npm run build &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; to create production build run&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Got new ideas?&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;Did you know? You can add your theme and wordlist ideas into typing-test.&lt;/p&gt;

&lt;p&gt;Here is how you can do it:&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;&lt;strong&gt;To add new theme:&lt;/strong&gt;&lt;/h3&gt;

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Add theme colors into &lt;code&gt;src/stylesheets/themes.scss&lt;/code&gt; in following format:&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight highlight-source-css-scss notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-e"&gt;.theme-name&lt;/span&gt; {
    &lt;span class="pl-v"&gt;--bg-color&lt;/span&gt;: &lt;span class="pl-c1"&gt;background-color&lt;/span&gt;;
    &lt;span class="pl-v"&gt;--font-color&lt;/span&gt;: font&lt;span class="pl-c1"&gt;-&lt;/span&gt;color;
    &lt;span class="pl-v"&gt;--hl-color&lt;/span&gt;: highlight&lt;span class="pl-c1"&gt;-&lt;/span&gt;color;
    &lt;span class="pl-v"&gt;--fg-color&lt;/span&gt;: forground&lt;span class="pl-c1"&gt;-&lt;/span&gt;color;
}&lt;/pre&gt;

&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;highlight-color&lt;/code&gt; is used for caret, wrong characters, timer, selected and onhover colors&lt;br&gt;
&lt;code&gt;forground-color&lt;/code&gt; is used for correctly typed characters&lt;br&gt;
&lt;em&gt;Using hex codes for colors is recommended&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;&lt;strong&gt;To add new wordlist:&lt;/strong&gt;&lt;/h3&gt;

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Rename your wordlist as &lt;code&gt;&amp;lt;wordlist-name&amp;gt;.json&lt;/code&gt; and place it inside &lt;code&gt;src/wordlists&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;


&lt;blockquote&gt;

&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt;&lt;br&gt;
The JSON file should…&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/slmnsh/typing-test" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Previous Article:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag__link"&gt;
  &lt;a href="/slmn" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F283964%2F5344edf3-e78c-4050-8233-0e545a3fcd93.jpg" alt="slmn"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/slmn/typing-test-monkeytype-clone-in-reactjs-bd" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;typing-test: monkeytype clone in ReactJS&lt;/h2&gt;
      &lt;h3&gt;Salman Shaikh ・ Aug 5 '21&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#react&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#javascript&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#typescript&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#showdev&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>typescript</category>
      <category>react</category>
      <category>redux</category>
      <category>webdev</category>
    </item>
    <item>
      <title>typing-test: monkeytype clone in ReactJS</title>
      <dc:creator>Salman Shaikh</dc:creator>
      <pubDate>Thu, 05 Aug 2021 19:08:44 +0000</pubDate>
      <link>https://dev.to/slmn/typing-test-monkeytype-clone-in-reactjs-bd</link>
      <guid>https://dev.to/slmn/typing-test-monkeytype-clone-in-reactjs-bd</guid>
      <description>&lt;p&gt;Hello all,&lt;/p&gt;

&lt;p&gt;I wanted to make a typing test website with ReactJS and JavaScript. So I looked around for good typing test website and one website came to mind monkeytype. it's quite popular for the minimal look. So I thought why not make clone of it.&lt;/p&gt;

&lt;p&gt;After adding features and polishing the logic I thought about switching to TypeScript for experiment. &lt;/p&gt;

&lt;p&gt;First I kept tsconfig.json settings to very loose and then tried tightening them step by step.&lt;/p&gt;

&lt;p&gt;It was smooth three phase process (suggested by Mike North in Frontend Masters) for converting existing JavaScript codebase to TypeScript.&lt;/p&gt;

&lt;p&gt;After 2 weeks of writing and refactoring, typing-test is ready to use for everyone.&lt;/p&gt;

&lt;p&gt;If anyone wants to add new theme to typing-test &lt;a href="https://github.com/slmnsh/typing-test#got-new-theme-ideas" rel="noopener noreferrer"&gt;take a look at this&lt;/a&gt;.&lt;br&gt;
All contributions are welcomed :)&lt;/p&gt;

&lt;h2&gt;
  
  
  Features:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Colorful multiple themes support

&lt;ul&gt;
&lt;li&gt;default&lt;/li&gt;
&lt;li&gt;mkbhd&lt;/li&gt;
&lt;li&gt;coral&lt;/li&gt;
&lt;li&gt;ocean&lt;/li&gt;
&lt;li&gt;azure&lt;/li&gt;
&lt;li&gt;forest&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;4 time limits (15s, 30s, 45s, 60s)&lt;/li&gt;

&lt;li&gt;Smooth cursor&lt;/li&gt;

&lt;li&gt;Instant Tab restart&lt;/li&gt;

&lt;li&gt;Previous word correction&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Screenshot:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fdv44pfwm7qsud43xheei.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fdv44pfwm7qsud43xheei.png" alt="typing-test(test)" width="800" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fnb1wqlarzfbjl5i0oa1j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fnb1wqlarzfbjl5i0oa1j.png" alt="typing-test(result)" width="800" height="392"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://slmnsh.github.io/typing-test" rel="noopener noreferrer"&gt;Visit Site&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.github.com/slmnsh/typing-test" rel="noopener noreferrer"&gt;Source Code&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>javascript</category>
      <category>typescript</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Unofficial Fiverr API: New way to get your Fiverr Data</title>
      <dc:creator>Salman Shaikh</dc:creator>
      <pubDate>Mon, 02 Aug 2021 10:52:04 +0000</pubDate>
      <link>https://dev.to/slmn/unofficial-fiverr-api-new-way-to-get-your-fiverr-data-2cdj</link>
      <guid>https://dev.to/slmn/unofficial-fiverr-api-new-way-to-get-your-fiverr-data-2cdj</guid>
      <description>&lt;p&gt;Hello all,&lt;/p&gt;

&lt;p&gt;I'm a freelancer on Fiverr and a Python Developer. Recently, I thought about integrating Fiverr reviews on my portfolio. &lt;/p&gt;

&lt;p&gt;I started digging for an official or already existing API that I can use to fetch and show them on my portfolio. But I didn't find any, so I took this opportunity to build one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Presenting Unofficial Fiverr API 🎉
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Features:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Get seller details 🙋‍♂️&lt;/li&gt;
&lt;li&gt;Get seller gigs details 💼&lt;/li&gt;
&lt;li&gt;Get seller reviews 🌟

&lt;ul&gt;
&lt;li&gt;Group by buyers&lt;/li&gt;
&lt;li&gt;Filter by Impression&lt;/li&gt;
&lt;li&gt;Sort by time or relevance&lt;/li&gt;
&lt;li&gt;Limit no. of reviews(added in v1.2)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;It's built with Python FastAPI and hosted on Vercel.&lt;/p&gt;

&lt;p&gt;Now you can integrate your Fiverr reviews into your portfolios or anywhere.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://fiverr-api.vercel.app/docs" rel="noopener noreferrer"&gt;API Documentation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.github.com/slmnsh/fiverr-api" rel="noopener noreferrer"&gt;Source code&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.github.com/slmnsh" rel="noopener noreferrer"&gt;Checkout my other projects&lt;/a&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>fastapi</category>
      <category>fiverr</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
