<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Alejandro Ñáñez Ortiz</title>
    <description>The latest articles on DEV Community by Alejandro Ñáñez Ortiz (@alejandronanez).</description>
    <link>https://dev.to/alejandronanez</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%2F13623%2F3319c62c-da31-4184-b016-8449026d2ca1.jpg</url>
      <title>DEV Community: Alejandro Ñáñez Ortiz</title>
      <link>https://dev.to/alejandronanez</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/alejandronanez"/>
    <language>en</language>
    <item>
      <title>Building The Collab Lab's website using 11ty and GraphCMS</title>
      <dc:creator>Alejandro Ñáñez Ortiz</dc:creator>
      <pubDate>Mon, 21 Dec 2020 21:10:42 +0000</pubDate>
      <link>https://dev.to/the-collab-lab/building-the-collab-lab-s-website-using-11ty-and-graphcms-1k5n</link>
      <guid>https://dev.to/the-collab-lab/building-the-collab-lab-s-website-using-11ty-and-graphcms-1k5n</guid>
      <description>&lt;h2&gt;
  
  
  What is TCL
&lt;/h2&gt;

&lt;p&gt;The Collab Lab is a U.S. nonprofit that provides remote, collaborative project practice for early-career developers. We focus on teaching how professional software teams work by working through a structured project over the course of 8 weeks under the guidance of mentors who are professionals in the field. Collab Lab is volunteer-driven and free for participants. More information about the program is available on &lt;a href="https://the-collab-lab.codes" rel="noopener noreferrer"&gt;our website&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is GraphCMS
&lt;/h2&gt;

&lt;p&gt;GraphCMS is a hosted system for managing content. It is what’s called a “headless” CMS, meaning it is not concerned with the presentation of the content, just the structure of and relationships among the various bits.&lt;/p&gt;

&lt;p&gt;As the name implies, GraphCMS was built from the ground up on &lt;a href="https://graphql.org" rel="noopener noreferrer"&gt;GraphQL&lt;/a&gt;. GraphQL is a developer-friendly alternative to &lt;a href="https://restfulapi.net/" rel="noopener noreferrer"&gt;REST&lt;/a&gt; as a way of structuring and serving APIs. How to work with GraphQL itself is outside the scope of this article, but know that GraphCMS fully integrates &lt;a href="https://blog.logrocket.com/complete-guide-to-graphql-playground/" rel="noopener noreferrer"&gt;GraphQL playgrounds&lt;/a&gt;, making it simple to experiment with queries until you get your endpoints serving just what you need.&lt;/p&gt;

&lt;h2&gt;
  
  
  Migrating from a fully static site to 11ty
&lt;/h2&gt;

&lt;p&gt;At The Collab Lab we decided that it was time to step up our website game and start using something other than just plain HTML, CSS and Javascript. We started looking for tools that match our current stack, and that’s where &lt;a href="https://twitter.com/codeability" rel="noopener noreferrer"&gt;EJ&lt;/a&gt; introduced us to &lt;a href="https://www.11ty.dev/" rel="noopener noreferrer"&gt;Eleventy (11ty)&lt;/a&gt;. 11ty is a static site generator that emphasizes simplicity. It doesn't use any JavaScript framework (e.g., Next.js, Gatsby or Nuxt). With 11ty, you can use different template engines as it supports &lt;a href="https://www.11ty.dev/docs/" rel="noopener noreferrer"&gt;Handlebars, Liquid, HTML, Nunjucks, Mustache, EJS, Haml, Pug and Markdown&lt;/a&gt;, the fun thing is that you can chose to use one, or all of them at the same time 😱. As any other Static Site Generator, its lifecycle is about grabbing data from a datasource — GraphCMS in this case — pass that data to the templates, generate the HTML and then build the site as static HTML.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fotsz3p19zo9jh1kny2bz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fotsz3p19zo9jh1kny2bz.png" alt="Untitled"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;A good thing about using 11ty is that the migration was painless, as I said above, our site was just HTML, CSS and JS files, the approach we took, was to keep the old site around and use 11ty to build it and then incrementally start creating new pages with templates and dynamic data. Here you can see the structure before and after for our migration:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fyfpg19ag6hjpl1pgp0bn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fyfpg19ag6hjpl1pgp0bn.png" alt="Untitled 1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You'll notice two things happened:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;We use &lt;code&gt;/build&lt;/code&gt; as our output/build directory before and after the migration.&lt;/li&gt;
&lt;li&gt;We moved everything inside the &lt;code&gt;build&lt;/code&gt; directory to the &lt;code&gt;pages&lt;/code&gt; directory&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We can tell 11ty to treat the &lt;code&gt;pages&lt;/code&gt; directory as its input, and &lt;code&gt;build&lt;/code&gt; as its output in the &lt;code&gt;.eleventy.js&lt;/code&gt; config file. From then on, we treated the &lt;code&gt;pages&lt;/code&gt; directory as our working directory.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Now it was time to start &lt;a href="https://en.wikipedia.org/wiki/Don%27t_repeat_yourself" rel="noopener noreferrer"&gt;DRY&lt;/a&gt;ing things, so we created a layout file and several other templates (or “components” if you wish) that reduced the file sizes of our pages a lot and made things easier to reason about.&lt;/p&gt;

&lt;p&gt;But that’s just half of the story. Now we wanted to make the site dynamic. We were tired of making manual updates to change the content of our site. This is where &lt;strong&gt;GraphCMS&lt;/strong&gt; came in.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adding Dynamic Content
&lt;/h2&gt;

&lt;p&gt;We wanted to give dynamic content a try in our &lt;strong&gt;&lt;a href="https://the-collab-lab.codes/who-we-are/" rel="noopener noreferrer"&gt;Who We Are page&lt;/a&gt;&lt;/strong&gt; as it’s the page that we update most often. It roughly looks like the following:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6plg5by7ntcwkih0ejte.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6plg5by7ntcwkih0ejte.png" alt="Untitled 2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For what it's worth, we didn't migrate the whole page at once, we started out with the &lt;strong&gt;Developers Sub Section&lt;/strong&gt;. The steps we followed to make this change were roughly as follows:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Created a model in GraphCMS that represents the Developers&lt;/li&gt;
&lt;li&gt;Added content for that model in GraphCMS&lt;/li&gt;
&lt;li&gt;Explored the GraphQL API using GraphCMS API Playground&lt;/li&gt;
&lt;li&gt;Started consuming the data in 11ty.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Create a model in GraphCMS that represents the Participants'
&lt;/h3&gt;

&lt;p&gt;This step was pretty straightforward, we just modeled the data we needed in our page, and that’s it. For instance, we added the participant's &lt;strong&gt;Firstname&lt;/strong&gt; and &lt;strong&gt;Fullname&lt;/strong&gt; among other data.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.zappy.app%2F2ed70ae7107844472dd2901d6f490ca3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.zappy.app%2F2ed70ae7107844472dd2901d6f490ca3.png" alt="https://cdn.zappy.app/2ed70ae7107844472dd2901d6f490ca3.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Add content for the Participants model
&lt;/h3&gt;

&lt;p&gt;Again, this was straightforward. You just click the &lt;strong&gt;Content&lt;/strong&gt; icon on the left hand side of the sidebar, and then start adding the data you need&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.zappy.app%2F24864c602305a9ddc4cc37bd89922dce.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.zappy.app%2F24864c602305a9ddc4cc37bd89922dce.png" alt="https://cdn.zappy.app/24864c602305a9ddc4cc37bd89922dce.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Explore the GraphQL API using GraphCMS' API Playground
&lt;/h3&gt;

&lt;p&gt;One really useful thing that GraphCMS provides, is a playground that you can use to build your queries and try things without any limitation. Once you have the queries in place, you can move them to your development environment and start using them to get real data.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.zappy.app%2Fa2d706e475a11b67b6750033b16934e8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.zappy.app%2Fa2d706e475a11b67b6750033b16934e8.png" alt="https://cdn.zappy.app/a2d706e475a11b67b6750033b16934e8.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Start consuming the data in 11ty.
&lt;/h3&gt;

&lt;p&gt;Inside our &lt;code&gt;pages&lt;/code&gt; folder, we created a &lt;code&gt;graphql&lt;/code&gt; folder which acts as our data layer and it contains both, the &lt;strong&gt;requests to GraphCMS&lt;/strong&gt; and the &lt;strong&gt;GraphQL Queries&lt;/strong&gt;, our folder structure looks like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fzhv5yhlgo0a0wilieq0e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fzhv5yhlgo0a0wilieq0e.png" alt="Untitled 3"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;We started out by writing the query to get the teams. We &lt;strong&gt;don’t get the Developers directly&lt;/strong&gt; as our &lt;strong&gt;Developers&lt;/strong&gt; section is made of &lt;strong&gt;teams that contain developers.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.zappy.app%2Ff456ddfd3cb07de7ecea580e5c886188.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.zappy.app%2Ff456ddfd3cb07de7ecea580e5c886188.png" alt="https://cdn.zappy.app/f456ddfd3cb07de7ecea580e5c886188.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here’s the query to get the the teams, and then the collection of developers that participated in that team.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Then, we import that GraphQL Query  and we call the GraphCMS endpoint using &lt;code&gt;graphql-request&lt;/code&gt;. For what is worth, you can use anything you want to call a GraphQL endpoint (e.g., Axios, Apollo, Urql), but I recommend &lt;code&gt;graphql-request&lt;/code&gt; as it gives you just what you need, nothing less, nothing more.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Up to this point, we have a function called &lt;code&gt;getTeams&lt;/code&gt; that will get all the teams ordered by &lt;code&gt;startDate&lt;/code&gt; and its respective developers ordered by &lt;code&gt;firstName&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;How you connect the data layer (&lt;code&gt;data&lt;/code&gt; folder) with the view layer (any &lt;code&gt;.html&lt;/code&gt; file) is to create a &lt;code&gt;[template-file].11tydata.js&lt;/code&gt; file with the same name as the &lt;code&gt;.html&lt;/code&gt; where we want to use the data. In our case, we have a &lt;code&gt;who-we-are.html&lt;/code&gt; file, which means that we have to create a &lt;code&gt;who-we-are.11tydata.js&lt;/code&gt; file to get dynamic data.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;From there we can use the &lt;code&gt;teams&lt;/code&gt; object in &lt;code&gt;who-we-are.html&lt;/code&gt;&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;And that’s it — our Developers section is now fully powered by GraphCMS! 😎&lt;/p&gt;

&lt;h3&gt;
  
  
  Bonus: Automate deployments
&lt;/h3&gt;

&lt;p&gt;Since we use Netlify to host our site, we use &lt;a href="https://zapier.com" rel="noopener noreferrer"&gt;Zapier&lt;/a&gt; to schedule deployments everyday at a certain time. Our workflow to update our site now is this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Make a change in GraphCMS&lt;/li&gt;
&lt;li&gt;Trigger an automatic deployment at 12am PST&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Unless we need to deploy any new feature or fix a bug, we no longer need to trigger a manual build! 🎉&lt;/p&gt;

&lt;p&gt;For those times when we do need a manual build, we have installed &lt;a href="https://graphcms.com/blog/graphcms-netlify-integration" rel="noopener noreferrer"&gt;the official Netlify/GraphCMS integration&lt;/a&gt;. This gives us the ability to kick off a build and deploy of the site at the click of a button from within the content editing interface.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;GraphCMS&lt;/strong&gt; is a great tool, easy and fun to use that has helped us greatly since now we’re able to iterate faster.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;11ty&lt;/strong&gt; is a fun tool to use, too! I like its simplicity and the fact that it goes back to the basics, HTML, CSS and JS. No need for anything fancy or with a steeper learning curve such as React or VUE.&lt;/p&gt;

&lt;h2&gt;
  
  
  Useful Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://graphcms.com/" rel="noopener noreferrer"&gt;GraphCMS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/the-collab-lab/website" rel="noopener noreferrer"&gt;The Collab Lab repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://the-collab-lab.codes/" rel="noopener noreferrer"&gt;The Collab Lab Website&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.11ty.dev/" rel="noopener noreferrer"&gt;Eleventy (11ty)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>11ty</category>
      <category>graphcms</category>
      <category>netlify</category>
      <category>zapier</category>
    </item>
    <item>
      <title>Aprendamos Next.js en Español</title>
      <dc:creator>Alejandro Ñáñez Ortiz</dc:creator>
      <pubDate>Sat, 05 Dec 2020 23:13:56 +0000</pubDate>
      <link>https://dev.to/alejandronanez/aprendamos-next-js-en-espanol-6na</link>
      <guid>https://dev.to/alejandronanez/aprendamos-next-js-en-espanol-6na</guid>
      <description>&lt;p&gt;👋🏼 Empecé una lista de Youtube donde iré publicando videos sobre cómo usar Next.js&lt;/p&gt;

&lt;p&gt;Los 3 primeros videos son sobre:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;¿Cómo usar &lt;code&gt;getServerSideProps&lt;/code&gt;?&lt;/li&gt;
&lt;li&gt;¿Cómo usar &lt;code&gt;getStaticProos&lt;/code&gt;?&lt;/li&gt;
&lt;li&gt;Usar de &lt;code&gt;create-next-app&lt;/code&gt; para crear nuestras aplicaciones Next.js&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/playlist?list=PLvB-YEcTlJ3A0nYX74xlAOzBIhaTNm5MR"&gt;Playlist en Youtube - Aprendamos Next.js&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;¿Qué les gustaría saber sobre Next.js?&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>spanish</category>
      <category>tutorial</category>
      <category>aprendamosnextjs</category>
    </item>
    <item>
      <title>Team 14 Recap</title>
      <dc:creator>Alejandro Ñáñez Ortiz</dc:creator>
      <pubDate>Fri, 04 Dec 2020 03:35:27 +0000</pubDate>
      <link>https://dev.to/the-collab-lab/team-14-recap-1m07</link>
      <guid>https://dev.to/the-collab-lab/team-14-recap-1m07</guid>
      <description>&lt;p&gt;The Collab Lab's 14th team wrapped up last week! This one has been really special to me as it's the first one (but not the last one!) that happened &lt;strong&gt;completely in Spanish&lt;/strong&gt;!&lt;br&gt;
For me, it felt like a dream came true. If I had told myself one year ago that I'd be mentoring people from Latin America fully in Spanish, I would had laughed at myself!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8tUPOVUq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.zappy.app/aae8e30f61d06fbc3436211cba509bc8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8tUPOVUq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.zappy.app/aae8e30f61d06fbc3436211cba509bc8.png" alt="" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Participants
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/lizeth-b-230ab2112/"&gt;Lizeth Bañol&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/jefferson-andr%C3%A9s-espejo-goez-591b201ba/"&gt;Andrés Espejo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/manuela-jimenez-code/"&gt;Manuela Jiménez&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/yesika-castillo/"&gt;Yesika Castillo&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Mentors
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/danigomezdev/"&gt;Dani Gomez&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/titoagudelo/"&gt;Tito Agudelo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/alejandronanez/"&gt;Alejandro Ñáñez (me!)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/therealstacie/"&gt;Stacie Taylor&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Project
&lt;/h2&gt;

&lt;p&gt;They got together as a team, and built a web application using &lt;strong&gt;React.js and Firebase&lt;/strong&gt; that's deployed to &lt;strong&gt;Netify&lt;/strong&gt; during 8 weeks.&lt;br&gt;
They went from a really basic looking application, to this beautiful piece&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZhcHx9Cp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.zappy.app/5e3547d30f2340101d2c83ef25d55ea9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZhcHx9Cp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.zappy.app/5e3547d30f2340101d2c83ef25d55ea9.png" alt="" width="800" height="530"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;They, like the real software development team the are, had some trouble meeting some deadlines in the last couple of weeks, but they put it together and managed to complete everything they had in mind before the end of the 8th week. I have to say that I'm really proud of them and what they accomplished.&lt;/p&gt;

&lt;p&gt;👏👏👏👏👏&lt;/p&gt;

</description>
      <category>earlycareerdevelopers</category>
      <category>collablab</category>
      <category>juniordevelopers</category>
      <category>react</category>
    </item>
    <item>
      <title>Learning RxJS by creating a Datepicker in Typescript</title>
      <dc:creator>Alejandro Ñáñez Ortiz</dc:creator>
      <pubDate>Tue, 28 Mar 2017 20:48:45 +0000</pubDate>
      <link>https://dev.to/alejandronanez/learning-rxjs-by-creating-a-datepicker-in-typescript</link>
      <guid>https://dev.to/alejandronanez/learning-rxjs-by-creating-a-datepicker-in-typescript</guid>
      <description>&lt;p&gt;I was always super curious about RxJS and I found it to be super difficult to grasp or to build something more &lt;em&gt;real&lt;/em&gt; than console logging a click event or a timer.&lt;br&gt;
That's why I decided to start a small/toy project that uses RxJS + Vanilla JS (Typescript) that does more than just a console.log after a click.&lt;br&gt;
As I said, this is a small project but I tried my best to make it work, it has some nice unit tests written using Jest and some .ts specific stuff (I'm learning Typescript too). The project also has a &lt;em&gt;ToDo&lt;/em&gt; list with things some things to address.&lt;/p&gt;

&lt;p&gt;That being said, feel free take a look and hopefully it helps you to get a better understanding about how to build something with RxJS.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.github.com/alejandronanez/datepicker"&gt;Date Picker Repo&lt;/a&gt;&lt;/p&gt;

</description>
      <category>rxjs</category>
      <category>typescript</category>
      <category>jest</category>
    </item>
  </channel>
</rss>
