<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Ajit's blog]]></title><description><![CDATA[Ajit's blog]]></description><link>https://ajits.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Wed, 04 Nov 2026 16:37:03 GMT</lastBuildDate><atom:link href="https://ajits.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[AudioSum: Create Audio Summaries]]></title><description><![CDATA[With all the new AI hype, I wanted to try Open AI APIs and learn how these new large language models work. To learn that, I wanted to create an audio…]]></description><link>https://ajits.hashnode.dev/audiosum-create-audio-summaries</link><guid isPermaLink="true">https://ajits.hashnode.dev/audiosum-create-audio-summaries</guid><category><![CDATA[Appwrite]]></category><category><![CDATA[Appwrite Hackathon]]></category><dc:creator><![CDATA[Ajit Singh]]></dc:creator><pubDate>Mon, 12 Jun 2023 12:26:33 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1686572485468/8634bea2-a19e-48ea-873c-6b162724005d.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3 id="heading-audiosum-create-audio-summaries-or-appwritehttpscloudappwriteio-hashnodehttpshashnodecomsourceappwrite-hackathon-hackathon">AudioSum: Create Audio Summaries | <a target="_blank" href="https://cloud.appwrite.io/">Appwrite</a> <a target="_blank" href="https://hashnode.com/?source=appwrite-hackathon">Hashnode</a> Hackathon</h3>
<h2 id="heading-team-details">Team Details</h2>
<ul>
<li>Ajit Singh - <a class="user-mention" href="https://hashnode.com/@ajit442">Ajit Singh</a></li>
</ul>
<h2 id="heading-project-description">Project Description</h2>
<h3 id="heading-introduction">Introduction</h3>
<p>With all the new AI hype, I wanted to try Open AI APIs and learn how these new large language models work. To learn that, I wanted to create an audio summary app where I can learn about the Whisper APIs and the OpenAI API.</p>
<p>This led to AudioSum, which generates summaries of the audio you upload. It is a simple app where anyone can sign up, and then upload their audios, which automatically generates the transcription and summaries of the audio in text form.</p>
<p>There can be many use cases for it, including:</p>
<ol>
<li><p>Journaling: You can record your journals and upload them to this app. This will give you the transcript of what you talked about on the app.</p>
</li>
<li><p>Transcripts: You can upload your audio. This will generate a transcript that you can upload to various places.</p>
</li>
<li><p>Thinking: You can record yourself while thinking out loud, and after that, the summary should be able to help you gather your thoughts.</p>
</li>
</ol>
<h2 id="heading-tech-stack">Tech Stack</h2>
<ul>
<li><p>Angular: Used to create the front end.</p>
</li>
<li><p>Appwrite Cloud:</p>
<ul>
<li><p>Authentication: Used for users to sign up, sign in, forgot password, confirm email, etc.</p>
</li>
<li><p>Database: Used to store your transcripts and summaries.</p>
</li>
<li><p>Cloud Functions - Python: Used to call the OpenAI API to make transcripts and store them in the database.</p>
</li>
<li><p>Realtime: Used to create summaries automatically once file upload is finished.</p>
</li>
<li><p>Storage: Used to store your audio recordings.</p>
</li>
</ul>
</li>
</ul>
<h2 id="heading-challenges-faced">Challenges Faced</h2>
<h3 id="heading-multiple-events">Multiple Events</h3>
<p>Appwrite sends multiple "create" events on the upload of a file greater than 5MB, as it sends multiple requests to upload these files. On each request, a create event is fired. I wanted to run the transcription job when a file is created. The create file event seemed like the perfect thing that I needed, but because the function was fired before the whole thing was updated, it failed.</p>
<p>To get around this, I used the real-time events to listen to the create event and only run the function after the chunks uploaded equal the total chunks. The following code was used for that:</p>
<pre><code class="lang-typescript">uploadEvent = APPWRITE.client.subscribe&lt;UploadEvent&gt;(<span class="hljs-string">'files'</span>, <span class="hljs-function">(<span class="hljs-params">response</span>) =&gt;</span> {
    <span class="hljs-keyword">if</span> (
      response.events.includes(
        <span class="hljs-string">`buckets.<span class="hljs-subst">${environment.APPWRITE_BUCKET_ID}</span>.files.*.create`</span>
      ) &amp;&amp;
      response.payload.chunksTotal === response.payload.chunksUploaded
    ) {
      <span class="hljs-built_in">this</span>.transcribeAudio(response);
    }
  });
</code></pre>
<h3 id="heading-examples-of-appwrite-use">Examples of Appwrite Use</h3>
<p>I found it a bit difficult to use Appwrite since there were no detailed example guides for Appwrite use on <a target="_blank" href="http://appwrite.io">Appwrite.io</a>. It was a bit difficult to understand once I got into Appwrite limitations. For example, there is no way to pull settings from the cloud functions. If you set events on the cloud, you have to write them manually on your appwrite.json file. There is no way to create a chain of functions via events.</p>
<p>However, Appwrite has one of the best support teams that I encountered. When you put any question in the Appwrite support channel on their Discord, it is usually answered in 15 to 20 minutes.</p>
<h2 id="heading-public-code-repo">Public Code Repo</h2>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://github.com/ajitsinghkaler/audio-summary">https://github.com/ajitsinghkaler/audio-summary</a></div>
<p> </p>
<h2 id="heading-limitations">Limitations</h2>
<p>Right now I'm using the free tier which is why I have limited the size of the audio to be uploaded to 7MB.</p>
<h2 id="heading-demo-link">Demo Link</h2>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://youtu.be/HNtUbe9kCrQ">https://youtu.be/HNtUbe9kCrQ</a></div>
<p> </p>
<p>Project link: <a target="_blank" href="https://audiosum.aicygnus.com/">https://audiosum.aicygnus.com/</a></p>
]]></content:encoded></item><item><title><![CDATA[Move you angular cli app to Nx]]></title><description><![CDATA[Help me improve these updates by giving suggestions. Github Repo - Deployed on Firebase -]]></description><link>https://ajits.hashnode.dev/move-you-angular-cli-app-to-nx</link><guid isPermaLink="true">https://ajits.hashnode.dev/move-you-angular-cli-app-to-nx</guid><category><![CDATA[Angular]]></category><category><![CDATA[TypeScript]]></category><dc:creator><![CDATA[Ajit Singh]]></dc:creator><pubDate>Sat, 25 Sep 2021 01:47:58 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1632534399865/3fSttDJdk.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Help me improve these updates by giving suggestions.
Github Repo - https://github.com/ajitsinghkaler/devto-clone</p>
<p>Deployed on Firebase - https://dev-toclone.firebaseapp.com/</p>
<p>Last week I was sick so there was no updates last week.</p>
<p>This week I mostly focused on my moving my clone to Nx monorepo. While converting it here are some of my findings on how to convert an Angular cli app to Nx monorepo</p>
<p>To convert an angular cli app to nx follow the steps below:-</p>
<ul>
<li><p>Run the automatic nx generator in you app whoch will convert the angular cli project to an nx workspace</p>
<pre><code class="lang-bash">ng add @nrwl/workspace --preserveAngularCLILayout
</code></pre>
</li>
<li><p>After that remember project should never be imported into the library. Environments, common models, common components, common services move to an entirely different lib.</p>
</li>
</ul>
<p>Example of moving </p>
<ol>
<li><p>Environments to a library can be found <a target="_blank" href="https://github.com/ajitsinghkaler/devto-clone/tree/main/libs/environments">here</a></p>
</li>
<li><p>Components to a library can be found <a target="_blank" href="https://github.com/ajitsinghkaler/devto-clone/tree/main/libs/global-components">here</a></p>
</li>
<li><p>Global Services to a library <a target="_blank" href="https://github.com/ajitsinghkaler/devto-clone/tree/main/libs/global-services">here</a></p>
</li>
<li><p>Global Styles here <a target="_blank" href="https://github.com/ajitsinghkaler/devto-clone/tree/main/libs/styles">here</a></p>
</li>
<li><p>To move them to a library generate anew library by <code>nx g lib &lt;lib-name&gt;</code> after that move everything to lib and export everything via the index.ts file.</p>
</li>
<li><p>To import the dependencies the paths are added to the tsconfig.base.json from there you can check what shorthand property to use for what imports.</p>
</li>
<li><p>When you are done with all this you can now divide your modules into smaller libs like a module into its ui, data-access etc.</p>
</li>
<li><p>Dividing the libs is on you its just like the angular module system you can make any module as big as possible and and small as possible.</p>
</li>
<li><p>Just remember don't create circular dependencies.</p>
</li>
</ol>
<p>I also moved most of my components to single file components as it was easier to read and most of my components don't need to be multiple file.</p>
<p>Form next time I'll start adding unit tests and integration tests, e2e tests after that this project will be done.</p>
<p>Commits</p>
<ol>
<li><p><a target="_blank" href="https://github.com/ajitsinghkaler/devto-clone/commit/cbf7a957f1db53c64bddf8828a7f26b3cdf7854b">feat: migrate to nx</a></p>
</li>
<li><p><a target="_blank" href="https://github.com/ajitsinghkaler/devto-clone/commit/a4265775140d259f742e76af8a108a310cf467d1">fix: add global services and global components lib</a> </p>
</li>
<li><p><a target="_blank" href="https://github.com/ajitsinghkaler/devto-clone/commit/bfcf05110000851428dd2d80416353bec1b53302">feat: move all pages to nx libs</a></p>
</li>
<li><p><a target="_blank" href="https://github.com/ajitsinghkaler/devto-clone/commit/8a2169d16487cf01c9d13d7ddd1a03f825db5b0e">feat: move global styles to a library</a></p>
</li>
<li><p><a target="_blank" href="https://github.com/ajitsinghkaler/devto-clone/commit/ef75badcffbe0c1b128f245345aac4438ca83991">feat: convert into single file components</a></p>
</li>
</ol>
<p>Let me know if you ant to see any new experiments in the repo.</p>
]]></content:encoded></item><item><title><![CDATA[Updates on dev.to clone in Angular - August 27]]></title><description><![CDATA[Github Repo - Deployed on Firebase - Last week we finished details page article section and basic comments section.]]></description><link>https://ajits.hashnode.dev/updates-on-devto-clone-in-angular-august-27</link><guid isPermaLink="true">https://ajits.hashnode.dev/updates-on-devto-clone-in-angular-august-27</guid><category><![CDATA[Angular]]></category><category><![CDATA[TypeScript]]></category><category><![CDATA[Web Development]]></category><dc:creator><![CDATA[Ajit Singh]]></dc:creator><pubDate>Fri, 27 Aug 2021 03:22:55 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1630034384321/vXSHI0cb-.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h5 id="help-me-improve-these-updates-by-giving-suggestions">Help me improve these updates by giving suggestions.</h5>
<p>Github Repo - https://github.com/ajitsinghkaler/devto-clone</p>
<p>Deployed on Firebase - https://dev-toclone.firebaseapp.com/</p>
<p>Last week we finished details page article section and basic comments section.
<img src="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dn6lr72hv93pbss99ieq.png" alt="Articles details page" /></p>
<p>This week I added the complete comments section. It was one the most complex tasks while building the dev.to ui. The comments structure is a bit complex to render. Comments contain a key called children which can again contain comments so it was like a tree like structure.</p>
<pre><code>├── <span class="hljs-keyword">comment</span>
│   ├── <span class="hljs-keyword">comment</span> ─── <span class="hljs-keyword">comment</span>
│   │   └── <span class="hljs-keyword">comment</span>
│   ├── <span class="hljs-keyword">comment</span>
│   ├── <span class="hljs-keyword">comment</span> ─── <span class="hljs-keyword">comment</span> ─── <span class="hljs-keyword">comment</span>
│   │   └── <span class="hljs-keyword">comment</span> ─── <span class="hljs-keyword">comment</span> ─── <span class="hljs-keyword">comment</span>
│   └── <span class="hljs-keyword">comment</span>
├── comments
│   ├── <span class="hljs-keyword">comment</span> ─── <span class="hljs-keyword">comment</span>
│   │   └── <span class="hljs-keyword">comment</span> 
│   └── <span class="hljs-keyword">comment</span> 
├──── <span class="hljs-keyword">comment</span>
│   ├── <span class="hljs-keyword">comment</span>
│   └── <span class="hljs-keyword">comment</span>
└──── comments
</code></pre><p>How to render an infinite tree. Then I called the comment component from the comment component. To create a recursion like scenario which will render the entire component tree. I've written details about it in this <a target="_blank" href="https://ajitblogs.com/problems-faced-while-creating-comments-section-with-a-tree-like-data-structure/">article</a>.</p>
<p><a target="_blank" href="https://twitter.com/patel_vimal">Vimal Patel</a> has also added 
commit lint to the repo so that reading the commit messages is easy. I'm thankful for that.</p>
<h2 id="first-live-stream">First Live stream</h2>
<p>I also did my first live stream with <a target="_blank" href="https://twitter.com/SantoshYadavDev">Santosh</a> on moving over our app from angular-cli to NxDevTools we did the basics in the stream and I went over a lot of questions that I have to why Nx if you want to see how to move your project over Nx please follow us on <a target="_blank" href="https://www.youtube.com/channel/UCwLr8EHk7A-A89tRqoHSdZw">This is tech Talks</a>
 we will be migrating the whole dev.to clone to Nx over the live stream. This was my first talk I was a bit nervous but Santosh made me at ease. Thanks Santosh.</p>
<p>So this is where we are right now.
<img src="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/10ylwi1auxrz2qdaiwzd.png" alt="Alt Text" /></p>
<p>Next week I'll start working on the podcast page.</p>
<h2 id="issue">Issue</h2>
<ol>
<li><p><a target="_blank" href="https://github.com/ajitsinghkaler/devto-clone/issues/30">Create a 404 page</a></p>
</li>
<li><p><a target="_blank" href="https://github.com/ajitsinghkaler/devto-clone/issues/32">Comments section css is a bit off</a></p>
</li>
<li><p><a target="_blank" href="https://github.com/ajitsinghkaler/devto-clone/issues/33">Add number of child comments in comments section</a></p>
</li>
</ol>
<h2 id="commits">Commits</h2>
<ol>
<li><p><a target="_blank" href="https://github.com/ajitsinghkaler/devto-clone/commit/0624aa97da384de25cb3f20902e511b2899e60fa">Commit lint</a></p>
</li>
<li><p><a target="_blank" href="https://github.com/ajitsinghkaler/devto-clone/commit/9d05fd85b369aea6c92f68ad9407f78152aa0f08">Basic comments</a></p>
</li>
<li><p><a target="_blank" href="https://github.com/ajitsinghkaler/devto-clone/commit/d2a317f15409e5ef13b7fb995cdadb336420ad82">Comments section completed</a></p>
</li>
</ol>
]]></content:encoded></item><item><title><![CDATA[Updates on Dev.to clone in Angular - August 13]]></title><description><![CDATA[Github Repo - Deployed on Firebase - Last week we added basic details page.]]></description><link>https://ajits.hashnode.dev/updates-on-devto-clone-in-angular-august-13</link><guid isPermaLink="true">https://ajits.hashnode.dev/updates-on-devto-clone-in-angular-august-13</guid><category><![CDATA[Angular]]></category><category><![CDATA[TypeScript]]></category><category><![CDATA[Web Development]]></category><dc:creator><![CDATA[Ajit Singh]]></dc:creator><pubDate>Fri, 20 Aug 2021 04:28:57 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1629433664350/UYHUhlxFj.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3 id="help-me-improve-these-updates-by-giving-suggestions">Help me improve these updates by giving suggestions.</h3>
<p>Github Repo - https://github.com/ajitsinghkaler/devto-clone</p>
<p>Deployed on Firebase - https://dev-toclone.firebaseapp.com/</p>
<p>Last week we added basic details page.</p>
<p><img src="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h06mqz8sdn8v8r5ds8zj.png" alt="August 6 updates" /></p>
<p>This week I added user details and a reaction section in article details. There is no API for adding reactions to actual dev.to site so the reactions component is read-only for now.</p>
<p>This week I have good news <a target="_blank" href="https://twitter.com/che_off">Chellappan</a> did the listings page for us. I am really happy this is a first opensource contribution in my project. Thanks Chellapan
<img src="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/44ikd3wjc0tikkiyo8b4.png" alt="Alt Text" /></p>
<p>He implemented the masonry layout in this and next I'll write how he implemented the masonry layout. </p>
<p>Now back to my work this time added a global component store for user details in the article-details component. I also had a lot of problems with the layout of the page the layout was not working correctly whatever I set in the grid-template-columns but after putting a lot of time in it I realized its just that article details content is not working correctly either the image was bigger then the body or the code-snippets were. I was really tired of this, to solved this problem my mind told so what is not styled the details content. This made me realize that the problem should be there. Then I checked and then there it was so for now I made images with width 100% and its working  fine for now. This is where we are now.
<img src="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c0vbcuzqvfaogz6ahbxq.png" alt="Alt Text" /><img src="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4fnbtvzebu6vfa2feivw.png" alt="Alt Text" />
Next week I'll style article details and on the comments section.</p>
<h2 id="issue">Issue</h2>
<ul>
<li><p>The article section is really getting on my nerves. Making so many stores for articles is annoying.</p>
</li>
<li><p>Moving it to Nx. I've heard a lot about Nx this will be my first Nx project.</p>
</li>
</ul>
<h2 id="commits-done">Commits done</h2>
<p><a target="_blank" href="https://github.com/ajitsinghkaler/devto-clone/tree/article-detail">Branch</a></p>
<ol>
<li><p><a target="_blank" href="https://github.com/ajitsinghkaler/devto-clone/commit/ccdc0ba77432c7d711c184f3ebb79a25309ce6b9">WIP: added listing pages and masonary layout</a></p>
</li>
<li><p><a target="_blank" href="https://github.com/ajitsinghkaler/devto-clone/commit/72660af32bf68b69e7d1eb3aca5d0568f97cd0b4">wip: listings cleanup</a></p>
</li>
<li><p><a target="_blank" href="https://github.com/ajitsinghkaler/devto-clone/commit/3a16db0b2c0b63a7b08b7117cb138ab03aa75159">cleanup: review comment fix</a></p>
</li>
<li><p><a target="_blank" href="https://github.com/ajitsinghkaler/devto-clone/commit/a2e7357fc2a3e5df1db527f2ad552e8da51d3699">cleanup: remove unused code</a></p>
</li>
<li><p><a target="_blank" href="https://github.com/ajitsinghkaler/devto-clone/commit/d1095f3b92ffc9107c5fcc69aba6b6fba1603377]">added sidenav nav functionality</a></p>
</li>
<li><p><a target="_blank" href="https://github.com/ajitsinghkaler/devto-clone/commit/983a4c1cd4e2a54dc272b54f392f4032639b5a5e">article details page with sidenav</a></p>
</li>
<li><p><a target="_blank" href="https://github.com/ajitsinghkaler/devto-clone/commit/315c89bb2e13a6df7240574d7d42249cf633904a">resolve splice bugs</a></p>
</li>
</ol>
<p>As you can see a lot of content was added. Now we will soon dive into improving it more using Nx and Tailwind once we finish the basic application.</p>
]]></content:encoded></item><item><title><![CDATA[Updates on Dev.to clone in Angular - August 20]]></title><description><![CDATA[This week we added comments videos section and made the article detail section better. You can also contribute by contacting me on twitter or github]]></description><link>https://ajits.hashnode.dev/updates-on-devto-clone-in-angular-august-20</link><guid isPermaLink="true">https://ajits.hashnode.dev/updates-on-devto-clone-in-angular-august-20</guid><category><![CDATA[Angular]]></category><category><![CDATA[TypeScript]]></category><category><![CDATA[Web Development]]></category><dc:creator><![CDATA[Ajit Singh]]></dc:creator><pubDate>Fri, 20 Aug 2021 04:26:24 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1629433321369/d_l_JLubU.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3 id="help-me-improve-these-updates-by-giving-suggestions">Help me improve these updates by giving suggestions.</h3>
<p>Github Repo - https://github.com/ajitsinghkaler/devto-clone</p>
<p>Deployed on Firebase - https://dev-toclone.firebaseapp.com/</p>
<p>Last week we added details page but did not style the middle articles portion.
<img src="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1u43cjhsk3rmgaffpfx7.png" alt="Cover" /></p>
<p>This week I added the article section CSS and added basic comments the comments section. Is on a different branch so will not deployed right now.</p>
<p>We have new contributors too <a target="_blank" href="https://twitter.com/NivethaMani12">Nivetha Mani</a> who is building the videos detail page did a great job she has already completed it added infinite scroll and made everything responsive too she has already completed her work but there are some small changes after that her work would be merged. To have a look you can have a look at her <a target="_blank" href="https://github.com/ajitsinghkaler/devto-clone/pull/18">pull request</a> and let me give you a sneak peek.</p>
<p><img src="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/trmqaz2isoy6tryf5qpw.png" alt="Videos Section" /></p>
<p>This week I had a lot of problems with the CSS because the article body was injected and I still could not do the code highlighting properly. It was really really tiring.</p>
<p>I also resolved other small bugs added GitHub action for deployment on main branch. Lets talk about the small bugs earlier the reactions section was static I added the reactions store so that they are dynamic but there is no reaction api provided by the dev.to/api it so lets see if this is going to be a problem as its structure can change anytime because of no support.</p>
<p>I also ran into the grid overflow problem mostly grid automatically takes the free space using fr units but some elements in it does not play well. I came to know about this https://css-tricks.com/preventing-a-grid-blowout/. It was a tricky problem because I put an hour into fixing my inner code blocks but the problem was with the grid.</p>
<p>Adding the GitHub action was fun I have with CI/CD but only on Gitlab I didn't think it would be this different adding actions for other repos seems a weird concept to me but maybe it grows on me. Lets have a look at the GitHub action.</p>
<pre><code class="lang-bash"><span class="hljs-comment"># This is a basic workflow to help you get started with Actions</span>

name: CI

<span class="hljs-comment"># Controls when the workflow will run</span>
on:
  <span class="hljs-comment"># Triggers the workflow on push or pull request events but only for the main branch</span>
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

  <span class="hljs-comment"># Allows you to run this workflow manually from the Actions tab</span>
  workflow_dispatch: 

<span class="hljs-comment"># A workflow run is made up of one or more jobs that can run sequentially or in parallel</span>
<span class="hljs-built_in">jobs</span>:
  <span class="hljs-comment"># This workflow contains a single job called "build"</span>
  firebase-deploy:
    <span class="hljs-comment"># The type of runner that the job will run on</span>
    runs-on: ubuntu-latest

    <span class="hljs-comment"># Steps represent a sequence of tasks that will be executed as part of the job</span>
    steps:
      <span class="hljs-comment"># Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it</span>
      - uses: actions/checkout@v2
      <span class="hljs-comment"># Setup node version which this action will run</span>
      - uses: actions/setup-node@master
        with:
          node-version: <span class="hljs-string">'14.x'</span>

      <span class="hljs-comment"># Install node_modules as we don't push them</span>
      - run: npm install
      <span class="hljs-comment"># Build our angular app</span>
      - run: npm run build
      <span class="hljs-comment"># Firebase action to deploy. Still don't fully understand this concept</span>
      - uses: w9jds/firebase-action@master
      <span class="hljs-comment"># With what arguements will this action run</span>
        with:
          args: deploy --only hosting --project dev-toclone
      <span class="hljs-comment"># Environment variables with which you want to run your job. To keep them a secret you can set in your repository secrets </span>
        env:
          FIREBASE_TOKEN: <span class="hljs-variable">${{ secrets.FIREBASE_TOKEN }</span>}
</code></pre>
<p>Let me give you the sneak peek of the newly created comments section too this is going to be hard as the way comments are but we are going to use recursion here to render out all the comments. That is going to interesting you will see a new pattern of rendering these types of structures. 
<img src="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bqkojuclz1ytoww4fulq.png" alt="Comments section" /></p>
<h2 id="current-status-three-branches">Current Status three branches :-</h2>
<p><a target="_blank" href="https://github.com/ajitsinghkaler/devto-clone">Main</a> - This branch contains the Homepage, Article-detail with comments, Listing page</p>
<p><a target="_blank" href="https://github.com/ajitsinghkaler/devto-clone/tree/comments">Comments</a> - This branch contains the comments section of the article detail page </p>
<p><a target="_blank" href="https://github.com/ajitsinghkaler/devto-clone/pull/18">Nivetha Mani</a> -  This branch contains the videos section</p>
<h2 id="discussions">Discussions</h2>
<p>I've started a new discussion weather we should move the project to Nx on main branch or keep it on angular-cli. Would love to hear everyone's opinion.</p>
<h2 id="issue">Issue</h2>
<ol>
<li><p><a target="_blank" href="https://github.com/ajitsinghkaler/devto-clone/issues/21">In article details page syntax highlighting does not work</a></p>
</li>
<li><p><a target="_blank" href="https://github.com/ajitsinghkaler/devto-clone/issues/23">Do we need store for all api</a></p>
</li>
</ol>
<h2 id="commits">Commits</h2>
<p>This time I won't add all the commits there are many I "ll highlight the most useful </p>
<ol>
<li><p><a target="_blank" href="https://github.com/ajitsinghkaler/devto-clone/commit/49d782eca08f3086bbc184582aaca781ba28ba98"> add github actions for deployent on main branch </a></p>
</li>
<li><p><a target="_blank" href="https://github.com/ajitsinghkaler/devto-clone/commit/caad69991cccf550bae97eecbd4099645886056d"> fix article details </a></p>
</li>
<li><p><a target="_blank" href="https://github.com/ajitsinghkaler/devto-clone/commit/24557b03a3787e4ebc4e609b923665f9ac8c14ed">Reactions data added</a></p>
</li>
<li><p><a target="_blank" href="https://github.com/ajitsinghkaler/devto-clone/commit/887241050a1c7725d413953e9a7438e2fe491906">Fix grid layout and add article detail styles</a></p>
</li>
</ol>
<p>Next time I'll finish the comments section. if anyone wants to contribute they can connect on twitter with me my handle is <a target="_blank" href="https://twitter.com/ajitsinghkaler">@ajitsinghkaler</a> my dm's are open or on github.</p>
]]></content:encoded></item><item><title><![CDATA[Updates on dev.to clone in Angular - July 30]]></title><description><![CDATA[Github Repo - Deployed on Firebase - Last week I added article section dev.to clone.]]></description><link>https://ajits.hashnode.dev/updates-on-devto-clone-in-angular-july-30</link><guid isPermaLink="true">https://ajits.hashnode.dev/updates-on-devto-clone-in-angular-july-30</guid><category><![CDATA[Angular]]></category><category><![CDATA[TypeScript]]></category><category><![CDATA[JavaScript]]></category><dc:creator><![CDATA[Ajit Singh]]></dc:creator><pubDate>Fri, 30 Jul 2021 04:20:38 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1627618741877/g05puotIj.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Github Repo - https://github.com/ajitsinghkaler/devto-clone</p>
<p>Deployed on Firebase - https://dev-toclone.firebaseapp.com/</p>
<p>Last week I added article section dev.to clone.
<img src="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/syxzk0w3xwwqjylu0wsy.png" alt="Dev.to clone July 30" /></p>
<p>This week we added the tags store and joined the tags to the api. We mostly follow a pattern to add an api service which makes all the api calls and a store service which sores al the data related to that service. </p>
<p>We also added listings using the same pattern. This is the first time we used <em>rxLet. It really makes working with all Observable in the templates easier do <a target="_blank" href="https://github.com/rx-angular/rx-angular/blob/master/libs/template/docs/api/let-directive.md">check</a> it out. It allows you four states for an observable suspense, error. complete so that you can handle each one of them separately and gets rid of the </em>ngIf with async pipe. Like if you want to display something else while loading and error is a big disadvantage of the async pipe when used with an api.</p>
<p>There was one interesting thing we did this time we created a reusable component which when passed a tag will show all the top articles from these tags in the last 3 days if you want to check <a target="_blank" href="https://github.com/ajitsinghkaler/devto-clone/commit/4a031584b9008c2733c64d1e61fb00883d5db94f">this</a> out. </p>
<p>This is how it looks now
<img src="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iag6222gych0y86ts846.png" alt="Alt Text" />
Next week we will start working on article details page.</p>
<h2 id="issues">Issues</h2>
<p><a target="_blank" href="https://github.com/ajitsinghkaler/devto-clone/issues/6">Issue</a>
The article tag store and article store are quite common can we make them one. Same for listings HTML and article-tag HTML. I'm not sure what to do about this.</p>
<h2 id="commits-done-in-this-update">Commits done in this update</h2>
<ol>
<li><a target="_blank" href="https://github.com/ajitsinghkaler/devto-clone/commit/4a031584b9008c2733c64d1e61fb00883d5db94f">added right side tags articles</a></li>
<li><a target="_blank" href="https://github.com/ajitsinghkaler/devto-clone/commit/6889840004204b4ae0997dc52abc6cc95824b16f">add listings to homepage </a></li>
<li><a target="_blank" href="https://github.com/ajitsinghkaler/devto-clone/commit/359198b4cd2154cfe46aeefd8f7cf6f2d4c7fdba">add tags store</a></li>
</ol>
<h2 id="contributions">Contributions</h2>
<p><a target="_blank" href="https://twitter.com/che_off">Chellappan</a> has also offered some help. He will raise a detailed feature request on what he will work on Waiting for that. </p>
<p>If you want to contribute too. I've created a lot of issues. Anyone can work on issues but for feature requests you have to raise a detailed feature request before working on it.</p>
<p><a target="_blank" href="https://twitter.com/VakilSunny">Sunny</a> also raised his first pr on the project. Thank you sunny.</p>
]]></content:encoded></item><item><title><![CDATA[Angular Dev's first React project - Netflix clone]]></title><description><![CDATA[I am an angular collaborator and an avid user of Angular this is my first react project a netflix clone using react, styled components, jest tests. It uses…]]></description><link>https://ajits.hashnode.dev/angular-devs-first-react-project-netflix-clone</link><guid isPermaLink="true">https://ajits.hashnode.dev/angular-devs-first-react-project-netflix-clone</guid><category><![CDATA[Angular]]></category><category><![CDATA[React]]></category><category><![CDATA[Web Development]]></category><dc:creator><![CDATA[Ajit Singh]]></dc:creator><pubDate>Mon, 26 Jul 2021 10:00:46 GMT</pubDate><content:encoded><![CDATA[<p>I am an angular collaborator and an avid user of Angular this is my first react project a netflix clone using react, styled components, jest tests. It uses firebase firestore as the DB if you want to run it you have to set it up using the seed data already given. To setup follow the instruction in readme and firebase.prod.js. You can also fork my repo or set it upto learn more.
Few of my positive experiences</p>
<ol>
<li>Creating a component in React.js is a dream components cannot be created easier than this.</li>
<li>Hooks for state management — Hooks are a really easy paradigm for state management</li>
</ol>
<p>Neutral experiences</p>
<pre><code><span class="hljs-number">1.</span> Styled components — Suffers <span class="hljs-keyword">from</span> scalability problems writing styles again <span class="hljs-keyword">and</span> again seemed weird but the scoping was great.
</code></pre><p>Negative experiences</p>
<pre><code>1. Context was weird Calling <span class="hljs-keyword">use</span> <span class="hljs-keyword">context</span> again <span class="hljs-keyword">and</span> again seemed odd somehow. Maybe I’m <span class="hljs-keyword">not</span> accustomed <span class="hljs-keyword">to</span> it.
</code></pre><ol>
<li>How to find right tools for the job you are trying to do. React has so many options which is great but it makes choosing the right tool that much harder.
How to scale react could not find good resources on it.</li>
</ol>
<p>Angular apparent short comings after using React</p>
<pre><code><span class="hljs-number">1.</span> State Management- It has <span class="hljs-keyword">nothing</span> compared <span class="hljs-keyword">to</span> hooks
<span class="hljs-number">2.</span> Component creation <span class="hljs-keyword">is</span> so hard <span class="hljs-keyword">in</span> Angular
<span class="hljs-number">3.</span> Why <span class="hljs-keyword">do</span> we need modules. Why?
<span class="hljs-number">4.</span> Angular team giving every package has taken its toll <span class="hljs-keyword">on</span> angular innovation. <span class="hljs-keyword">Not</span> much <span class="hljs-keyword">is</span> tried <span class="hljs-keyword">by</span> the community <span class="hljs-keyword">in</span> angular.
</code></pre><p>Angular strong suit</p>
<pre><code><span class="hljs-number">1.</span> Angular basics will <span class="hljs-keyword">always</span> be same because <span class="hljs-keyword">of</span> the same lib use so easy <span class="hljs-keyword">to</span> <span class="hljs-keyword">work</span> <span class="hljs-keyword">on</span> multiple projects
<span class="hljs-number">2.</span> Angular directives there <span class="hljs-keyword">is</span> <span class="hljs-keyword">nothing</span> <span class="hljs-keyword">like</span> them
<span class="hljs-number">3.</span> Angular schematics setting up libs <span class="hljs-keyword">for</span> you <span class="hljs-keyword">is</span> great
<span class="hljs-number">4.</span> Angular Cli <span class="hljs-keyword">is</span> the best
</code></pre><p>CSS Management</p>
<p>I don’t know how we got to this place in frontend but there is no great way in Angular or react to manage your CSS is important in frontend but not much attention or tooling is there for managing it</p>
<p>Let me know in the comments if I’m wrong about something or I need to study more I’m trying to learn other frameworks so that I know more paradigms in frontend development.</p>
]]></content:encoded></item></channel></rss>