<?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: Samiullah Khan</title>
    <description>The latest articles on Forem by Samiullah Khan (@technbuzz).</description>
    <link>https://forem.com/technbuzz</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%2F413498%2F6e09fe81-0829-4f7e-be02-6c83d82857a2.png</url>
      <title>Forem: Samiullah Khan</title>
      <link>https://forem.com/technbuzz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/technbuzz"/>
    <language>en</language>
    <item>
      <title>Component Immutability and RequiredArray</title>
      <dc:creator>Samiullah Khan</dc:creator>
      <pubDate>Tue, 18 Apr 2023 11:41:29 +0000</pubDate>
      <link>https://forem.com/technbuzz/component-immutability-and-requiredarray-1edh</link>
      <guid>https://forem.com/technbuzz/component-immutability-and-requiredarray-1edh</guid>
      <description>&lt;p&gt;While reading through component design, one of the recommended tip is to never mutate the input properties.&lt;/p&gt;

&lt;p&gt;Let's look at the example below. (I am using Angular but same can apply to other frameworks)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Component&lt;/span&gt;&lt;span class="p"&gt;({...})&lt;/span&gt;
&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nx"&gt;MyComponent&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Input&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="nx"&gt;status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Status&lt;/span&gt;&lt;span class="p"&gt;[];&lt;/span&gt;
    &lt;span class="kd"&gt;get&lt;/span&gt; &lt;span class="nx"&gt;sortedStatus&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;status&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;sort&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here sort is a mutable operation. This not only sort the array but also mutates the array. &lt;/p&gt;

&lt;p&gt;I have prepared the &lt;a href="https://angular-njd2pq.stackblitz.io/"&gt;stackblitz&lt;/a&gt;. Here we have status array of type string. It's passed down to child component. It's displayed both in parent and child component. In the child component I have a button Sort Array that basically sorts the &lt;code&gt;status&lt;/code&gt; that is received via &lt;code&gt;@Input()&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iHTdzvHJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pffw9gthsx1d1rlur2hi.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iHTdzvHJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pffw9gthsx1d1rlur2hi.gif" alt="Sort Array from child component sort array and it is reflected in parent component" width="483" height="324"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sort Array from child component sort array and it is reflected in parent component.&lt;/p&gt;

&lt;p&gt;We can prevent this behavior by using the &lt;strong&gt;ReadonlyArray&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uirR3Azi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mqgga4wnn22bh427i3io.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uirR3Azi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mqgga4wnn22bh427i3io.png" alt="The perks of using ReadonlyArray" width="615" height="192"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This interface strips away all the mutable operations like &lt;em&gt;push, pop, shift, unshift&lt;/em&gt; along with &lt;em&gt;sort&lt;/em&gt;.&lt;/p&gt;

</description>
      <category>component</category>
      <category>angular</category>
      <category>design</category>
    </item>
    <item>
      <title>Getting Started with Angular and Nx</title>
      <dc:creator>Samiullah Khan</dc:creator>
      <pubDate>Wed, 18 Jan 2023 16:27:37 +0000</pubDate>
      <link>https://forem.com/technbuzz/getting-started-with-angular-and-nx-270e</link>
      <guid>https://forem.com/technbuzz/getting-started-with-angular-and-nx-270e</guid>
      <description>&lt;p&gt;This is a series of post which will cover array of topics. The application in question needs a component library (&lt;strong&gt;Angular Components aka Angular Material&lt;/strong&gt;). A CSS Utility Library to take care of adding styles (&lt;strong&gt;Tailwind&lt;/strong&gt;). A way to develop, document and test components (&lt;strong&gt;Storybook&lt;/strong&gt;). Last but not least, move the load off to the Libs (&lt;strong&gt;Nx&lt;/strong&gt;).&lt;/p&gt;

&lt;h2&gt;
  
  
  Create Nx Angular Workspace
&lt;/h2&gt;

&lt;p&gt;Typing the following command in terminal will greet us with&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npx create-nx-workspace@latest&lt;/code&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%2Fhu4bmz5p0smmpkjulo56.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%2Fhu4bmz5p0smmpkjulo56.png" alt="The welcome screen depends on the version of nx. As of version 15.4.5 we see the above prompt" width="800" height="148"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We have chosen integrated monorepo. If all the projects and libs in a workspace share same dependencies, that Integrated Monorepo is way to go.&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%2Ff1j4khcu9u7oa9fhedgh.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%2Ff1j4khcu9u7oa9fhedgh.png" alt="We will cover Angular here" width="800" height="162"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, I have chosen Angular. We can also choose the apps (first option) to create empty repo. We can then use &lt;a href="https://nx.dev/packages/angular" rel="noopener noreferrer"&gt;@nrwl/angular&lt;/a&gt; Plugin to add new Angular project.&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%2F0ef6dt8ymbmyjzredrke.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%2F0ef6dt8ymbmyjzredrke.png" alt="Next bunch of prompts are summarized" width="800" height="198"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In next follow up screen we need to provide name to the Repo and &lt;strong&gt;Application&lt;/strong&gt; while &lt;strong&gt;SCSS&lt;/strong&gt; is chosen as flavor of CSS.&lt;/p&gt;

&lt;p&gt;This will install all the dependencies. After installation, we can serve our app as&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd weather
nx serve weather
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Ft4c58gybdsra5sohksse.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%2Ft4c58gybdsra5sohksse.png" alt="Now we have a welcome screen. This ensures our app is working and ready to add more artifacts" width="800" height="692"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Add Angular Material
&lt;/h2&gt;

&lt;p&gt;Now we have created a workspace along with one angular application. We will utilize the Nx cli to add Angular Material.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ng add @angular/material&lt;/code&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%2Fmbbo2axvzoarwi84n4j7.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%2Fmbbo2axvzoarwi84n4j7.png" alt="I have followed Angular Material Getting Started guide" width="800" height="86"&gt;&lt;/a&gt;&lt;br&gt;
I have followed Angular Material &lt;a href="https://material.angular.io/guide/getting-started" rel="noopener noreferrer"&gt;Getting Started&lt;/a&gt; guide.&lt;/p&gt;

&lt;p&gt;Although this &lt;strong&gt;schematic&lt;/strong&gt; is intended for Angular Cli, but here Nx suggests how to make it work with Nx cli. We will just run the command by saying &lt;strong&gt;yes&lt;/strong&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%2Fv0y11qiappo0godv968w.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%2Fv0y11qiappo0godv968w.png" alt="This automatic conversion of terminal commands makes onboarding really easy" width="800" height="320"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The command will first install the &lt;strong&gt;@angular/material&lt;/strong&gt; package and then run the add schematics. I will choose setup the Theme, Typography and Animation in subsequent prompts.&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%2Ficwpqo1iz27dch7hd8x8.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%2Ficwpqo1iz27dch7hd8x8.png" alt="OH! An error, looks like after all, not a smooth process" width="800" height="339"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The add schematics expects Angular project which can be configured for styles and fonts.&lt;/p&gt;

&lt;p&gt;We can re-run the second command with --project flag&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npx nx g @angular/material:ng-add --project=weather&lt;/code&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%2Fmv4v0e0wq1hoa23472lj.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%2Fmv4v0e0wq1hoa23472lj.png" alt="Terminal after file edits" width="800" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This time around our command succeeded.&lt;/p&gt;

&lt;p&gt;The Schematic made some changes to our project.&lt;/p&gt;

&lt;p&gt;Now we have installed enough tools. We can add some UI Elements to make our app interesting.&lt;/p&gt;
&lt;h2&gt;
  
  
  Adding Sidenav and Toolbar
&lt;/h2&gt;

&lt;p&gt;&lt;br&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%2F2kqe2ocga9e6nw4h0y0n.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%2F2kqe2ocga9e6nw4h0y0n.png" alt="Photo by Carlos Muzaon on Usplash" width="640" height="456"&gt;&lt;/a&gt;&lt;/p&gt;
Photo by &lt;a href="https://unsplash.com/fr/@kmuza?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Carlos Muza&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/hpjSkU2UYSU?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;





&lt;p&gt;In this section I will show you how easy it is to add a Side Nav a Toolbar (that you see in the Admin Dashboard) with yet another schematic.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npx nx g @angular/material:navigation nav --project=weather&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This command will make following change to our code base.&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%2Fwnjkmq2dkirwaliinb4k.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%2Fwnjkmq2dkirwaliinb4k.png" alt="Termial showing fill edits" width="800" height="157"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In order to see the result, we just need to modify the content of &lt;code&gt;app.component.ts&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;nx-angular-weather-nav&amp;gt;&amp;lt;/nx-angular-weather-nav&amp;gt;&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Note: The Selector might be different base on your configuration.
&lt;/h3&gt;

&lt;p&gt;After making above changes our app looks like the following:&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%2Fqo4qei9pjngpglopwdet.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%2Fqo4qei9pjngpglopwdet.png" alt="Display of our app After adding Material Navigation" width="800" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We have now Sidenav with some dummy links and Toolbar. The Sidenav collapses if screen size is matches mobile device. That can be revealed by hamburger menu on Toolbar.&lt;/p&gt;
&lt;h2&gt;
  
  
  Adding Dashboard
&lt;/h2&gt;

&lt;p&gt;In the last section of the app, we will fill the Sidenav Content with some cards.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npx nx g @angular/material:dashboard home --project=weather&lt;/code&gt;&lt;br&gt;
Next, we need to modify the app.component.html file.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;mat-sidenav-content&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;mat-toolbar&lt;/span&gt; &lt;span class="na"&gt;color=&lt;/span&gt;&lt;span class="s"&gt;"primary"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt;
      &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"button"&lt;/span&gt;
      &lt;span class="na"&gt;aria-label=&lt;/span&gt;&lt;span class="s"&gt;"Toggle sidenav"&lt;/span&gt;
      &lt;span class="na"&gt;mat-icon-button&lt;/span&gt;
      &lt;span class="na"&gt;(click)=&lt;/span&gt;&lt;span class="s"&gt;"drawer.toggle()"&lt;/span&gt;
      &lt;span class="na"&gt;*ngIf=&lt;/span&gt;&lt;span class="s"&gt;"isHandset$ | async"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;mat-icon&lt;/span&gt; &lt;span class="na"&gt;aria-label=&lt;/span&gt;&lt;span class="s"&gt;"Side nav toggle icon"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;menu&lt;span class="nt"&gt;&amp;lt;/mat-icon&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;span&amp;gt;&lt;/span&gt;weather&lt;span class="nt"&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/mat-toolbar&amp;gt;&lt;/span&gt;
  &lt;span class="c"&gt;&amp;lt;!-- Add Content Here --&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;nx-angular-weather-home&amp;gt;&amp;lt;/nx-angular-weather-home&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/mat-sidenav-content&amp;gt;&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Right after the &lt;code&gt;&amp;lt;!- Add Content Here --&amp;gt;&lt;/code&gt; comment, we have added the newly created Home Component.&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%2Fru43a075aiqm4ckpxkp5.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%2Fru43a075aiqm4ckpxkp5.png" alt="Display of our App with Navigation and Dashboard" width="768" height="602"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;We will end this post here and continue other pieces in future. To wrap up, we have managed to create Nx workspace, added angular app. We used schematics to add Angular Material, and some of its components.&lt;/p&gt;

&lt;p&gt;Edit&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>education</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
