<?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: Simon</title>
    <description>The latest articles on DEV Community by Simon (@tunaitis).</description>
    <link>https://dev.to/tunaitis</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%2F290029%2F7fbf6427-77e6-41f9-9a97-b42cd475e15d.jpg</url>
      <title>DEV Community: Simon</title>
      <link>https://dev.to/tunaitis</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tunaitis"/>
    <language>en</language>
    <item>
      <title>Domain Monitor - A React SPA with MongoDB Cloud Services as a Backend</title>
      <dc:creator>Simon</dc:creator>
      <pubDate>Thu, 13 Jan 2022 18:58:15 +0000</pubDate>
      <link>https://dev.to/tunaitis/domain-monitor-a-react-spa-with-mongodb-cloud-services-as-a-backend-1j3</link>
      <guid>https://dev.to/tunaitis/domain-monitor-a-react-spa-with-mongodb-cloud-services-as-a-backend-1j3</guid>
      <description>&lt;h3&gt;
  
  
  Overview of My Submission
&lt;/h3&gt;

&lt;p&gt;I have a bunch of domains that I track using a shell script that sends me weekly emails with domain statuses. Some of the domains are mine, and I follow them because I don't want to miss the expiration date. The rest are the domains that aren't available now, but I'd like to acquire them once they become available. I've been using the script for years, and it suited me well, except for not having a friendly interface for adding and removing domains to the list.&lt;/p&gt;

&lt;p&gt;Once I saw the announcement about this hackathon, I knew that it would be a perfect opportunity to rebuild that old and basic script into something more sophisticated and also to explore MongoDB Cloud along the way.&lt;/p&gt;

&lt;p&gt;The result is a React single-page, multi-user application that uses MongoDB Atlas for storing domain entries, Realm functions and triggers for querying WHOIS servers, daily updates, and change detection. An email notification is sent to the user when a change is detected.&lt;/p&gt;

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

&lt;p&gt;Action Star&lt;/p&gt;

&lt;h3&gt;
  
  
  Link to Code
&lt;/h3&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--566lAguM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/tunaitis"&gt;
        tunaitis
      &lt;/a&gt; / &lt;a href="https://github.com/tunaitis/domain-monitor"&gt;
        domain-monitor
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Self-hosted React SPA for monitoring domain names.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Domain Monitor&lt;/h1&gt;
&lt;p&gt;Domain Monitor is a React single-page application for tracking domain status changes.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/tunaitis/domain-monitordocs/main.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GYOoXcyz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/tunaitis/domain-monitordocs/main.png" alt="Domain Monitor"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
Hosting on MongoDB Cloud&lt;/h2&gt;
&lt;h3&gt;
Requirements&lt;/h3&gt;
&lt;p&gt;Node.js is required to build the application and then deploy it to the cloud using the Realm CLI. If you
don't have it already, please download it from &lt;a href="https://nodejs.org/en/download/" rel="nofollow"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;MongoDB Cloud account is required to access MongoDB Atlas and MongoDB Realm. MongoDB Atlas is for hosting
the application's database, and MongoDB Realm is for hosting serverless functions and static files. Static files can be
hosted anywhere else, but I recommend using MongoDB Realm just for simplicity. Create MongoDB Cloud
account &lt;a href="https://www.mongodb.com/cloud/atlas/register" rel="nofollow"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The application can be deployed to MongoDB Cloud using the Realm UI, but a more convenient way is to
use the Realm CLI. You can find how to install and configure the Realm CLI &lt;a href="https://docs.mongodb.com/realm/cli/" rel="nofollow"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;An SMTP server is an optional requirement to receive email notifications when…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/tunaitis/domain-monitor"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


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

&lt;p&gt;The live demo is &lt;a href="https://domainmonitor-itkcz.mongodbstitch.com"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Also, if you are interested in self-hosting the app, you can find the instruction on how to do that in the project repository.&lt;/p&gt;

</description>
      <category>atlashackathon</category>
      <category>typescript</category>
      <category>react</category>
      <category>mongodb</category>
    </item>
    <item>
      <title>GitHub Action for Generating a World Map of Repository Contributions</title>
      <dc:creator>Simon</dc:creator>
      <pubDate>Wed, 08 Dec 2021 18:01:57 +0000</pubDate>
      <link>https://dev.to/tunaitis/github-action-for-generating-a-world-map-of-repository-contributions-4g4o</link>
      <guid>https://dev.to/tunaitis/github-action-for-generating-a-world-map-of-repository-contributions-4g4o</guid>
      <description>&lt;p&gt;I found the inspiration to create this workflow after seeing some GitHub repositories listing contributors at the end of README. I thought that having a visual representation that shows where the contributors live would be a nice addition to those lists.&lt;/p&gt;

&lt;h3&gt;
  
  
  My Workflow
&lt;/h3&gt;

&lt;p&gt;Below is a minimal example of how to use the workflow to get an SVG map generated and placed inside your repository once a week.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Create Contributor Map&lt;/span&gt;

&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;schedule&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;cron&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;0&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;8&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;*&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;*&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;1"&lt;/span&gt;

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

    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Contributor Map&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;tunaitis/contributor-map@v1&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;A new file "contributor-map.svg" will be committed to your repository at the end of the workflow. You can then include it in your README or any other Markdown document inside your repository using the following syntax:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="p"&gt;![&lt;/span&gt;&lt;span class="nv"&gt;Title of the map&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;contributor-map.svg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

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

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


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&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%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/tunaitis" rel="noopener noreferrer"&gt;
        tunaitis
      &lt;/a&gt; / &lt;a href="https://github.com/tunaitis/contributor-map" rel="noopener noreferrer"&gt;
        contributor-map
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Automatically generate a world map showing where contributions to your repository are coming from.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/tunaitis/contributor-mapdocs/main.png"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Ftunaitis%2Fcontributor-mapdocs%2Fmain.png" alt="freeCodeCamp contributor map"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Introduction&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;Contributor Map is a GitHub action that automatically generates an SVG world map with countries colored according to the number of received code contributions.&lt;/p&gt;

&lt;p&gt;It uses GitHub API to get a list of repository contributors and their profile information. The location field from the public profile is used to determine the country from which the contribution came.&lt;/p&gt;

&lt;p&gt;The action can generate a world map for any public GitHub repository.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Usage&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;Adding the following to an existing workflow would create a new "contributor-map.svg" file inside your repository.&lt;/p&gt;

&lt;div class="highlight highlight-source-yaml notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;- &lt;span class="pl-ent"&gt;name&lt;/span&gt;: &lt;span class="pl-s"&gt;Contributor Map&lt;/span&gt;
  &lt;span class="pl-ent"&gt;uses&lt;/span&gt;: &lt;span class="pl-s"&gt;tunaitis/contributor-map@v1.1&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;The following example would generate a map showing contributions of the &lt;strong&gt;facebook/react&lt;/strong&gt; repository and save it to your repository's &lt;strong&gt;data&lt;/strong&gt; folder.&lt;/p&gt;
&lt;div class="highlight highlight-source-yaml notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;- &lt;span class="pl-ent"&gt;name&lt;/span&gt;: &lt;span class="pl-s"&gt;Contributor Map&lt;/span&gt;
  &lt;span class="pl-ent"&gt;uses&lt;/span&gt;: &lt;span class="pl-s"&gt;tunaitis/contributor-map@v1.1&lt;/span&gt;
  &lt;span class="pl-ent"&gt;with&lt;/span&gt;:
    &lt;span class="pl-ent"&gt;repository&lt;/span&gt;: &lt;span class="pl-s"&gt;facebbook/react&lt;/span&gt;
    &lt;span class="pl-ent"&gt;output&lt;/span&gt;: &lt;span class="pl-s"&gt;data/facebook-react.svg&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Example of the action inside a workflow that wouild run the action every Monday at 8AM UTC to…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/tunaitis/contributor-map" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;



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

&lt;p&gt;Other actions used in the workflow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/actions/checkout" rel="noopener noreferrer"&gt;https://github.com/actions/checkout&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/stefanzweifel/git-auto-commit-action" rel="noopener noreferrer"&gt;https://github.com/stefanzweifel/git-auto-commit-action&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For the world map generation, a template from Wikipedia is used:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Wikipedia:Blank_maps#/media/File:BlankMap-World.svg" rel="noopener noreferrer"&gt;https://en.wikipedia.org/wiki/Wikipedia:Blank_maps#/media/File:BlankMap-World.svg&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The following open source databases were used to convert user-entered location information to ISO Alpha-2 country codes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://geonames.org/" rel="noopener noreferrer"&gt;https://geonames.org/&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/dr5hn/countries-states-cities-database" rel="noopener noreferrer"&gt;https://github.com/dr5hn/countries-states-cities-database&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>actionshackathon21</category>
      <category>github</category>
      <category>go</category>
    </item>
  </channel>
</rss>
