<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="340573" data-post-id="340573">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="RodolfoSilva" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/RodolfoSilva/120/39258_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  RodolfoSilva
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>New tip:</p>
<p><a href="https://rodolfosilva.com/elixir/adding-a-new-icon-collection-to-a-phoenix-project/" class="onebox" target="_blank" rel="noopener nofollow ugc">https://rodolfosilva.com/elixir/adding-a-new-icon-collection-to-a-phoenix-project/</a></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="340573" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-blog-posts/150/1149">Post #1148</a>
	                </div>
	            </div>
              <div id="likers-container-340573" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="340573"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #1148"></div>
  </section>
</div>
    <div class="postbit" id="341274" data-post-id="341274">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="linusdm" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/linusdm/120/30659_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  linusdm
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<blockquote>
<p>Write-time is the honeymoon phase for a test; it’s when it’s being cared for the most. Unfortunately, it’s all downhill from there. They will never see the same treatment again, not even from their own creator.</p>
</blockquote>
<p>This struck a chord (and made me laugh out loud <img src="https://forum.elixirforum.com/images/emoji/apple/smiley.png?v=15" title=":smiley:" class="emoji" alt=":smiley:" loading="lazy" width="20" height="20">). Nice write-up!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="341274" data-batch-url="/posts/batch_likers">
                        4
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-blog-posts/150/1150">Post #1149</a>
	                </div>
	            </div>
              <div id="likers-container-341274" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="341274"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #1149"></div>
  </section>
</div>
    <div class="postbit" id="341328" data-post-id="341328">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="soyjeansoy" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/soyjeansoy/120/35385_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  soyjeansoy
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Ah tests, I always kept it in the back burner. But I kept reminding myself to at least give an effort on tests.</p>
<p>Nice writeup!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="341328" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-blog-posts/150/1151">Post #1150</a>
	                </div>
	            </div>
              <div id="likers-container-341328" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="341328"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #1150"></div>
  </section>
</div>
    <div class="postbit" id="341414" data-post-id="341414">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="roma-glushko" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/roma-glushko/120/35849_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  roma-glushko
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I have published an article with an extensive overview of Papercups, a feature-rich open source customer service platform with real-time chat capabilities.</p>
<p>Papercups is built with Elixir, Phoenix, Oban stack.</p>
<p>The article covers:</p>
<ul>
<li><img src="https://forum.elixirforum.com/images/emoji/apple/triangular_ruler.png?v=15" title=":triangular_ruler:" class="emoji" alt=":triangular_ruler:" loading="lazy" width="20" height="20"> High-level architecture of the platform &amp; the main data model</li>
<li><img src="https://forum.elixirforum.com/images/emoji/apple/speech_balloon.png?v=15" title=":speech_balloon:" class="emoji" alt=":speech_balloon:" loading="lazy" width="20" height="20"> Handling communication with customers across 7 channels in a uniformed way and figure out to which ongoing conversation it belongs</li>
<li><img src="https://forum.elixirforum.com/images/emoji/apple/e_mail.png?v=15" title=":e_mail:" class="emoji" alt=":e_mail:" loading="lazy" width="20" height="20"> How to receive emails via AWS SES</li>
<li><img src="https://forum.elixirforum.com/images/emoji/apple/e_mail.png?v=15" title=":e_mail:" class="emoji" alt=":e_mail:" loading="lazy" width="20" height="20"> How to sync emails from GMail</li>
<li><img src="https://forum.elixirforum.com/images/emoji/apple/mobile_phone_with_arrow.png?v=15" title=":mobile_phone_with_arrow:" class="emoji" alt=":mobile_phone_with_arrow:" loading="lazy" width="20" height="20"> How to receive SMS via Twilio</li>
<li><img src="https://forum.elixirforum.com/images/emoji/apple/speech_balloon.png?v=15" title=":speech_balloon:" class="emoji" alt=":speech_balloon:" loading="lazy" width="20" height="20"> Embedded Chat Capabilities via Phoenix Channels &amp; Presence</li>
<li><img src="https://forum.elixirforum.com/images/emoji/apple/eyes.png?v=15" title=":eyes:" class="emoji" alt=":eyes:" loading="lazy" width="20" height="20"> Usage of Slack/Mattermost as reply channels</li>
<li><img src="https://forum.elixirforum.com/images/emoji/apple/magic_wand.png?v=15" title=":magic_wand:" class="emoji" alt=":magic_wand:" loading="lazy" width="20" height="20"> Webhook and Lambda Function functionality to extend the existing functionality</li>
<li><img src="https://forum.elixirforum.com/images/emoji/apple/eyes.png?v=15" title=":eyes:" class="emoji" alt=":eyes:" loading="lazy" width="20" height="20"> Advanced browser session tracking and reply</li>
<li><img src="https://forum.elixirforum.com/images/emoji/apple/chart_increasing.png?v=15" title=":chart_increasing:" class="emoji" alt=":chart_increasing:" loading="lazy" width="20" height="20"> Reporting, analytics, billing strategy</li>
</ul>
<p>Papercups is an excellent example of how to build a SaaS platform in a radically simple way.</p>
<p>Let know if you find this useful in the comments below <img src="https://forum.elixirforum.com/images/emoji/apple/down_arrow.png?v=15" title=":down_arrow:" class="emoji" alt=":down_arrow:" loading="lazy" width="20" height="20"></p>
<aside class="onebox allowlistedgeneric" data-onebox-src="https://www.romaglushko.com/blog/papercups/">
  <header class="source">
      <img src="https://www.romaglushko.com/favicon.webp" class="site-icon" alt="" width="512" height="512">

      <a href="https://www.romaglushko.com/blog/papercups/" target="_blank" rel="noopener nofollow ugc">Roman Glushko</a>
  </header>

  <article class="onebox-body">
    <div class="aspect-image" style="--aspect-ratio:690/458;"><img src="https://www.romaglushko.com/blog/papercups/archer-fu-2ylSPzMgd7s-unsplash.jpg" class="thumbnail" alt="" width="690" height="458"></div>

<h3><a href="https://www.romaglushko.com/blog/papercups/" target="_blank" rel="noopener nofollow ugc">Papercups: Customer Service Platform - Blog by Roman Glushko</a></h3>

  <p>Designing a customer support platform with live chat features similar to Zendesk or Intercom.</p>


  </article>

  <div class="onebox-metadata">
    
    
  </div>

  <div style="clear: both"></div>
</aside>
 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="341414" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-blog-posts/150/1153">Post #1152</a>
	                </div>
	            </div>
              <div id="likers-container-341414" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="341414"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #1152"></div>
  </section>
</div>
    <div class="postbit" id="341413" data-post-id="341413">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="rhcarvalho" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/rhcarvalho/120/32243_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  rhcarvalho
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Nice write up! <a class="mention" href="/u/roma-glushko" rel="nofollow">@roma-glushko</a> did you work on Papercups or only studied from the outside?</p>
<p>I really enjoyed the commentaries you made on certain decisions made (the colorful call outs).</p>
<p>Thanks for sharing!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="341413" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-blog-posts/150/1154">Post #1153</a>
	                </div>
	            </div>
              <div id="likers-container-341413" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="341413"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #1153"></div>
  </section>
</div>
    <div class="postbit" id="341417" data-post-id="341417">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="martosaur" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/martosaur/120/41071_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  martosaur
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I wrote a quick refresher for myself on Logger Handlers vs Backends for the time when I inevitably forget what is what <a href="https://distantprovince.by/posts/list-of-true-things-about-elixir-logger-handlers-and-backends/" class="inline-onebox" rel="noopener nofollow ugc">List of True Things About Elixir Logger Handlers and Backends | Alex Martsinovich</a></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="341417" data-batch-url="/posts/batch_likers">
                        5
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-blog-posts/150/1155">Post #1154</a>
	                </div>
	            </div>
              <div id="likers-container-341417" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="341417"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #1154"></div>
  </section>
</div>
    <div class="postbit" id="341420" data-post-id="341420">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="roma-glushko" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/roma-glushko/120/35849_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  roma-glushko
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p><a class="mention" href="/u/rhcarvalho" rel="nofollow">@rhcarvalho</a> Hey Rodolfo <img src="https://forum.elixirforum.com/images/emoji/apple/waving_hand.png?v=15" title=":waving_hand:" class="emoji" alt=":waving_hand:" loading="lazy" width="20" height="20"> Appreciate you give it a look!</p>
<blockquote>
<p>did you work on Papercups or only studied from the outside?</p>
</blockquote>
<p>Haha, no I have no affiliations with Papercups.</p>
<p>I had one side gig a few months ago where I needed to think about embedded chat functionality. Papercups gave me a great example of that functionality to learn from. So I decided to dive deeper and review the whole project and codebase as a part of some series I’m doing around reviewing different open source applications and their architectures.</p>
<p>I would say that, besides the article itself, the biggest thing I have discovered is Elixir. Before the overview, I had absolutely zero Elixir experience and had to ramp up as I was working on the review. Elixir turned out to be very elegant and readable language. It’s absolutely amazing how much Elixir/Phoenix can give you with so little effort. I have not seen that before with my prior experience in Python, Golang, Rust, JS/TS (JS ecosystem might be the closest I have seen to this but still it’s not the same).</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="341420" data-batch-url="/posts/batch_likers">
                        5
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-blog-posts/150/1156">Post #1155</a>
	                </div>
	            </div>
              <div id="likers-container-341420" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="341420"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #1155"></div>
  </section>
</div>
    <div class="postbit" id="341421" data-post-id="341421">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="roma-glushko" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/roma-glushko/120/35849_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  roma-glushko
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p><a class="mention" href="/u/martosaur" rel="nofollow">@martosaur</a> I see you actually worked at Zendesk <img src="https://forum.elixirforum.com/images/emoji/apple/smiley.png?v=15" title=":smiley:" class="emoji" alt=":smiley:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="341421" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-blog-posts/150/1157">Post #1156</a>
	                </div>
	            </div>
              <div id="likers-container-341421" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="341421"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #1156"></div>
  </section>
</div>
    <div class="postbit" id="341422" data-post-id="341422">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="martosaur" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/martosaur/120/41071_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  martosaur
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Huh? What gave me away?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="341422" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-blog-posts/150/1158">Post #1157</a>
	                </div>
	            </div>
              <div id="likers-container-341422" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="341422"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #1157"></div>
  </section>
</div>
    <div class="postbit" id="341425" data-post-id="341425">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="rhcarvalho" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/rhcarvalho/120/32243_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  rhcarvalho
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Welcome to the Elixir community! <img src="https://forum.elixirforum.com/images/emoji/apple/purple_heart.png?v=15" title=":purple_heart:" class="emoji" alt=":purple_heart:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="341425" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-blog-posts/150/1159">Post #1158</a>
	                </div>
	            </div>
              <div id="likers-container-341425" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="341425"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #1158"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/150/load_more?page=110">Load more posts (131 remaining)</a>
</div></template></turbo-stream>