<?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: Juan Christian</title>
    <description>The latest articles on DEV Community by Juan Christian (@hotpotatoc).</description>
    <link>https://dev.to/hotpotatoc</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%2F386058%2F3319b1f8-a184-49ac-9c23-9920f84bdcbd.png</url>
      <title>DEV Community: Juan Christian</title>
      <link>https://dev.to/hotpotatoc</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hotpotatoc"/>
    <language>en</language>
    <item>
      <title>I made a Twitter Clone with VueJS and Go</title>
      <dc:creator>Juan Christian</dc:creator>
      <pubDate>Fri, 14 May 2021 08:55:30 +0000</pubDate>
      <link>https://dev.to/hotpotatoc/i-made-a-twitter-clone-with-vuejs-and-go-59jf</link>
      <guid>https://dev.to/hotpotatoc/i-made-a-twitter-clone-with-vuejs-and-go-59jf</guid>
      <description>&lt;p&gt;Hello DEV community! 👋&lt;/p&gt;

&lt;p&gt;I've recently attempted to make a clone of Twitter using VueJS as its frontend and Golang as its backend server.&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%2Fts1k9b9b00x0qlx4xmfe.jpg" 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%2Fts1k9b9b00x0qlx4xmfe.jpg" alt="twitter clone profile" width="800" height="416"&gt;&lt;/a&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%2Fhbgvujwsj162ra7tqls5.jpg" 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%2Fhbgvujwsj162ra7tqls5.jpg" alt="twitter clone status" width="800" height="416"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can check the github repository here for the source code:&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/HotPotatoC" rel="noopener noreferrer"&gt;
        HotPotatoC
      &lt;/a&gt; / &lt;a href="https://github.com/HotPotatoC/twitter-clone" rel="noopener noreferrer"&gt;
        twitter-clone
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      🕊 Twitter Clone developed using Go + Vue 3 + Vite + TailwindCSS + PostgreSQL + Redis
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Twitter Clone&lt;/h1&gt;

&lt;/div&gt;
&lt;p&gt;An attempt to recreate one of the largest social networking application Twitter.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Note: This is my first attempt at developing a distributed system, so any feedback would be greatly appreciated.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Services&lt;/h2&gt;

&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://github.com/HotPotatoC/twitter-clone./edge/" rel="noopener noreferrer"&gt;Edge Service (GraphQL)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/HotPotatoC/twitter-clone./media/" rel="noopener noreferrer"&gt;Media Service&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/HotPotatoC/twitter-clone./notifications/" rel="noopener noreferrer"&gt;Notifications Service&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/HotPotatoC/twitter-clone./search/" rel="noopener noreferrer"&gt;Search Service&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/HotPotatoC/twitter-clone./timeline/" rel="noopener noreferrer"&gt;Timeline Service&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/HotPotatoC/twitter-clone./tweet/" rel="noopener noreferrer"&gt;Tweet Service&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/HotPotatoC/twitter-clone./website/" rel="noopener noreferrer"&gt;Web UI Service&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Technologies Used&lt;/h2&gt;

&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Golang (Internal Services)&lt;/li&gt;
&lt;li&gt;Next.JS (Website UI)&lt;/li&gt;
&lt;li&gt;Kafka (Pub/Sub)&lt;/li&gt;
&lt;li&gt;Apache Spark (Analytics)&lt;/li&gt;
&lt;li&gt;PostgreSQL (Main Database)&lt;/li&gt;
&lt;li&gt;PgPool II (Database Load Balancer)&lt;/li&gt;
&lt;li&gt;Redis (Caching)&lt;/li&gt;
&lt;li&gt;Docker (Containerization)&lt;/li&gt;
&lt;li&gt;Nginx (Load Balancer)&lt;/li&gt;
&lt;li&gt;GraphQL (Edge Server / Frontend for Backend)&lt;/li&gt;
&lt;li&gt;ElasticSearch (Searching &amp;amp; Indexing)&lt;/li&gt;
&lt;li&gt;Firebase Cloud Messenger (Notification Service)&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;System Design&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Functional Requirements&lt;/h3&gt;

&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Create Tweets (text, images, videos, etc)&lt;/li&gt;
&lt;li&gt;View Timeline&lt;/li&gt;
&lt;li&gt;Like tweets&lt;/li&gt;
&lt;li&gt;Retweet / Quote Retweet&lt;/li&gt;
&lt;li&gt;Follow others&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Non-Functional Requirements&lt;/h3&gt;

&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Scalable &amp;amp; Efficient&lt;/li&gt;
&lt;li&gt;High Availability&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Optional Requirements&lt;/h3&gt;

&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Metrics and analytics&lt;/li&gt;
&lt;li&gt;Notifications&lt;/li&gt;
&lt;li&gt;Observability &amp;amp; Monitoring (Prometheus, Grafana, Jaeger, etc)&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Database Schema&lt;/h3&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;How to run locally&lt;/h1&gt;

&lt;/div&gt;
&lt;p&gt;Check &lt;a href="https://github.com/HotPotatoC/twitter-cloneRUNNING_LOCALLY.md" rel="noopener noreferrer"&gt;here&lt;/a&gt; on how to run locally&lt;/p&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/HotPotatoC/twitter-clone" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;Please note that some features are yet to be implemented and i would love to hear your feedback!&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>go</category>
    </item>
    <item>
      <title>Redis-like database server in Golang</title>
      <dc:creator>Juan Christian</dc:creator>
      <pubDate>Sat, 27 Mar 2021 14:45:57 +0000</pubDate>
      <link>https://dev.to/hotpotatoc/redis-like-terminal-app-in-go-48k8</link>
      <guid>https://dev.to/hotpotatoc/redis-like-terminal-app-in-go-48k8</guid>
      <description>&lt;p&gt;Hello 👋, for the past month I've been developing a very simple Redis clone tool in Golang.&lt;/p&gt;

&lt;h1&gt;
  
  
  kvstore
&lt;/h1&gt;

&lt;p&gt;The project is called &lt;strong&gt;kvstore&lt;/strong&gt;. &lt;strong&gt;kvstore&lt;/strong&gt; is an in-memory database server with the key-value pair data model (similar to Redis and other in-memory database servers).&lt;/p&gt;

&lt;h2&gt;
  
  
  See it in action
&lt;/h2&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%2Fvtv5bgmsuy9fslmnon76.gif" 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%2Fvtv5bgmsuy9fslmnon76.gif" alt="kvstore" width="720" height="390"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can check out the project here:&lt;br&gt;
&lt;a href="https://github.com/HotPotatoC/kvstore" rel="noopener noreferrer"&gt;https://github.com/HotPotatoC/kvstore&lt;/a&gt;&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>go</category>
      <category>programming</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
