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


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="wmnnd" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/wmnnd/120/4985_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  wmnnd
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thanks for your suggestion! There is a ticket for implementing email automations here: <a href="https://github.com/pentacent/keila/issues/132" class="inline-onebox" rel="noopener nofollow ugc">Add Email Automations · Issue #132 · pentacent/keila · GitHub</a></p>
<p>I’d be happy to get some feedback on that over there <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" 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="251777" 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/keila-open-source-mailchimp-alternative-built-in-elixir/37476/22">Post #21</a>
	                </div>
	            </div>
              <div id="likers-container-251777" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="251777"
                     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 #21"></div>
  </section>
</div>
    <div class="postbit" id="251789" data-post-id="251789">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="nedem18" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  nedem18
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>When are you planning for 1.0 release?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="251789" 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/keila-open-source-mailchimp-alternative-built-in-elixir/37476/23">Post #22</a>
	                </div>
	            </div>
              <div id="likers-container-251789" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="251789"
                     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 #22"></div>
  </section>
</div>
    <div class="postbit" id="251800" data-post-id="251800">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="wmnnd" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/wmnnd/120/4985_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  wmnnd
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>When it’s ready, i.e. when all the features from the 1.0 roadmap have been implemented: <a href="https://github.com/pentacent/keila/projects/1" class="inline-onebox" rel="noopener nofollow ugc">Roadmap to 1.0 · GitHub</a></p>
<p>If you like, you can help by contributing code (e. g. with these issues tagged as <em>good first issue</em>: <a href="https://github.com/pentacent/keila/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22" rel="noopener nofollow ugc">Good first issues for Keila</a>) or by <a href="https://github.com/sponsors/pentacent" rel="noopener nofollow ugc">becoming a sponsor on GitHub</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="251800" data-batch-url="/posts/batch_likers">
                        2
                      </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/keila-open-source-mailchimp-alternative-built-in-elixir/37476/24">Post #23</a>
	                </div>
	            </div>
              <div id="likers-container-251800" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="251800"
                     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 #23"></div>
  </section>
</div>
    <div class="postbit" id="252498" data-post-id="252498">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="nedem18" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  nedem18
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Would love to.|<br>
I am still learning Elixir, but I can help with the documentation</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="252498" 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/keila-open-source-mailchimp-alternative-built-in-elixir/37476/25">Post #24</a>
	                </div>
	            </div>
              <div id="likers-container-252498" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="252498"
                     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 #24"></div>
  </section>
</div>
    <div class="postbit" id="252595" data-post-id="252595">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="nedem18" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  nedem18
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I would suggest you to do a peak memory load benchmark test. You can use it to further market Keila.</p>
<p>The only reason why I would go for Keila instead of Mautic is the memory requirements. If it would low as in case of List monk(57mb of RAM usage in peak load) then people would not hesitate to go for it.</p>
<p>I get it that you are giving hosting options but a whole lot of people shift to OS Project for self-hosting options.</p>
<p>Hope to see some benchmark soon. <img src="https://forum.elixirforum.com/images/emoji/apple/folded_hands.png?v=15" title=":folded_hands:" class="emoji" alt=":folded_hands:" loading="lazy" width="20" height="20"><img src="https://forum.elixirforum.com/images/emoji/apple/folded_hands.png?v=15" title=":folded_hands:" class="emoji" alt=":folded_hands:" 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="252595" 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/keila-open-source-mailchimp-alternative-built-in-elixir/37476/26">Post #25</a>
	                </div>
	            </div>
              <div id="likers-container-252595" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="252595"
                     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 #25"></div>
  </section>
</div>
    <div class="postbit" id="275118" data-post-id="275118">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="wmnnd" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/wmnnd/120/4985_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  wmnnd
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<h1><a name="p-275118-keila-011-better-markdown-editor-uploads-amazing-analytics-1" class="anchor" href="#p-275118-keila-011-better-markdown-editor-uploads-amazing-analytics-1" aria-label="Heading link" rel="nofollow"></a>Keila 0.11: Better Markdown Editor, Uploads, Amazing Analytics</h1>
<p>Since the last update I posted here, quite a few improvements have made it into Keila:</p>
<ul>
<li><a href="https://www.keila.io/updates/markdown-as-you-type" rel="noopener nofollow ugc">Improved Markdown Editor</a> with Markdown-as-you-type feature</li>
<li><a href="https://www.keila.io/updates/image-uploads" rel="noopener nofollow ugc">Image uploads</a></li>
<li><a href="https://www.keila.io/updates/liquid-subjects" rel="noopener nofollow ugc">Dynamic email subjects</a></li>
<li><a href="https://www.keila.io/updates/analytics-contact-activity" rel="noopener nofollow ugc">Improved analytics</a></li>
<li>Any many other changes that you can find in our <a href="https://github.com/pentacent/keila/blob/main/CHANGELOG.md" rel="noopener nofollow ugc">changelog</a></li>
</ul>
<p>Elixir has been updated to 1.14 which actually <a href="https://www.keila.io/updates/breaking-hashid-update" rel="noopener nofollow ugc">uncovered a bug</a> with the configuration that I might write a separate blog post about one of these days.</p>
<h2><a name="p-275118-new-campaign-analytics-page-2" class="anchor" href="#p-275118-new-campaign-analytics-page-2" aria-label="Heading link" rel="nofollow"></a>New Campaign Analytics Page</h2>
<p><img src="https://www.keila.io/_nuxt/img/2023-01-17-analytics.7c57bf4.png" alt="Improved Analytics Page in Keila" width="531" height="370"></p>
<h2><a name="p-275118-opportunities-to-contribute-3" class="anchor" href="#p-275118-opportunities-to-contribute-3" aria-label="Heading link" rel="nofollow"></a>Opportunities to contribute</h2>
<p>If you would like to contribute to the development of Keila, there are <a href="https://github.com/pentacent/keila/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22" rel="noopener nofollow ugc">a couple of issues</a> on GitHub that I’ve marked as “help wanted”. Bug reports and feature suggestions are of course also very welcome.</p>
<h2><a name="p-275118-whats-next-4" class="anchor" href="#p-275118-whats-next-4" aria-label="Heading link" rel="nofollow"></a>What’s next?</h2>
<p>I’m currently working on adding a new block-style campaign editor. If you’re interested, you can follow along in <a href="https://github.com/pentacent/keila/pull/179" rel="noopener nofollow ugc">this WIP PR</a>, on <a href="https://twitter.com/keila_io" rel="noopener nofollow ugc">Twitter</a>, or on <a href="https://fosstodon.org/@keila" rel="noopener nofollow ugc">Mastodon</a>.</p>
<h2><a name="p-275118-give-it-a-try-5" class="anchor" href="#p-275118-give-it-a-try-5" aria-label="Heading link" rel="nofollow"></a>Give it a try!</h2>
<p>You can run Keila locally or on your sever - directly from the GitHub repo or following the <a href="https://www.keila.io/docs/installation" rel="noopener nofollow ugc">installation docs</a> for the official Docker image.<br>
You can also try the managed version of Keila on <a href="https://www.keila.io/try" rel="noopener nofollow ugc">keila.io</a>.</p>
<p>If you have any questions, please feel free to ask them here or to send me a PM <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" 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="275118" data-batch-url="/posts/batch_likers">
                        6
                      </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/keila-open-source-mailchimp-alternative-built-in-elixir/37476/27">Post #26</a>
	                </div>
	            </div>
              <div id="likers-container-275118" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="275118"
                     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 #26"></div>
  </section>
</div>
    <div class="postbit" id="287048" data-post-id="287048">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="wmnnd" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/wmnnd/120/4985_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  wmnnd
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<h1><a name="p-287048-keila-012-block-editor-preview-texts-1" class="anchor" href="#p-287048-keila-012-block-editor-preview-texts-1" aria-label="Heading link" rel="nofollow"></a>Keila 0.12: Block Editor &amp; Preview Texts</h1>
<h2><a name="p-287048-wysiwyg-block-editor-2" class="anchor" href="#p-287048-wysiwyg-block-editor-2" aria-label="Heading link" rel="nofollow"></a>WYSIWYG Block Editor</h2>
<p>This release includes one of the most anticipated new features for Keila: a <a href="https://www.keila.io/updates/block-editor" rel="noopener nofollow ugc">WYSIWYG Block Editor</a>.</p>
<p>The new Editor is based on Editor.js and plays nicely with Keila’s LiveView setup. Keila is still using Alpine.js in many places, but in this release we’ve started using Phoenix’s JS integration which is an absolute blessing.</p>
<p>With the new editor comes a new base layout; all campaign emails are now based on the wonderful <a href="https://www.cerberusemail.com/hybrid-responsive" rel="noopener nofollow ugc">Cerberus Hybrid</a> template - which helped enormously in making sure emails work across all clients, even though real-world debugging still ended up taking way too much time. Thanks Microsoft Outlook!</p>
<p></p><div class="lightbox-wrapper"><a class="lightbox" href="https://forum.elixirforum.com/uploads/default/original/3X/7/5/75c650c51df69ac985091a0de24118c7dc7f05e2.jpeg" data-download-href="https://forum.elixirforum.com/uploads/default/75c650c51df69ac985091a0de24118c7dc7f05e2" title="2023-05-01-block-editor" rel="nofollow"><img src="https://forum.elixirforum.com/uploads/default/optimized/3X/7/5/75c650c51df69ac985091a0de24118c7dc7f05e2_2_382x600.jpeg" alt="2023-05-01-block-editor" data-base62-sha1="gNSKGKTppTapAgkyDgZmrnMZfYC" width="382" height="600" srcset="https://forum.elixirforum.com/uploads/default/optimized/3X/7/5/75c650c51df69ac985091a0de24118c7dc7f05e2_2_382x600.jpeg, https://forum.elixirforum.com/uploads/default/optimized/3X/7/5/75c650c51df69ac985091a0de24118c7dc7f05e2_2_573x900.jpeg 1.5x, https://forum.elixirforum.com/uploads/default/optimized/3X/7/5/75c650c51df69ac985091a0de24118c7dc7f05e2_2_764x1200.jpeg 2x" data-dominant-color="CAD3CF"><div class="meta"><svg class="fa d-icon d-icon-far-image svg-icon" aria-hidden="true"><use href="#far-image"></use></svg><span class="filename">2023-05-01-block-editor</span><span class="informations">800×1255 99.5 KB</span><svg class="fa d-icon d-icon-discourse-expand svg-icon" aria-hidden="true"><use href="#discourse-expand"></use></svg></div></a></div><p></p>
<h2><a name="p-287048-email-preview-texts-3" class="anchor" href="#p-287048-email-preview-texts-3" aria-label="Heading link" rel="nofollow"></a>Email Preview Texts</h2>
<p>Another nice feature addition are <a href="https://www.keila.io/updates/preview-text" rel="noopener nofollow ugc">email preview texts</a>, making sure your contacts see a relevant text snippet in their inbox or notifications.</p>
<p></p><div class="lightbox-wrapper"><a class="lightbox" href="https://forum.elixirforum.com/uploads/default/original/3X/2/6/26978a975fd6670b37568252271d6b7769dde8fd.png" data-download-href="https://forum.elixirforum.com/uploads/default/26978a975fd6670b37568252271d6b7769dde8fd" title="2023-05-01-preview-text" rel="nofollow"><img src="https://forum.elixirforum.com/uploads/default/optimized/3X/2/6/26978a975fd6670b37568252271d6b7769dde8fd_2_345x225.png" alt="2023-05-01-preview-text" data-base62-sha1="5voOPc65ahz4NA7Q7i6VZPtQtJj" width="345" height="225" srcset="https://forum.elixirforum.com/uploads/default/optimized/3X/2/6/26978a975fd6670b37568252271d6b7769dde8fd_2_345x225.png, https://forum.elixirforum.com/uploads/default/optimized/3X/2/6/26978a975fd6670b37568252271d6b7769dde8fd_2_517x337.png 1.5x, https://forum.elixirforum.com/uploads/default/optimized/3X/2/6/26978a975fd6670b37568252271d6b7769dde8fd_2_690x450.png 2x" data-dominant-color="0C0C0D"><div class="meta"><svg class="fa d-icon d-icon-far-image svg-icon" aria-hidden="true"><use href="#far-image"></use></svg><span class="filename">2023-05-01-preview-text</span><span class="informations">750×491 26.2 KB</span><svg class="fa d-icon d-icon-discourse-expand svg-icon" aria-hidden="true"><use href="#discourse-expand"></use></svg></div></a></div><p></p>
<h2><a name="p-287048-want-to-contribute-4" class="anchor" href="#p-287048-want-to-contribute-4" aria-label="Heading link" rel="nofollow"></a>Want to contribute?</h2>
<p>If you want to contribute to an Open Source Phoenix project, even if you don’t have a lot of experience yet, there are some issues in our GitHub tracker marked as <a href="https://github.com/pentacent/keila/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22" rel="noopener nofollow ugc">good first issue</a>. Check them out!</p>
<h2><a name="p-287048-give-it-a-try-5" class="anchor" href="#p-287048-give-it-a-try-5" aria-label="Heading link" rel="nofollow"></a>Give it a try!</h2>
<p>You can run Keila locally or on your sever - directly from the GitHub repo or following the <a href="https://www.keila.io/docs/installation" rel="noopener nofollow ugc">installation docs </a> for the official Docker image.<br>
You can also try the managed version of Keila on <a href="https://www.keila.io/try" rel="noopener nofollow ugc">keila.io </a>.</p>
<p>If you have any questions, please feel free to ask them here or to send me a PM <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" 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="287048" data-batch-url="/posts/batch_likers">
                        9
                      </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/keila-open-source-mailchimp-alternative-built-in-elixir/37476/28">Post #27</a>
	                </div>
	            </div>
              <div id="likers-container-287048" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="287048"
                     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 #27"></div>
  </section>
</div>
    <div class="postbit" id="330200" data-post-id="330200">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>First of all, thank you for building Keila! It does seem to be a wonderful tool for managing newsletter campaigns.</p>
<p>I’m currently working on a simple Elixir-powered email template editor, where users can choose a predefined layout (much like the hybrid template in Keila) and build the template on top of that, and would therefore like to ask: how satisfied are you with your current Editor.js setup?</p>
<p>I find the approach of outputting JSON blocks from the editor, then running the pipeline <code>blocks |&gt; render_liquid() |&gt; add_styles() |&gt; render_html()</code> quite appealing due to nice separation of concerns, and would like to follow it as well.</p>
<p>Have you identified any benefits and pain points of Editor.js? I’m evaluating it and Tiptap, and so far they seem comparable in the simple cases. Perhaps Tiptap is more of a batteries-included tool, whereas in Editor.js you need to explicitly add plugins for more complex elements like column layouts (<a href="https://github.com/calumk/editorjs-columns" class="inline-onebox" rel="noopener nofollow ugc">GitHub - calumk/editorjs-columns · GitHub</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="330200" 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/keila-open-source-mailchimp-alternative-built-in-elixir/37476/29">Post #28</a>
	                </div>
	            </div>
              <div id="likers-container-330200" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="330200"
                     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 #28"></div>
  </section>
</div>
    <div class="postbit" id="330206" data-post-id="330206">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="wmnnd" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/wmnnd/120/4985_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  wmnnd
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>The fact thatEditor.js doesn’t natively support columns is definitely a pain point. Keila has a custom multi-column layout block for Editor.js but because of the lack of native support, the experience isn’t quite as smooth as would be ideal. I still think Editor.js was a good choice to bring an MVP block-style editor to Keila.</p>
<p>The next editor I’ll probably add is GrapesJS which already has a preset for an MJML editor but adding that is much more involved, both because GrapesJS is much heavier in terms of styling and integrating and because adding MJML support will require the use of an external service for rendering.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="330206" 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/keila-open-source-mailchimp-alternative-built-in-elixir/37476/30">Post #29</a>
	                </div>
	            </div>
              <div id="likers-container-330206" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="330206"
                     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 #29"></div>
  </section>
</div>
    <div class="postbit" id="338384" data-post-id="338384">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="wmnnd" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/wmnnd/120/4985_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  wmnnd
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<h1><a name="p-338384-keila-015-mjml-support-double-opt-in-1" class="anchor" href="#p-338384-keila-015-mjml-support-double-opt-in-1" aria-label="Heading link" rel="nofollow"></a>Keila 0.15: MJML Support, Double Opt-In</h1>
<h2><a name="p-338384-mjml-support-2" class="anchor" href="#p-338384-mjml-support-2" aria-label="Heading link" rel="nofollow"></a>MJML Support</h2>
<p>This release includes full support for creating emails with <a href="https://www.keila.io/updates/mjml" rel="noopener nofollow ugc">MJML</a>. Currently, I’ve integrated a code editor (based on Codemirror) and a live preview with LiveView. Rendering MJML is done via the <code>mjml</code> package which uses the Rust implementation of MJML (<a rel="nofollow">mrml</a>).</p>
<p><img src="https://www.keila.io/_astro/2024-08-21-mjml._nyqCljo_Z2kUjDt.webp" alt="MJML Editor and preview" width="" height=""></p>
<h2><a name="p-338384-custom-signup-fields-3" class="anchor" href="#p-338384-custom-signup-fields-3" aria-label="Heading link" rel="nofollow"></a>Custom Signup Fields</h2>
<p>You can now configure custom fields in the Keila Form Builder. This was an interesting feature to build, because I wanted to be able to use Ecto for validating the custom fields, but Ecto doesn’t support string keys (only atom keys). That’s why I ended up building an <code>EctoStringMap</code> module which allows casting params into a map with dynamically defined string keys. Check it out here: <a href="https://github.com/pentacent/keila/blob/eabf9b3896ab17d38f1c253c95dcb1699c3637a9/lib/keila/contacts/ecto_string_map.ex" class="inline-onebox" rel="noopener nofollow ugc">keila/lib/keila/contacts/ecto_string_map.ex at eabf9b3896ab17d38f1c253c95dcb1699c3637a9 · pentacent/keila · GitHub</a></p>
<p><img src="https://www.keila.io/_astro/2024-01-24-custom-fields.D51XBc0V_Z2uh9QH.webp" alt="Newsletter form with custom fields" width="" height=""></p>
<h2><a name="p-338384-double-opt-in-4" class="anchor" href="#p-338384-double-opt-in-4" aria-label="Heading link" rel="nofollow"></a>Double Opt-In</h2>
<p>Keila now has support for double opt-in which requires users to verify their email when they sign up.</p>
<hr>
<p>If you have any questions or want to help out, let me know <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" 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="338384" data-batch-url="/posts/batch_likers">
                        10
                      </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/keila-open-source-mailchimp-alternative-built-in-elixir/37476/31">Post #30</a>
	                </div>
	            </div>
              <div id="likers-container-338384" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="338384"
                     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 #30"></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/37476/load_more?page=4">Load more posts (1 remaining)</a>
</div></template></turbo-stream>