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


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I picked up the book and it’s great so far. Thanks <a class="mention" href="/u/waseigo" rel="nofollow">@waseigo</a> ! Now I wish I’d picked up the Northwind book when it was on discount.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="364155" 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/phoenix-product-codex-develop-and-deploy-a-rest-api-for-product-data-management-with-elixir-and-phoenix-self-published-leanpub/70643/12">Post #11</a>
	                </div>
	            </div>
              <div id="likers-container-364155" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="364155"
                     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 #11"></div>
  </section>
</div>
    <div class="postbit" id="365438" data-post-id="365438">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>thank you <a class="mention" href="/u/waseigo" rel="nofollow">@waseigo</a> for bringing such detail, industry experience and depth to the Elixir ecosystem</p>
<p>its great to see publications using Elixir with serious detail orientated examples</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="365438" 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/phoenix-product-codex-develop-and-deploy-a-rest-api-for-product-data-management-with-elixir-and-phoenix-self-published-leanpub/70643/13">Post #12</a>
	                </div>
	            </div>
              <div id="likers-container-365438" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="365438"
                     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 #12"></div>
  </section>
</div>
    <div class="postbit" id="365454" data-post-id="365454">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Will include in my list <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="365454" 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/phoenix-product-codex-develop-and-deploy-a-rest-api-for-product-data-management-with-elixir-and-phoenix-self-published-leanpub/70643/14">Post #13</a>
	                </div>
	            </div>
              <div id="likers-container-365454" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="365454"
                     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 #13"></div>
  </section>
</div>
    <div class="postbit" id="365496" data-post-id="365496">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thanks for the work done till now , on this AI subject I think <a class="mention" href="/u/zachdaniel" rel="nofollow">@zachdaniel</a> is introducing a nice thing with Ash AI as it tries to let software ready to serve new AI agent customers.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="365496" 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/phoenix-product-codex-develop-and-deploy-a-rest-api-for-product-data-management-with-elixir-and-phoenix-self-published-leanpub/70643/15">Post #14</a>
	                </div>
	            </div>
              <div id="likers-container-365496" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="365496"
                     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 #14"></div>
  </section>
</div>
    <div class="postbit" id="366032" data-post-id="366032">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="waseigo" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/waseigo/120/34129_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  waseigo
                    <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>Hello everyone, I’m dropping in for a quick update. I’ve been preparing for a Real Estate exhibition and a new release for <a href="https://breek.gr/en" class="inline-onebox" rel="noopener nofollow ugc">Breek.gr • The property management software for Greece 🇬🇷</a> for the past 2 weeks, so no time for the book. However, starting next Tuesday, work continues on the next chapter.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="366032" 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/phoenix-product-codex-develop-and-deploy-a-rest-api-for-product-data-management-with-elixir-and-phoenix-self-published-leanpub/70643/16">Post #15</a>
	                </div>
	            </div>
              <div id="likers-container-366032" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="366032"
                     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 #15"></div>
  </section>
</div>
    <div class="postbit" id="366586" data-post-id="366586">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="waseigo" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/waseigo/120/34129_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  waseigo
                    <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>Hello dear readers and API builders!</p>
<p>After a month-long pause, I bring you a new release of <a href="https://leanpub.com/phoenix-product-codex" rel="noopener nofollow ugc"><strong>Phoenix Product Codex</strong></a>, v0.23.4. In this release:</p>
<ul>
<li>
<p><strong>The concept of how we will/might approach bundles/kits of products</strong> in Chapter 1 has been reworked, as the previous explanation still leaned too much on the now-outdated concept of a split between sales items and product variants. With the new concept that we’ll pursue in the upcoming <strong>Chapter 7</strong> (i.e., in 2 releases’ time, target by end of June), we are leaving the old concept of the Python-based <a href="https://overbring.com/software/productitems-api/" rel="noopener nofollow ugc">ProductItems API</a> behind for good, and rely on a purely relational model to deal with variants that themselves can be either component variants (“singles”, i.e. not bundles/kits) or “kit variants”, i.e. variants that themselves are made of other kit variants and/or component variants. The section has been reworked.</p>
</li>
<li>
<p><strong>The new Chapter 5 on modeling the <code>categories</code> table</strong>, the first table of the <strong>Taxonomy</strong> context, has been added. Here, we also implement custom validation functions for 3-character product-category codes using only characters from <a href="https://www.crockford.com/base32.html" rel="noopener nofollow ugc">Crockford’s Base32 alphabet</a> for reducing the probability of typos, and use the <a href="https://en.wikipedia.org/wiki/Jaro-Winkler_distance" rel="noopener nofollow ugc">Jaro-Winkler string distance metric</a> (with <a href="https://hexdocs.pm/elixir/String.html#jaro_distance/2" rel="noopener nofollow ugc"><code>String.jaro_distance/2</code></a>) to help API users prevent typos or duplication of <code>%Category{}</code> records. We also modify <code>router.ex</code> to convert the <code>GET /api/categories/:id</code> route to <code>GET /api/categories/:identifier</code> that makes it possible for API consumers like a website to Read category information by the category <code>:code</code> too, instead of only by the <code>:id</code> (which is only useful for admin purposes of Create, Update and Delete actions). The categories table was a simple one and the chapter is therefore quite short and punchy.</p>
</li>
</ul>
<h2><a name="p-366586-some-insights-about-the-roadmap-1" class="anchor" href="#p-366586-some-insights-about-the-roadmap-1" aria-label="Heading link" rel="nofollow"></a>Some insights about the roadmap</h2>
<p>In the upcoming release, we’ll return to the <strong>Supply</strong> context, where we’ll model the <code>families</code> table of the product families (that belong to product categories). There, due to the growing number of data that the <code>GET /api/families</code> route returns, we’ll start implementing a way to optionally paginate the returned list of results and perhaps also add HATEOAS-compatible link fields to the JSON response (prev/next/first/last), which will also make micro-frontends with <a href="https://htmx.org" rel="noopener nofollow ugc">htmx</a> simpler to implement.</p>
<p>In the release after that one we’ll tackle the biggest chunk of functionality, the <code>variants</code> table for product variants (supplier-provided singles or kits, or our business’ bundles/kits) and its companion <code>kit_compositions</code> table that will tackle the bundling/kitting functionality. I expect that this will be a pretty long chapter, as we need to also write validation functions that prevent self-references and circular references within the “bundle recipes”. Latest by that point, we’ll also start working on caching database query results with a GenServer and then with Cachex, to keep the API performant even with thousands of <code>%Variant{}</code> records in the database.</p>
<p>After the entire ERD will have been implemented together with the business logic (if it makes sense, perhaps even parallel to that), we’ll start adding the rest of the nice-to-have features in the “Coming Soon / Eventually” section; most importantly, authentication with Bearer tokens to prevent data such as list prices and supplier discounts from leaking to specific consumers (e.g. a website), API rate limiting with Hammer, filtering and sorting for the <code>:index</code> action of all endpoints, and tags that can be applied to entire product families and to variants, for example so that the API can provide data usable by a frontend implementing facet search.</p>
<p>There’s plenty more to come, since we also need to associate all relevant records with Ecto’s <code>has_many</code>/<code>belongs_to</code> and provide nested routes like what we did for <code>/api/suppliers/:id/brands</code> and <code>/api/brands/:id/supplier</code>, so I’m marking the book as a tentative 23% complete for now. However, now that my work on <a href="https://breek.gr/en" rel="noopener nofollow ugc">Breek.gr</a> has let off a bit, I can focus on Phoenix Product Codex once again.</p>
<p>Enjoy, and let me know by email or here what you think about the book so far!</p>
<p>Cheers from Athens, Greece,<br>
Isaak, <a href="mailto:isaak@overbring.com" rel="nofollow">isaak@overbring.com</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="366586" 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/phoenix-product-codex-develop-and-deploy-a-rest-api-for-product-data-management-with-elixir-and-phoenix-self-published-leanpub/70643/17">Post #16</a>
	                </div>
	            </div>
              <div id="likers-container-366586" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="366586"
                     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 #16"></div>
  </section>
</div>
    <div class="postbit" id="367332" data-post-id="367332">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Is there assurance that the book will be 100% completed? Sorry for asking this, but I bought leanpub books before that didn’t get completed <img src="https://forum.elixirforum.com/images/emoji/apple/frowning.png?v=15" title=":frowning:" class="emoji" alt=":frowning:" 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="367332" 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/phoenix-product-codex-develop-and-deploy-a-rest-api-for-product-data-management-with-elixir-and-phoenix-self-published-leanpub/70643/18">Post #17</a>
	                </div>
	            </div>
              <div id="likers-container-367332" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="367332"
                     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 #17"></div>
  </section>
</div>
    <div class="postbit" id="367350" data-post-id="367350">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="waseigo" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/waseigo/120/34129_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  waseigo
                    <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>Yes, it will be completed. For my track record, see the <a href="https://forum.elixirforum.com/t/northwind-elixir-traders-pragprog/70887" rel="nofollow">Northwind Elixir Traders thread</a> <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="367350" 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/phoenix-product-codex-develop-and-deploy-a-rest-api-for-product-data-management-with-elixir-and-phoenix-self-published-leanpub/70643/19">Post #18</a>
	                </div>
	            </div>
              <div id="likers-container-367350" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="367350"
                     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 #18"></div>
  </section>
</div>
    <div class="postbit" id="368370" data-post-id="368370">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Will PragProg also be distributing it once it is completed? <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="368370" 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/phoenix-product-codex-develop-and-deploy-a-rest-api-for-product-data-management-with-elixir-and-phoenix-self-published-leanpub/70643/20">Post #19</a>
	                </div>
	            </div>
              <div id="likers-container-368370" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="368370"
                     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 #19"></div>
  </section>
</div>
    <div class="postbit" id="368496" data-post-id="368496">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="waseigo" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/waseigo/120/34129_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  waseigo
                    <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>It’s done well so far, with great feedback, despite only being available through Leanpub for now, and only an estimated 28% complete. We’ll see! <img src="https://forum.elixirforum.com/images/emoji/apple/grin.png?v=15" title=":grin:" class="emoji" alt=":grin:" 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="368496" 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/phoenix-product-codex-develop-and-deploy-a-rest-api-for-product-data-management-with-elixir-and-phoenix-self-published-leanpub/70643/21">Post #20</a>
	                </div>
	            </div>
              <div id="likers-container-368496" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="368496"
                     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 #20"></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/70643/load_more?page=3">Load more posts (17 remaining)</a>
</div></template></turbo-stream>