<?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: Timo Zimmermann</title>
    <description>The latest articles on Forem by Timo Zimmermann (@jz222).</description>
    <link>https://forem.com/jz222</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%2F359019%2Fa2dc4ac9-ec86-4a90-9bd9-e2126f7f4615.png</url>
      <title>Forem: Timo Zimmermann</title>
      <link>https://forem.com/jz222</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/jz222"/>
    <language>en</language>
    <item>
      <title>Use Caasy.io to build a personal blog with your DEV articles</title>
      <dc:creator>Timo Zimmermann</dc:creator>
      <pubDate>Wed, 21 Oct 2020 14:43:02 +0000</pubDate>
      <link>https://forem.com/jz222/use-caasy-io-to-build-a-personal-blog-with-your-dev-articles-3i3b</link>
      <guid>https://forem.com/jz222/use-caasy-io-to-build-a-personal-blog-with-your-dev-articles-3i3b</guid>
      <description>&lt;p&gt;I recently launched &lt;a href="https://caasy.io"&gt;Caasy.io&lt;/a&gt;, a headless CMS that uses standardized elements to manage content. I've added a DEV integration, that allows you to import your published articles to Caasy. This is super useful if you use Caasy to manage posts of your personal blog and want to import articles from your DEV account. In the following I will show how easy it is.&lt;/p&gt;

&lt;p&gt;First, we need to select one of our sites in Caasy and navigate to "Integrations" in the menu on the left.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hmFOCRo5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ms8datdpqfqgz0hovzzt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hmFOCRo5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ms8datdpqfqgz0hovzzt.png" alt="Caasy integrations"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The first card on the top says "Import Articles from DEV". Click the "Import" button to start the import.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NgUHWbw_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/km4zuc7vqz1um4o0hg72.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NgUHWbw_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/km4zuc7vqz1um4o0hg72.png" alt="DEV username"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This will open a modal that asks for your DEV username. Enter it into the input field and click "Next".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0OcZc69B--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/vvw5rc1uqhvceb2fchn6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0OcZc69B--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/vvw5rc1uqhvceb2fchn6.png" alt="DEV articles"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, we will see all the DEV articles published by the provided user. We simply select all the articles that we want to import to Caasy and confirm the selection by clicking "Import".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1hz9sTxD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/n0qq81u994qcg2re57zl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1hz9sTxD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/n0qq81u994qcg2re57zl.png" alt="Successfully imported"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once, all the articles are imported, we will see a confirmation message and can navigate to "Blog Posts" in the menu on the left.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EE8JL8jy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/qlkebsiugutpifmybpbp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EE8JL8jy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/qlkebsiugutpifmybpbp.png" alt="Caasy blog posts"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We can see that the imported articles are unpublished by default.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7njf6wYe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/18r54i28jvdp7tuw55j2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7njf6wYe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/18r54i28jvdp7tuw55j2.png" alt="Caasy blog post details"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We can click on the imported articles to make changes to the content if desired and publish the blog post by clicking on the toggle on the right and saving the changes.&lt;/p&gt;

&lt;p&gt;That's it! It's as simple as that. You can now build your own personal blog or use our starter template to present your articles. Visit our &lt;a href="https://demo-blog.caasy.io/"&gt;demo blog&lt;/a&gt; for an example.&lt;/p&gt;

&lt;p&gt;If you are interested in using Caasy for your personal blog with our &lt;a href="https://github.com/jz222/caasy-nextjs-blog-template"&gt;free blog template&lt;/a&gt;, you can find a detailed &lt;a href="https://docs.caasy.io/docs/getting-started-with-the-blog-template"&gt;guide&lt;/a&gt; in our docs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Additional Links
&lt;/h3&gt;

&lt;h4&gt;
  
  
  💻 &lt;a href="https://github.com/jz222/caasy-nextjs-blog-template"&gt;Caasy Blog Template&lt;/a&gt;
&lt;/h4&gt;

&lt;h4&gt;
  
  
  📚 &lt;a href="https://docs.caasy.io/docs/getting-started-with-the-blog-template"&gt;Getting Started&lt;/a&gt;
&lt;/h4&gt;

</description>
      <category>showdev</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>I built a modern and open-source blog template 🙌</title>
      <dc:creator>Timo Zimmermann</dc:creator>
      <pubDate>Wed, 14 Oct 2020 16:17:16 +0000</pubDate>
      <link>https://forem.com/jz222/i-built-a-modern-and-open-source-blog-template-19be</link>
      <guid>https://forem.com/jz222/i-built-a-modern-and-open-source-blog-template-19be</guid>
      <description>&lt;p&gt;Hi,&lt;/p&gt;

&lt;p&gt;I built a clean-looking template that you can use for your next blog. It uses NextJS as framework for better SEO and was mainly built to work with a &lt;a href="https://caasy.io"&gt;CMS&lt;/a&gt; I recently launched. However, the code is open-source and can be adapted to your needs. It can easily be customized to your personal preferences. For more information on how to do that see the readme of the repository or refer to the &lt;a href="https://docs.caasy.io/docs/getting-started-with-the-blog-template"&gt;docs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Hope you like it!&lt;/p&gt;

&lt;h4&gt;
  
  
  🚀 &lt;a href="https://demo-blog.caasy.io/"&gt;Live Preview&lt;/a&gt;
&lt;/h4&gt;

&lt;h4&gt;
  
  
  💻 &lt;a href="https://github.com/jz222/caasy-nextjs-blog-template"&gt;Get the code here&lt;/a&gt;
&lt;/h4&gt;

</description>
      <category>showdev</category>
      <category>react</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Headless CMS - looking for JAM-stacker 👩‍💻👨‍💻</title>
      <dc:creator>Timo Zimmermann</dc:creator>
      <pubDate>Thu, 06 Aug 2020 14:00:01 +0000</pubDate>
      <link>https://forem.com/jz222/headless-cms-looking-for-jam-stacker-3op0</link>
      <guid>https://forem.com/jz222/headless-cms-looking-for-jam-stacker-3op0</guid>
      <description>&lt;p&gt;I've been building all kind of web apps for quite some time now. Occasionally, I also develop websites for small and medium-sized businesses. Over the last years, all my clients wanted me to use a CMS so that they are able to update content, typically images and particular text elements, themselves. Unfortunately, changing an image in WordPress was already a big challenge for them and in the end, they've always asked me to do it.&lt;/p&gt;

&lt;p&gt;For me, this is not a great situation either, since I prefer working with modern technologies such as NodeJS and Sapper as I can deliver much better quality with them. I've tried several headless content management systems as an alternative to traditional systems but most of them were to complex for the clients as well.&lt;/p&gt;

&lt;p&gt;Therefore, I've built my own CMS over the last months. I put a focus on a clean and simple layout without noise as well as a great developer experience.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZOq-ZxM6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/m9i45bbezg9z3ffounon.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZOq-ZxM6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/m9i45bbezg9z3ffounon.png" alt="media library"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1Fm4tooa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/3ufuas0vlnmj9ielxala.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1Fm4tooa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/3ufuas0vlnmj9ielxala.png" alt="builder"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zz85BAF2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/suapoeir3zlnw5jnfnao.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zz85BAF2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/suapoeir3zlnw5jnfnao.png" alt="activity"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's already working pretty well and comes with a bunch of cool features such as automatic image resizing. I would like to get some feedback from other developers. Therefore I'm looking for a few developers who would like to spend a few hours playing with the CMS and give me feedback. Would be great if you had a basic understanding of typical JSM stack technologies like Gatsby, NextJS or Sapper. I've already built a blog template and a Javascript SDK that helps you get started.&lt;/p&gt;

&lt;p&gt;If you are interested, feel free to send me an email to &lt;a href="mailto:hello@timo.engineer"&gt;hello@timo.engineer&lt;/a&gt; 🙂&lt;/p&gt;

</description>
      <category>react</category>
      <category>webdev</category>
      <category>showdev</category>
    </item>
    <item>
      <title>I built an entire monitoring service while being in Covid-19 quarantine 📈🚀</title>
      <dc:creator>Timo Zimmermann</dc:creator>
      <pubDate>Thu, 02 Apr 2020 17:17:07 +0000</pubDate>
      <link>https://forem.com/jz222/i-built-an-entire-monitoring-service-while-being-in-covid-19-quarantine-4i3h</link>
      <guid>https://forem.com/jz222/i-built-an-entire-monitoring-service-while-being-in-covid-19-quarantine-4i3h</guid>
      <description>&lt;p&gt;After reading posts here for several years now, I decided to write my first one too. 😀 I hope everyone is doing fine in the current situation. For my part, I've been in quarantine for around two and a half weeks now. To use my time productively, I decided to create an app called LOGGY that monitors different kinds of web services and catches errors in production.&lt;/p&gt;

&lt;p&gt;There are already several monitoring services, but I wanted to see what I can come up with within just two weeks. My goal was to create a highly scalable and flexible service that is easy to deploy. I decided to write the backend in Go to learn the language a bit better. I also believe that Go is quite a powerful tool for these type of applications. The frontend is written in React.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oK-qlMtd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/59je18letmbnq6ms3w1z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oK-qlMtd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/59je18letmbnq6ms3w1z.png" alt="services"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To get started there needs to be at least one service. A service can be anything like an Express server, a mobile app or your frontend. All services belong to an organization. Admins of that organization are able to invite and remove additional users to their organization. There are also adapters that can be installed on the service, to automatically catch and report errors. It also gives you the flexibility to write your own adapter and error reporting logic in whatever language you prefer.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Qs3NARso--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/4z862r6vnrwymk081xy2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Qs3NARso--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/4z862r6vnrwymk081xy2.png" alt="errors"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When selecting a service, it shows all the errors that were reported by that particular service with a couple of details. Each service has a so-called ticket, which is used to assign the reported event to the service.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uym_BIN2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/y3fqxoux15a7n8pvvdoc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uym_BIN2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/y3fqxoux15a7n8pvvdoc.png" alt="header"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can click on an error for further insights. It is also possible to add custom information to the event, which can be handy if you, for example, run your service in different clusters and want to add the name of the cluster to the event.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--S_DkiHuS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/40dmiyjjj821jwjtheaq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--S_DkiHuS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/40dmiyjjj821jwjtheaq.png" alt="evolution"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It will also give you detailed information when and how often the error was reported.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tvj_o-Xy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/9hmdmwmt2bjpqn5lj5gb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tvj_o-Xy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/9hmdmwmt2bjpqn5lj5gb.png" alt="stacktrace"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Besides the raw stack trace, it will show clearly where the error occurred. Furthermore, you will see previous console logs and information about the adapter.&lt;/p&gt;

&lt;p&gt;If you want to check it out, you can create your own organization on a demo instance I deployed &lt;a href="https://loggy-demo.web.app/auth/setup"&gt;here&lt;/a&gt; and give it a try. Currently, there is a NodeJS adapter available and I'm already working on an adapter for common frontend frameworks. In the repositories, you will find information on how to create an adapter in any other language or host the service yourself.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/jz222/loggy"&gt;🚀 Backend&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/jz222/loggy-client"&gt;💻 Dashboard&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/jz222/loggy-adapter-nodejs"&gt;📡 NodeJS Adapter&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://loggy-demo.web.app/auth/setup"&gt;✨ Demo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks for reading 🙏🏼&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>react</category>
    </item>
  </channel>
</rss>
