<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Ivan G.</title>
    <description>The latest articles on Forem by Ivan G. (@igrekov).</description>
    <link>https://forem.com/igrekov</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%2F59580%2F6564553d-f8e2-4076-88a7-a38535f3a51a.jpg</url>
      <title>Forem: Ivan G.</title>
      <link>https://forem.com/igrekov</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/igrekov"/>
    <language>en</language>
    <item>
      <title>How I decided to revive my project that was stale for 5 years... Part 2</title>
      <dc:creator>Ivan G.</dc:creator>
      <pubDate>Mon, 08 Dec 2025 13:22:13 +0000</pubDate>
      <link>https://forem.com/igrekov/how-i-decided-to-revive-my-project-that-was-stale-for-5-years-part-2-275m</link>
      <guid>https://forem.com/igrekov/how-i-decided-to-revive-my-project-that-was-stale-for-5-years-part-2-275m</guid>
      <description>&lt;h2&gt;
  
  
  Intro
&lt;/h2&gt;

&lt;p&gt;In the first part of the series, I put together a fairly universal checklist on &lt;a href="https://dev.to/igrekov/how-i-decided-to-revive-my-project-that-was-stale-for-5-years-fj0"&gt;how to decide which projects to keep active&lt;/a&gt; in your GitHub profile. In this chapter, I will show how that list can work in practice, using one of my older projects: &lt;a href="https://github.com/Winner95/typescript-react-function-component-props-handler" rel="noopener noreferrer"&gt;&lt;code&gt;typescript-react-function-component-props-handler&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I initially thought I would publish this chapter much sooner, but it turns out that getting the context and scope right for this series of articles takes a bit of time - and that is perfectly fine.&lt;/p&gt;

&lt;p&gt;This is Part 2 of the series, where I will be focusing on measuring the impact of a project I shared previously. &lt;/p&gt;

&lt;p&gt;Before diving into any research, let's briefly recap what exactly this project was doing five years ago.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the project does
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;typescript-react-function-component-props-handler&lt;/code&gt; is a custom React function component props handler for &lt;code&gt;react-docgen&lt;/code&gt; version &lt;code&gt;5.x.x&lt;/code&gt;. It allows you to parse props (prop types) that are typed as &lt;code&gt;React.FunctionComponent&amp;lt;Props&amp;gt;&lt;/code&gt; without having to rewrite your components.&lt;/p&gt;

&lt;p&gt;Back in 2020, the main aim was to help frontend developers follow what was then a common way of defining props in TypeScript and React.&lt;/p&gt;

&lt;p&gt;It was interesting that initially the as React function components were defined as functions, so utilizing definitions of typical functions with paramaters definition was common in different codebases, such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const Button = (props: propsType) =&amp;gt; ...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And everything works perfectly. However, with more and more teams starting to utilise this approach for new applications and codebases:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const Button: React.FunctionComponent&amp;lt;Props&amp;gt; (props) =&amp;gt; ...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So it seemed to be reasonable to have a support for parsing such option by &lt;code&gt;react-docgen&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;For that purpose the package acts as a custom plugin (handler) for the &lt;code&gt;react-docgen&lt;/code&gt; &lt;code&gt;parse&lt;/code&gt; function. It allows to support all previous existing notations and new &lt;code&gt;React.FC&amp;lt;Props&amp;gt;&lt;/code&gt; ones. And that I built in 2020.&lt;/p&gt;

&lt;p&gt;The question now is: can this package still do that job effectively in 2025 or 2026? Let's try to figure this out.&lt;/p&gt;

&lt;h2&gt;
  
  
  Measuring the impact
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Back in the day
&lt;/h3&gt;

&lt;p&gt;Trying to measure the impact of a project, especially five years after you last worked on it, is quite an interesting exercise.&lt;/p&gt;

&lt;p&gt;Let's start from the very beginning.&lt;/p&gt;

&lt;p&gt;For this project, it all started with researching the original problem and potential solutions, which led me to &lt;a href="https://github.com/reactjs/react-docgen/issues/387" rel="noopener noreferrer"&gt;this issue&lt;/a&gt; reported in &lt;code&gt;react-docgen&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;The issue had around 156 reactions, which suggests there was a decent amount of interest. The problem &lt;a href="https://github.com/storybookjs/storybook/issues/8279" rel="noopener noreferrer"&gt;also affected&lt;/a&gt; Storybook 5.&lt;/p&gt;

&lt;p&gt;So it's fair to say that, back in 2020, the tool was genuinely able to help to solve a real problem for frontend developers.&lt;/p&gt;

&lt;h3&gt;
  
  
  But what about 2025 or 2026?
&lt;/h3&gt;

&lt;p&gt;The first step now is to understand how newer versions of &lt;code&gt;react-docgen&lt;/code&gt; handle React function components and TypeScript prop definitions.&lt;/p&gt;

&lt;p&gt;Starting from &lt;a href="https://github.com/reactjs/react-docgen/releases/tag/react-docgen%406.0.0" rel="noopener noreferrer"&gt;&lt;code&gt;react-docgen&lt;/code&gt; 6+&lt;/a&gt;, the interface of the &lt;code&gt;parse&lt;/code&gt; function changed. It now uses the Babel toolchain to process TypeScript types &lt;a href="https://react-docgen.dev/docs/migrate/v6#changed-handlers-api" rel="noopener noreferrer"&gt;for the ASTs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In theory, this should be faster and it would be good to compare the different version performance in practice. That could easily become a separate direction for exploration.&lt;/p&gt;

&lt;p&gt;Nevertheless, there was also &lt;code&gt;react-docgen-typescript&lt;/code&gt; tool in 2020.&lt;/p&gt;

&lt;p&gt;I am also curious about how the performance of &lt;code&gt;react-docgen-typescript&lt;/code&gt; has changed since then - especially given how many projects are now using different software to generate bundles, such as Vite (and Webpack 5...). Back then, one of the main constraints was that running Webpack with &lt;code&gt;react-docgen-typescript&lt;/code&gt; on repositories with 1,000+ components could take ages. Things may well have improved by now.&lt;/p&gt;

&lt;p&gt;Going back to &lt;code&gt;react-docgen&lt;/code&gt;, I saw there's an announcement about the future of TypeScript support in &lt;code&gt;react-docgen&lt;/code&gt; &lt;a href="https://github.com/reactjs/react-docgen/issues/1005" rel="noopener noreferrer"&gt;here&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;With that in mind, it might be worth exploring how much effort it would take to keep good support for React function component props in TypeScript for new version of &lt;code&gt;react-docgen&lt;/code&gt; going forward. That could become a completely separate topic and a longer-term direction for this project.&lt;/p&gt;

&lt;p&gt;And this is quite an important point: you really do need to take the time to understand the current landscape properly. Exploring a scope that is even slightly ambiguous (or ambitious, if you prefer!) can take some good time.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scope definition
&lt;/h3&gt;

&lt;p&gt;So, let's set some clear boundaries and define the scope for version &lt;code&gt;1.x.x&lt;/code&gt; of the project. The toolchain and environment will be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;react-docgen&lt;/code&gt; &lt;strong&gt;5.x.x&lt;/strong&gt;, which is the most important limitation for now.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Other dependencies that can be tested and documented for compatibility in the new versions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;React &lt;strong&gt;17+&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;TypeScript or even just the &lt;code&gt;prop-types&lt;/code&gt; module (as noted for Storybook &lt;code&gt;5.2.1+&lt;/code&gt; in &lt;a href="https://github.com/storybookjs/storybook/issues/8279" rel="noopener noreferrer"&gt;https://github.com/storybookjs/storybook/issues/8279&lt;/a&gt;), which means the custom handler can also help with prop definitions for certain Storybook versions.&lt;/li&gt;
&lt;li&gt;Node &lt;strong&gt;12+&lt;/strong&gt; (to be confirmed)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My initial plan was to provide examples in the project's GitHub repository showing how to assess the existing tools and ecosystem under these constraints. For that, I will need to pick some still supported projects to use as a reference points.&lt;/p&gt;

&lt;p&gt;The best way to start is by finding out which projects are still using &lt;code&gt;react-docgen&lt;/code&gt; 5.x and might benefit from enhanced prop generation - things like component libraries, parsing tools, SaaS products, and so on.&lt;/p&gt;

&lt;p&gt;Thankfully, these days it is relatively easy to find open data about open source projects: npm stats, GitHub search results, and similar sources are all readily available.&lt;/p&gt;

&lt;h3&gt;
  
  
  NPM stats
&lt;/h3&gt;

&lt;p&gt;As I mentioned earlier, it's useful to see which projects use or depend on your package. I started with a simple question: how many projects are actually using &lt;code&gt;typescript-react-function-component-props-handler&lt;/code&gt; today on NPM or GitHub? (I will come back to that later.)&lt;/p&gt;

&lt;p&gt;The short answer is: not many, at least not directly - which is fine. Despite that, the package still has respectable download numbers for something that hasn't been updated in five years.&lt;/p&gt;

&lt;p&gt;A couple of easy sources of information:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;npm:&lt;/strong&gt; The graph on the package page and the &lt;strong&gt;“Versions”&lt;/strong&gt; tab show weekly download trends:&lt;br&gt;&lt;br&gt;
&lt;a href="https://www.npmjs.com/package/typescript-react-function-component-props-handler?activeTab=versions" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/typescript-react-function-component-props-handler?activeTab=versions&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;shields.io integration:&lt;/strong&gt; A badge on the GitHub repo shows monthly downloads:&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/Winner95/typescript-react-function-component-props-handler" rel="noopener noreferrer"&gt;https://github.com/Winner95/typescript-react-function-component-props-handler&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Shields.io also lets you view open download data for different time ranges, which looks quite encouraging for a small utility module - roughly 8k downloads per year. If you maintain an open source project, integrating these badges can be a nice way to present usage information in a concise and visually appealing way. You can experiment with badges for npm packages and many other ecosystems here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://shields.io/badges/npm-downloads" rel="noopener noreferrer"&gt;https://shields.io/badges/npm-downloads&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Side note: the npm graphs don't always provide detailed insights about comparing different version downloads data. I do wonder whether there are more advanced visualisation tools around these days. That alone could be an idea for another project.&lt;/p&gt;

&lt;p&gt;Anyway, going back to the original goal: we now have some numbers showing how the tool is being used at the moment.&lt;/p&gt;

&lt;p&gt;But what about the &lt;em&gt;potential&lt;/em&gt; impact and use cases? This is where GitHub comes in handy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Searching GitHub
&lt;/h2&gt;

&lt;p&gt;I would like to say a few kind words about how good GitHub's search has become. The way you can query things on GitHub these days is genuinely convenient.&lt;/p&gt;

&lt;p&gt;So we are going to look at GitHub search results to find the answer to this question: &lt;strong&gt;how many projects are using &lt;code&gt;react-docgen&lt;/code&gt; (and specifically version 5) today?&lt;/strong&gt; As I mentioned earlier, just the number of projects using my handler directly is relatively low, according to Github results. So the next step is to look at the broader ecosystem and see where the handler &lt;em&gt;could&lt;/em&gt; be useful.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Start broad
&lt;/h3&gt;

&lt;p&gt;My first hypothesis was simply to use search results as they are and refine it to see if it makes sense to continue and take it from there. In other words, I was wondering&lt;/p&gt;

&lt;p&gt;How many projects are using &lt;code&gt;react-docgen&lt;/code&gt; in their &lt;code&gt;package.json&lt;/code&gt; as a dependency?&lt;/p&gt;

&lt;p&gt;Search query:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"react-docgen":  path:**/package.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;GitHub code search link (approx. 7.4k results):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/search?q=%22react-docgen%22%20path:**/package.json&amp;amp;type=code" rel="noopener noreferrer"&gt;https://github.com/search?q=%22react-docgen%22%20path:**/package.json&amp;amp;type=code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So we started with around 7.4k results.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Use a regex to find any &lt;code&gt;react-docgen&lt;/code&gt; entry
&lt;/h3&gt;

&lt;p&gt;We can simplify the query a bit and use a regex:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;path:package.json /"react-docgen"/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;GitHub search:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/search?q=path:package.json%20/%22react-docgen%22/&amp;amp;type=code" rel="noopener noreferrer"&gt;https://github.com/search?q=path:package.json%20/%22react-docgen%22/&amp;amp;type=code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This query still only looks for the package name, but now using the new code search syntax with regex, which is quite handy and we confirm if results are consistent between 2 queries.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Filter specifically for version 5
&lt;/h3&gt;

&lt;p&gt;Next, I wanted to look only at projects using version 5 of &lt;code&gt;react-docgen&lt;/code&gt;. So the search becomes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;path:package.json /"react-docgen"\s*:\s*"[~^]?5(\.|")/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This query tries to match any variant of version 5 of the package (for example, &lt;code&gt;5.0.0&lt;/code&gt;, &lt;code&gt;^5.2.1&lt;/code&gt;, &lt;code&gt;~5.3.0&lt;/code&gt;, and so on).&lt;/p&gt;

&lt;p&gt;The result of filtered query is roughly 2.9k files it is already a nice reduction.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Exclude generated or vendor directories
&lt;/h3&gt;

&lt;p&gt;Some of these &lt;code&gt;package.json&lt;/code&gt; files will inevitably belong to pre-generated code or even &lt;code&gt;node_modules&lt;/code&gt; accidentally committed to a repo. That's not ideal if you're trying to focus on “real” projects. For that you need to focus on files that are not in pre-built folders.&lt;/p&gt;

&lt;p&gt;So the next iteration adds some exclusions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;path:package.json /"react-docgen"\s*:\s*"[~^]?5(\.|")/ NOT path:node_modules NOT path:dist NOT path:build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;GitHub search (about 2.4k files):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/search?q=path:package.json%20/%22react-docgen%22%5Cs*:%5Cs*%22%5B%7E%5E%5D%3F5(%5C.%7C%22)/%20NOT%20path:node_modules%20NOT%20path:dist%20NOT%20path:build&amp;amp;type=code" rel="noopener noreferrer"&gt;https://github.com/search?q=path:package.json%20/%22react-docgen%22%5Cs*:%5Cs*%22%5B~^%5D%3F5(\.|%22)/%20NOT%20path:node_modules%20NOT%20path:dist%20NOT%20path:build&amp;amp;type=code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is already a decent improvement and gives a more realistic set of projects.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5: Exclude archived repositories
&lt;/h3&gt;

&lt;p&gt;Next, I wondered: what if some of these repositories are already archived?&lt;/p&gt;

&lt;p&gt;We can add &lt;code&gt;NOT is:archived&lt;/code&gt; to the query:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;path:package.json /"react-docgen"\s*:\s*"[~^]?5(\.|")/
NOT path:node_modules NOT path:dist NOT path:build NOT is:archived
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;GitHub search (around 2.3k files):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/search?q=path:package.json%20/%22react-docgen%22%5Cs*:%5Cs*%22%5B%7E%5E%5D%3F5(%5C.%7C%22)/%20NOT%20path:node_modules%20NOT%20path:dist%20NOT%20path:build%20NOT%20is:archived&amp;amp;type=code" rel="noopener noreferrer"&gt;https://github.com/search?q=path:package.json%20/%22react-docgen%22%5Cs*:%5Cs*%22%5B~^%5D%3F5(\.|%22)/%20NOT%20path:node_modules%20NOT%20path:dist%20NOT%20path:build%20NOT%20is:archived&amp;amp;type=code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We've trimmed another hundred or so repositories, which seems reasonable.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 6: Exclude forks
&lt;/h3&gt;

&lt;p&gt;Finally, I wanted to focus on “original” projects rather than forks. So I added &lt;code&gt;NOT is:fork&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;path:package.json /"react-docgen"\s*:\s*"[~^]?5(\.|")/
NOT path:node_modules NOT path:dist NOT path:build NOT is:archived NOT is:fork
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;GitHub search (around 430 files):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/search?q=path:package.json%20/%22react-docgen%22%5Cs*:%5Cs*%22%5B%7E%5E%5D%3F5(%5C.%7C%22)/%20NOT%20path:node_modules%20NOT%20path:dist%20NOT%20path:build%20NOT%20is:archived%20NOT%20is:fork&amp;amp;type=code" rel="noopener noreferrer"&gt;https://github.com/search?q=path:package.json%20/%22react-docgen%22%5Cs*:%5Cs*%22%5B~^%5D%3F5(\.|%22)/%20NOT%20path:node_modules%20NOT%20path:dist%20NOT%20path:build%20NOT%20is:archived%20NOT%20is:fork&amp;amp;type=code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That brings us down from roughly 7.4k to around 430 projects, which feels like a much more manageable and realistic list of repositories to go through - at least from looking through the first few pages.&lt;/p&gt;

&lt;p&gt;At this point, the next question is: &lt;em&gt;which of these repositories are still active this year?&lt;/em&gt; It would be nice to use something like &lt;code&gt;updated:&amp;gt;2025-01-01&lt;/code&gt; to filter by last update date... but GitHub code search politely reminds us:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“The &lt;code&gt;updated&lt;/code&gt; qualifier is not supported when searching code.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Fair enough. Even without that, we have already gone from ~7.4k to ~430 projects, which is quite a change.&lt;/p&gt;

&lt;p&gt;You could imagine using other (AI) tools to cross-reference this list with actual repository metadata and confirm which projects are actively maintained in 2025. That would be a good use case in itself - but it would also take us off on a different tangent: building more complex search workflows for GitHub.&lt;/p&gt;

&lt;p&gt;If you're interested in experimenting with GitHub search yourself, there's plenty of documentation available:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/search/advanced" rel="noopener noreferrer"&gt;https://github.com/search/advanced&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://docs.github.com/en/search-github/getting-started-with-searching-on-github/about-searching-on-github" rel="noopener noreferrer"&gt;https://docs.github.com/en/search-github/getting-started-with-searching-on-github/about-searching-on-github&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://docs.github.com/en/search-github/github-code-search/understanding-github-code-search-syntax" rel="noopener noreferrer"&gt;https://docs.github.com/en/search-github/github-code-search/understanding-github-code-search-syntax&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The main idea I wanted to show here is how you can get a first impression and a rough figure of the potential impact for your own tools and projects. My example was based on research of how many tools are using &lt;code&gt;react-docgen&lt;/code&gt; of version 5.x today - and therefore how many projects could potentially benefit from improved prop generation that custom handler provides.&lt;/p&gt;

&lt;p&gt;On a side note, a completely different idea came to my mind: based on GitHub search results, there is probably room for a commercial tool that helps you build more sophisticated queries and analyses. We will see what can be build, but maybe next time.&lt;/p&gt;

&lt;p&gt;So, where does that leave us today?&lt;/p&gt;

&lt;h2&gt;
  
  
  Instead of an epilogue
&lt;/h2&gt;

&lt;p&gt;So far, we have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;outlined the potential impact of the project,&lt;/li&gt;
&lt;li&gt;captured some notes on how to work with open data for open source projects,&lt;/li&gt;
&lt;li&gt;collected a few side project ideas that can go onto the ever-growing TODO list.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is enough to confidently say we have what we can try to start working on the project again.&lt;/p&gt;

&lt;p&gt;I manually tested the custom code handler a long time ago, so the immediate next step is to add proper test cases and examples to ensure I am covering the main use cases. &lt;/p&gt;

&lt;p&gt;And that is where I discovered that there was a pull request in the repository that I completely missed... three years ago.&lt;/p&gt;

&lt;p&gt;More on that in the next chapter.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>github</category>
      <category>webdev</category>
      <category>sideprojects</category>
    </item>
    <item>
      <title>How I decided to revive my project that was stale for 5 years...</title>
      <dc:creator>Ivan G.</dc:creator>
      <pubDate>Tue, 02 Dec 2025 17:14:45 +0000</pubDate>
      <link>https://forem.com/igrekov/how-i-decided-to-revive-my-project-that-was-stale-for-5-years-fj0</link>
      <guid>https://forem.com/igrekov/how-i-decided-to-revive-my-project-that-was-stale-for-5-years-fj0</guid>
      <description>&lt;h2&gt;
  
  
  Revisiting Old Open Source Projects in 2025
&lt;/h2&gt;

&lt;p&gt;A lot can change in five years. I recently realised I hadn’t opened my GitHub profile in almost three years. Part of the reason was that notifications stopped working properly at some point. I remember one day being flooded with random spam notifications… and then suddenly stopped receiving anything at all, after setup notifications. Not the best experience when you’ve got 20+ projects to maintain.&lt;/p&gt;

&lt;p&gt;Moreover, life gets busy, so these things happen. In 2025 I decided it was time to revisit my projects there, one at a time.&lt;/p&gt;

&lt;p&gt;The first question I had to ask myself was simple: &lt;strong&gt;which projects are worth keeping maintained, and which should be archived?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This article shares some general ideas that helped me to decide. Hopefully they will be useful to you too.&lt;/p&gt;




&lt;h2&gt;
  
  
  How to decide what to keep
&lt;/h2&gt;

&lt;p&gt;My goal in 2015, 2020 and 2025 remains simple and straightforward: &lt;strong&gt;to share solutions and ideas that solve real challenges in the frontend or full-stack development world.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here are three simple steps that I find useful:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Is the project still relevant?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does this project solve a problem that developers still have today?&lt;/li&gt;
&lt;li&gt;Can I reasonably expect other projects to benefit from it in 2025 and beyond?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Scope and context&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What exactly does the tool do?&lt;/li&gt;
&lt;li&gt;What &lt;em&gt;doesn't&lt;/em&gt; it do, and what shouldn't it try to do?&lt;/li&gt;
&lt;li&gt;A clear, focused scope makes it easier to maintain and easier for others to understand.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Simplicity and usability&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Keep usage simple: the most common use cases should be easy to understand from the 'README'.&lt;/li&gt;
&lt;li&gt;Provide enough context in the documentation:

&lt;ul&gt;
&lt;li&gt;Why does this project exist?&lt;/li&gt;
&lt;li&gt;When should someone use it (or &lt;em&gt;not&lt;/em&gt; use it)?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Try to avoid “clever” APIs, fix-it-all tool, if they make the learning curve steeper for no real benefit.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If a project scores well on &lt;strong&gt;relevance&lt;/strong&gt;, &lt;strong&gt;scope&lt;/strong&gt;, and &lt;strong&gt;usability&lt;/strong&gt;, it is usually a good candidate to keep, polish, and improve rather than archive.&lt;/p&gt;




&lt;h2&gt;
  
  
  How to maintain it
&lt;/h2&gt;

&lt;p&gt;Once you have decided a project is worth keeping, the next question is: &lt;strong&gt;how do you maintain it realistically?&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Set a realistic timeline&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Decide how often you can look at the project (monthly, quarterly, etc.).&lt;/li&gt;
&lt;li&gt;It doesn't have to be perfect; it just has to be sustainable for you.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Be transparent about updates&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Don't let all communication live only in the GitHub repo and the NPM registry.&lt;/li&gt;
&lt;li&gt;Share updates somewhere else too, for example:

&lt;ul&gt;
&lt;li&gt;Dev.to posts&lt;/li&gt;
&lt;li&gt;LinkedIn updates&lt;/li&gt;
&lt;li&gt;A short changelog in the README&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;This helps people understand whether the project is still active and what's changing.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Minimise product-based dependencies&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Aim for &lt;strong&gt;zero or minimal third-party product dependencies&lt;/strong&gt; where it makes sense.&lt;/li&gt;
&lt;li&gt;This reduces the surface area for security issues and version conflicts.&lt;/li&gt;
&lt;li&gt;In 2025, this still feels like a solid approach for JS/TS and Node.js projects, especially for small libraries and tools.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Follow software development best practices&lt;/strong&gt;&lt;br&gt;
Even for small open source tools, a little bit of discipline makes a big difference:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A clear &lt;strong&gt;release cycle&lt;/strong&gt; definition (even if it's “when needed, but documented”).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automated tests&lt;/strong&gt; for the core functionality.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CI/CD pipelines&lt;/strong&gt; (e.g. GitHub Actions) for tests and releases.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Linting and formatting rules&lt;/strong&gt; to keep contributions consistent.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Documentation updates with each release&lt;/strong&gt; so users aren't guessing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Semantic Versioning (SemVer)&lt;/strong&gt; and &lt;strong&gt;Git tags&lt;/strong&gt; for every release so people can rely on versioning.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You don't have to implement everything at once, but having these as a long-term checklist can really help keep the project healthy.&lt;/p&gt;




&lt;h2&gt;
  
  
  So… is it worth it?
&lt;/h2&gt;

&lt;p&gt;If you're a frontend or full-stack developer wondering:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Does it still make sense to revive or create open source projects in 2025?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;My answer is still: &lt;strong&gt;yes&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It just needs to be more intentional:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;choosing what is worth maintaining,&lt;/li&gt;
&lt;li&gt;keeping the scope / context clear,&lt;/li&gt;
&lt;li&gt;and treating even small libraries with a bit of professional care.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the first article in a small series about revisiting old projects and open source maintenance in 2025.&lt;/p&gt;

&lt;p&gt;More on that in the next parts.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>github</category>
      <category>webdev</category>
      <category>sideprojects</category>
    </item>
    <item>
      <title>How to set up showcase of your React UI-components using GitHub Pages</title>
      <dc:creator>Ivan G.</dc:creator>
      <pubDate>Sun, 13 Sep 2020 15:21:22 +0000</pubDate>
      <link>https://forem.com/igrekov/how-to-set-up-showcase-of-your-react-ui-components-using-github-pages-2ge6</link>
      <guid>https://forem.com/igrekov/how-to-set-up-showcase-of-your-react-ui-components-using-github-pages-2ge6</guid>
      <description>&lt;h3&gt;
  
  
  My Workflow
&lt;/h3&gt;

&lt;p&gt;My workflow is based on the use of existing GitHub actions, small script for building &lt;a href="https://github.com/badoo/styleguide" rel="noopener noreferrer"&gt;Styleguide&lt;/a&gt; example and hosting results on GitHub Pages. &lt;/p&gt;

&lt;p&gt;You can use it for building an example for hosting your own visual documentation / components or static website demo. The same workflow with any react UI library or building tool - &lt;a href="https://storybook.js.org/" rel="noopener noreferrer"&gt;Storybook&lt;/a&gt;, &lt;a href="https://github.com/styleguidist/react-styleguidist" rel="noopener noreferrer"&gt;Styleguidist&lt;/a&gt; or any other:)&lt;/p&gt;

&lt;p&gt;One of the main benefits - on each push / pull request in main branch of your repo, you will automatically get an up-to-date version of your UI Library or App.&lt;/p&gt;

&lt;h3&gt;
  
  
  Submission Category:
&lt;/h3&gt;

&lt;p&gt;DIY Deployments&lt;/p&gt;

&lt;h3&gt;
  
  
  Yaml File or Link to Code
&lt;/h3&gt;

&lt;h4&gt;
  
  
  5 quicks steps to run
&lt;/h4&gt;

&lt;p&gt;After you perform initial setup, which consists of:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;create your own &lt;a href="https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line" rel="noopener noreferrer"&gt;Personal Access Token&lt;/a&gt; on GitHub setting page. Use this access token as the password in code below, not your actual account password.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://docs.github.com/en/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets#creating-encrypted-secrets-for-a-repository" rel="noopener noreferrer"&gt;setup your GitHub username&lt;/a&gt; as USERNAME and remote url as REMOTE_URL  (for example &lt;a href="https://github.com/winner95/styleguide.git" rel="noopener noreferrer"&gt;https://github.com/winner95/styleguide.git&lt;/a&gt;) in GitHub Secrets.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://docs.github.com/en/github/working-with-github-pages/configuring-a-publishing-source-for-your-github-pages-site" rel="noopener noreferrer"&gt;setup GitHub Pages&lt;/a&gt; for your repo.&lt;/li&gt;
&lt;li&gt;create file &lt;code&gt;.github/workflows/publish-docs.yml&lt;/code&gt; in your repo.&lt;/li&gt;
&lt;li&gt;paste the following code:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Styleguide-build&lt;/span&gt;
&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;push&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;branches&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;master&lt;/span&gt; &lt;span class="pi"&gt;]&lt;/span&gt;
  &lt;span class="na"&gt;pull_request&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;branches&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;master&lt;/span&gt; &lt;span class="pi"&gt;]&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;build&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;

    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="c1"&gt;# Checks-out your repository under $GITHUB_WORKSPACE,&lt;/span&gt;
      &lt;span class="c1"&gt;# so your job can access it&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v2&lt;/span&gt;

      &lt;span class="c1"&gt;# Runs a single command using the runners shell&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;setup node&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/setup-node@v1&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;node-version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;12.18.3&lt;/span&gt;

      &lt;span class="c1"&gt;# install javaScript dependencies&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;yarn install&lt;/span&gt;
      &lt;span class="c1"&gt;# this is a line, which you can change &lt;/span&gt;
      &lt;span class="c1"&gt;# to your own building script&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;yarn styleguide --buildDir ./docs&lt;/span&gt;

      &lt;span class="c1"&gt;# deploy action&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;GitHub Pages Deploy&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;appleboy/gh-pages-action@v0.0.2&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;username&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.USERNAME }}&lt;/span&gt;
          &lt;span class="na"&gt;password&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.PASSWORD }}&lt;/span&gt;
          &lt;span class="na"&gt;remote_url&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.REMOTE_URL }}&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;Try to push any change to your repo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Congratulations!&lt;/strong&gt; You can find the results of your build on GitHub Pages. In my case via this &lt;a href="https://rebrand.ly/styleguide-example" rel="noopener noreferrer"&gt;link&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Additional Resources / Info
&lt;/h3&gt;

&lt;p&gt;In my case the build take up to 1 minutes with installation of dependencies, which is quite fast. &lt;/p&gt;

</description>
      <category>actionshackathon</category>
      <category>react</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Typescript &amp; React.js: how-to lists</title>
      <dc:creator>Ivan G.</dc:creator>
      <pubDate>Mon, 07 Sep 2020 21:42:00 +0000</pubDate>
      <link>https://forem.com/igrekov/typescript-react-js-how-to-lists-2lao</link>
      <guid>https://forem.com/igrekov/typescript-react-js-how-to-lists-2lao</guid>
      <description>&lt;p&gt;While I was working on my recently published article about &lt;a href="https://rebrand.ly/react-to-typescript" rel="noopener noreferrer"&gt;how to move large-scale React UI-components codebase to TypeScript&lt;/a&gt; I gathered a plethora of useful information about technical aspects of writing React UI-components and TypeScript. I grouped these resources together in separate lists.&lt;/p&gt;

&lt;p&gt;Articles on choosing between JavaScript/TypeScript for codebase:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://itnext.io/choosing-TypeScript-vs-JavaScript-technology-popularity-ea978afd6b5f" rel="noopener noreferrer"&gt;Choosing Between TypeScript vs JavaScript: Technology, Popularity&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.ably.io/blog/TypeScript-is-making-programming-better" rel="noopener noreferrer"&gt;How TypeScript is making programming better&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/JavaScript-scene/the-TypeScript-tax-132ff4cb175b" rel="noopener noreferrer"&gt;The TypeScript Tax&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Articles on setting TypeScript for codebase:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://2ality.com/2020/04/TypeScript-workflows.html" rel="noopener noreferrer"&gt;How does TypeScript work? The bird’s eye view&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://2ality.com/2020/04/webpack-TypeScript.html" rel="noopener noreferrer"&gt;Creating web apps via TypeScript and webpack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://typeofnan.dev/setup-a-TypeScript-react-redux-project/" rel="noopener noreferrer"&gt;Set Up a Typescript React Redux Project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.bitsrc.io/react-TypeScript-cheetsheet-2b6fa2cecfe2" rel="noopener noreferrer"&gt;React TypeScript: Basics and Best Practices&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.smashingmagazine.com/2020/05/TypeScript-modern-react-projects-webpack-babel/" rel="noopener noreferrer"&gt;Setting TypeScript For Modern React Projects Using Webpack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://indepth.dev/setting-up-efficient-workflows-with-eslint-prettier-and-TypeScript/" rel="noopener noreferrer"&gt;Setting up efficient workflows with ESLint, Prettier and TypeScript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/JavaScript-in-plain-english/the-practical-guide-to-start-react-testing-library-with-TypeScript-d386804a018" rel="noopener noreferrer"&gt;The Practical Guide to Start React Testing Library with TypeScript&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Articles on moving existing react codebase to TypeScript:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.freecodecamp.org/news/how-to-add-typescript-to-a-javascript-project/" rel="noopener noreferrer"&gt;How to Add TypeScript to a JavaScript Project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.twilio.com/blog/move-to-TypeScript" rel="noopener noreferrer"&gt;How to move your project to TypeScript - at your own pace&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dzone.com/articles/how-to-easily-migrate-from-JavaScript-to-typescrip" rel="noopener noreferrer"&gt;How to Easily Migrate From JavaScript to TypeScript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.bitsrc.io/react-js-to-TypeScript-how-to-migrate-gradually-d82026126d29" rel="noopener noreferrer"&gt;Gradually using TypeScript in Your React Project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.executeprogram.com/blog/porting-to-TypeScript-solved-our-api-woes" rel="noopener noreferrer"&gt;Porting to TypeScript Solved Our API Woes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sitepoint.com/how-to-migrate-a-react-app-to-TypeScript/" rel="noopener noreferrer"&gt;How to Migrate a React App to TypeScript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/swlh/convert-your-JavaScript-react-app-to-TypeScript-the-easy-guide-631592dc1876" rel="noopener noreferrer"&gt;Convert Your Javascript React App to TypeScript, the Easy Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://fettblog.eu/TypeScript-react/" rel="noopener noreferrer"&gt;TypeScript and React&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://alligator.io/react/TypeScript-with-react/" rel="noopener noreferrer"&gt;Using TypeScript with React&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dropbox.tech/frontend/the-great-coffeescript-to-TypeScript-migration-of-2017" rel="noopener noreferrer"&gt;The Great CoffeeScript to Typescript Migration of 2017&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://rebrand.ly/react-to-typescript" rel="noopener noreferrer"&gt;How to move large-scale React UI-components codebase to TypeScript&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Articles on writing new react codebase in TypeScript:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.bitsrc.io/build-a-tic-tac-toe-game-with-TypeScript-react-and-mocha-ce6f1e74c996" rel="noopener noreferrer"&gt;Build a Tic Tac Toe App with TypeScript, React and Mocha&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.freecodecamp.org/news/a-practical-guide-to-TypeScript-how-to-build-a-pokedex-app-using-html-css-and-TypeScript/" rel="noopener noreferrer"&gt;A Practical Guide to TypeScript - How to Build a Pokedex App Using HTML, CSS, and TypeScript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://levelup.gitconnected.com/create-a-react-component-library-with-TypeScript-and-storybook-ed28fc7511f2" rel="noopener noreferrer"&gt;Create a React component library with TypeScript and Storybook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/digitalocean/how-to-build-a-customer-list-management-app-with-react-and-TypeScript-39np"&gt;How To Build a Customer List Management App with React and TypeScript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.hpe.com/blog/using-TypeScript-in-grommet-applications" rel="noopener noreferrer"&gt;Using TypeScript in Grommet Applications&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Articles for deeper dive in TypeScript:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://medium.com/swlh/TypeScript-best-practices-useless-interfaces-classes-and-promises-40ef6bdefa1b" rel="noopener noreferrer"&gt;TypeScript Best Practices —Useless Interfaces, Classes, and Promises&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sitepoint.com/react-with-TypeScript-best-practices/" rel="noopener noreferrer"&gt;React with TypeScript: Best Practices&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Building online portfolio and profiles for personal brand</title>
      <dc:creator>Ivan G.</dc:creator>
      <pubDate>Sun, 06 Sep 2020 10:24:28 +0000</pubDate>
      <link>https://forem.com/igrekov/building-online-portfolio-and-profiles-for-personal-brand-3156</link>
      <guid>https://forem.com/igrekov/building-online-portfolio-and-profiles-for-personal-brand-3156</guid>
      <description>&lt;p&gt;I was thinking a lot about what platform to use to write about tech related themes. After Codepen decided to move blogs to dev.to I decided to finally try it:)&lt;/p&gt;

&lt;p&gt;I would like to focus one of my first posts on show examples of online portfolios/profiles. I will start with small list:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://lnkd.in/eUup6B3" rel="noopener noreferrer"&gt;Github readme&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://rebrand.ly/iigrekov-site" rel="noopener noreferrer"&gt;Github pages site&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://lnkd.in/ejb72yc" rel="noopener noreferrer"&gt;Stack overflow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://lnkd.in/enbezww" rel="noopener noreferrer"&gt;Dev.to&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://lnkd.in/eHnAfqQ" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://lnkd.in/e_Djim5" rel="noopener noreferrer"&gt;Codesandboxes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://lnkd.in/e_DtM54" rel="noopener noreferrer"&gt;Codepen&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://rebrand.ly/iigrekov" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It is most common platforms, which I encountered for the last couple of years. If you would like to share any platforms - feel free to add it in comments:)&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>github</category>
      <category>frontend</category>
      <category>portfolio</category>
    </item>
  </channel>
</rss>
