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


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="grych" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/grych/120/5610_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  grych
                    <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 class="user-title">
									<span>Creator of Drab</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Girls and boys,<br>
I’ve just released v0.3.0 of <a href="https://tg.pl/drab" rel="noopener nofollow ugc">Drab</a> - the addition to Phoenix to live control of browser’s User Interface from Elixir, from the server-side. This version comes with few API changes, new features and many bug fixes.</p>
<h4><a name="p-26599-waiters-1" class="anchor" href="#p-26599-waiters-1" aria-label="Heading link" rel="nofollow"></a>Waiters</h4>
<p>First at all, 0.3.0 introduces Drab Waiter: the functionality which allows you to wait for the user input. That could be useful, when - for example - you made a changes in the database, and want to ask the user what to do: rollback or commit? (forgive the pseudocode, it’s just an example).</p>
<pre><code>Database.sql(conn, "UPDATE users SET password='';")
waiter(socket) do
  on "#commit_button", "click", fn (sender) -&gt;
    Database.commit(conn)
  end
  on "#rollback_button", "click", fn (sender) -&gt;
    Database.rollback(conn)
  end
  on_timeout 5000, fn -&gt; 
    Database.rollback(conn)
  end
end
</code></pre>
<p>This function will stop processing until user press one of the buttons - or until timeout.</p>
<h4><a name="p-26599-drabqueryselect-api-changed-2" class="anchor" href="#p-26599-drabqueryselect-api-changed-2" aria-label="Heading link" rel="nofollow"></a>Drab.Query.select API changed</h4>
<p>The second major change is the <code>Drab.Query.select</code> API. Before, <code>select(:html, from: "p")</code> returned a list of all htmls found on this selector. Now, there are two versions of each jQuery method: singular and plural. Singular behaves exactly like jQuery, returning the value of the first found DOM object. It is an exact equevalent of running <code>$("p").html()</code> in the browser.</p>
<p>Drab 0.3.0 introduces plural version of methods. They return <strong>all found</strong> DOM object values. In the same example, you may use <code>select(:htmls, from: "p")</code> to get all “p” elements from the DOM tree and return the value of jQuery <code>.html()</code> method, executed on every single object.</p>
<p>Plural versions of the methods return a Map of <code>%{name|id|__undefined_[number] =&gt; value}</code>. Keys of the map are created of DOM object’s attributes: first <code>name</code> or, if not found: <code>id</code> or, if both id and name not found, system will construct a special key with incremental number. Let’s check it on example:</p>
<pre><code>### &lt;span name="first_span" class="qs_2 small-border"&gt;First span with class qs_2&lt;/span&gt;
### &lt;span id="second_span" class="qs_2 small-border"&gt;Second span with class qs_2&lt;/span&gt;
socket |&gt; select(:html, from: ".qs_2")
# "First span with class qs_2"
socket |&gt; select(:htmls, from: ".qs_2")
# %{"first_span" =&gt; "First span with class qs_2", "second_span" =&gt; "Second span with class qs_2"}
</code></pre>
<h4><a name="p-26599-callbacks-3" class="anchor" href="#p-26599-callbacks-3" aria-label="Heading link" rel="nofollow"></a>Callbacks</h4>
<p>Drab is now equipped with callbacks to be used in the Commander: <code>before_handler</code> and <code>after_handler</code>. Usage is quite obvious, it is only worth to mention that <code>before_handler</code> must return truly value (everything except <code>false</code> and <code>nil</code>). Otherwise, the proceeding event handler will never be processed (handy for checking the authorization etc). By the other hand, <code>after_handler</code> is launched every time after handler function finish, and it receives the handler function return value as an argument.</p>
<h4><a name="p-26599-more-4" class="anchor" href="#p-26599-more-4" aria-label="Heading link" rel="nofollow"></a>More</h4>
<p>Please check the <a href="https://github.com/grych/drab/releases/tag/v0.3.0" rel="noopener nofollow ugc">release notes</a> for more details.</p>
<h4><a name="p-26599-plans-for-the-future-5" class="anchor" href="#p-26599-plans-for-the-future-5" aria-label="Heading link" rel="nofollow"></a>Plans for the future</h4>
<p>Unfortunately, the TODO list is rather growing than shrinking. In the following weeks I would like to concentrate on building the test environment. After this, I’d like to completely refactor Drab.Query and Drab.Template.</p>
<h4><a name="p-26599-feedback-6" class="anchor" href="#p-26599-feedback-6" aria-label="Heading link" rel="nofollow"></a>Feedback</h4>
<p>Any feedback is strongly welcome! Most of the suggestion of users in this forum are included in this release of Drab.</p>
<hr>
<p>One more thing: only Elixir/Phoenix can make it possible!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="26599" 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/drab-remote-controlled-frontend-framework-for-phoenix/3277/42">Post #41</a>
	                </div>
	            </div>
              <div id="likers-container-26599" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="26599"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-most-liked cat-most-liked" title="One of the top 3 liked posts in this thread!"></div>
  </section>
</div>
    <div class="postbit" id="26608" data-post-id="26608">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p><a class="mention" href="/u/grych" rel="nofollow">@grych</a>:  <code>:html</code> and <code>:htmls</code> …<br>
I prefer: <code>:element</code> and <code>:elements</code><br>
or: shorter forms of them like <code>:elem</code><br>
What do you think?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="26608" 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/drab-remote-controlled-frontend-framework-for-phoenix/3277/43">Post #42</a>
	                </div>
	            </div>
              <div id="likers-container-26608" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="26608"
                     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 #42"></div>
  </section>
</div>
    <div class="postbit" id="26611" data-post-id="26611">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="grych" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/grych/120/5610_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  grych
                    <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 class="user-title">
									<span>Creator of Drab</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Well, because <code>Drab.Query</code> corresponds to jQuery, for me it would be better to stick with jQuery terminology. It is just easier to use for a person who already knows jQuery. And it is simpler, <code>select(:html, from: "selector")</code> translates directly to <code>$("selector").html()</code>, <code>select(:val, from: "selector")</code> - to <code>$("selector").val()</code>, etc etc</p>
<p>Btw you always have <code>select(:all, from: "selector")</code>, which returns all know jQuery methods, including <code>html</code>, <code>val</code>, <code>text</code>, <code>position</code>, etc etc</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="26611" 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/drab-remote-controlled-frontend-framework-for-phoenix/3277/44">Post #43</a>
	                </div>
	            </div>
              <div id="likers-container-26611" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="26611"
                     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 #43"></div>
  </section>
</div>
    <div class="postbit" id="27317" data-post-id="27317">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="grych" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/grych/120/5610_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  grych
                    <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 class="user-title">
									<span>Creator of Drab</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<h3><a name="p-27317-new-release-031httpsgithubcomgrychdrabreleasestagv031-1" class="anchor" href="#p-27317-new-release-031httpsgithubcomgrychdrabreleasestagv031-1" aria-label="Heading link" rel="nofollow"></a>New<a href="https://github.com/grych/drab/releases/tag/v0.3.1" rel="noopener nofollow ugc"> release 0.3.1</a></h3>
<p>This release is about debugging. The most important feature is to test/debug Drab related functions directly in IEx! If you start Phoenix via REPL with <code>iex -S mix phoenix.server</code> and open a browser to <code>http://localhost:4000</code>, Drab shows this debugging information in IEX console:</p>
<pre><code>[debug] 
    Started Drab for /drab, handling events in DrabPoc.PageCommander
    You may debug Drab functions in IEx by copy/paste the following:
import Drab.Core; import Drab.Query; import Drab.Modal; import Drab.Waiter
socket = GenServer.call(pid("0.666.0"), :get_socket)

    Examples:
socket |&gt; select(:htmls, from: "h4")
socket |&gt; execjs("alert('hello from IEx!')")
socket |&gt; alert("Title", "Sure?", buttons: [ok: "Azaliż", cancel: "Poniechaj"])
</code></pre>
<p>Now you can grab this two lines with import and <code>get_socket</code>:</p>
<pre><code>iex(1)&gt; import Drab.Core; import Drab.Query; import Drab.Modal; import Drab.Waiter
Drab.Waiter
iex(2)&gt; socket = GenServer.call(pid("0.666.0"), :get_socket)
%Phoenix.Socket{assigns: %{__action: :index,
   __controller: DrabPoc.PageController, __drab_pid: #PID&lt;0.666.0&gt;,
   ... 
   transport_pid: #PID&lt;0.1548.0&gt;}
</code></pre>
<p>And you are ready to remote control you browser from IEx. Give it a try!</p>
<p>Show JS alert box:</p>
<pre><code> iex(3)&gt; socket |&gt; execjs("alert('hello from IEx!')") 
 nil
</code></pre>
<p>Get all <code>href</code> attributes:</p>
<pre><code>iex(4)&gt; socket |&gt; select(attrs: :href, from: "a")
%{"__undefined_0" =&gt; "http://www.phoenixframework.org/docs",
  "__undefined_1" =&gt; "https://tg.pl/drab",
  "__undefined_2" =&gt; "http://phoenixframework.org/docs/overview",
  "__undefined_3" =&gt; "https://hexdocs.pm/phoenix",
  "__undefined_4" =&gt; "https://github.com/phoenixframework/phoenix",
  "__undefined_5" =&gt; "http://groups.google.com/group/phoenix-talk",
  "__undefined_6" =&gt; "http://webchat.freenode.net/?channels=elixir-lang",
  "__undefined_7" =&gt; "https://twitter.com/elixirphoenix"}
</code></pre>
<p>Run pretty Bootstrap Modal (please notice that IEx waits for your response):</p>
<pre><code>iex(5)&gt; socket |&gt; alert("Title", "Sure?", buttons: [ok: "Azaliż", cancel: "Poniechaj"])
{:ok, %{}}
</code></pre>
<p>There is a project with Phoenix and Drab already installed - <a href="https://github.com/grych/drab-example" rel="noopener nofollow ugc">here on Github</a>. You may use it as a sandbox to get started with Drab.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="27317" 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/drab-remote-controlled-frontend-framework-for-phoenix/3277/45">Post #44</a>
	                </div>
	            </div>
              <div id="likers-container-27317" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="27317"
                     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 #44"></div>
  </section>
</div>
    <div class="postbit" id="27322" data-post-id="27322">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p><a class="mention" href="/u/grych" rel="nofollow">@grych</a> thanks a lot, drab looks very promising! Trying to wrap my head around it.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="27322" 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/drab-remote-controlled-frontend-framework-for-phoenix/3277/46">Post #45</a>
	                </div>
	            </div>
              <div id="likers-container-27322" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="27322"
                     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 #45"></div>
  </section>
</div>
    <div class="postbit" id="27328" data-post-id="27328">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Heh, looks like a fun feature!  ^.^</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="27328" 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/drab-remote-controlled-frontend-framework-for-phoenix/3277/47">Post #46</a>
	                </div>
	            </div>
              <div id="likers-container-27328" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="27328"
                     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 #46"></div>
  </section>
</div>
    <div class="postbit" id="29957" data-post-id="29957">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="grych" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/grych/120/5610_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  grych
                    <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 class="user-title">
									<span>Creator of Drab</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Girls and boys,<br>
there is a new release of <a href="https://tg.pl/drab" rel="noopener nofollow ugc">Drab</a>: <a href="https://github.com/grych/drab/releases/tag/v0.3.2" rel="noopener nofollow ugc">0.3.2</a>. Finally, I’ve made tests for all Drab features. Because of how Drab works, mosts of the tests must be end-to-end (integration). I’ve decided to use <code>Hound</code> and <code>chromedriver</code>.</p>
<p>In addition, there is a build-in Phoenix server. Now to play with Drab in IEx, you don’t need to create your own Phoenix application and add drab to it, anymore. You can just clone the github repo and run the server on it:</p>
<pre><code>git clone git@github.com:grych/drab.git
cd drab
mix deps.get
npm install &amp;&amp; node_modules/brunch/bin/brunch build
iex -S mix phoenix.server
</code></pre>
<p>Open the browser, navigate to <a href="http://localhost:4000" rel="noopener nofollow ugc">http://localhost:4000</a> and follow the instruction in IEX:</p>
<pre><code>import Drab.Core; import Drab.Query; import Drab.Modal; import Drab.Waiter
socket = GenServer.call(pid("0.xxxxx.0"), :get_socket)
</code></pre>
<p>Now you can remote control the browser from IEx:</p>
<pre><code>iex(5)&gt; socket |&gt; alert("Title", "WOW!")                                          
{:ok, %{}}
iex(6)&gt; socket |&gt; select(:text, from: "h3")
"Drab Tests"
iex(7)&gt; socket |&gt; update(:text, set: "It is set from IEx, wow!", on: "h3")  
%Phoenix.Socket{assigns: %{__action: :index, .........
</code></pre>
<p>And, last but not least, Drab has the own logo <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="29957" data-batch-url="/posts/batch_likers">
                        7
                      </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/drab-remote-controlled-frontend-framework-for-phoenix/3277/48">Post #47</a>
	                </div>
	            </div>
              <div id="likers-container-29957" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="29957"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-most-liked cat-most-liked" title="One of the top 3 liked posts in this thread!"></div>
  </section>
</div>
    <div class="postbit" id="29960" data-post-id="29960">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Congrats - just had a play via your instructions, awesome <img src="https://forum.elixirforum.com/uploads/default/original/2X/6/6c3193d1dd46244da3c8c6f719c9f5e2abdd5ae8.gif?v=15" title=":003:" class="emoji emoji-custom" alt=":003:" 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="29960" 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/drab-remote-controlled-frontend-framework-for-phoenix/3277/49">Post #48</a>
	                </div>
	            </div>
              <div id="likers-container-29960" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="29960"
                     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 #48"></div>
  </section>
</div>
    <div class="postbit" id="29969" data-post-id="29969">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Whoo, I’ll update as soon as I finish this horrid SQL stuff that I’m neck-deep in.  <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="29969" 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/drab-remote-controlled-frontend-framework-for-phoenix/3277/50">Post #49</a>
	                </div>
	            </div>
              <div id="likers-container-29969" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="29969"
                     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 #49"></div>
  </section>
</div>
    <div class="postbit" id="31633" data-post-id="31633">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Wow, just found this project. Awesome!! I’m doing something similar in my team chat app, but on a much smaller scale. My app renders the initial page with a standard controller. But all requests after that are rendered server side and pushed to the client through channels.</p>
<p>I’m going to this project a try see how it fits into my app.</p>
<p>Great work!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="31633" 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/drab-remote-controlled-frontend-framework-for-phoenix/3277/51">Post #50</a>
	                </div>
	            </div>
              <div id="likers-container-31633" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="31633"
                     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 #50"></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/3277/load_more?page=6">Load more posts (438 remaining)</a>
</div></template></turbo-stream>