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


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thanks, that looks great!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="340788" 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/backpex-a-highly-customizable-admin-panel-for-phoenix-liveview-applications/64314/32">Post #31</a>
	                </div>
	            </div>
              <div id="likers-container-340788" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="340788"
                     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 #31"></div>
  </section>
</div>
    <div class="postbit" id="341547" data-post-id="341547">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thanks, I’m really excited to try this in my app!</p>
<p>Just wondering - the current installation guide says to follow DaisyUI’s instruction installations. But when I follow those instructions as written, it applies DaisyUI styles to my entire app, not just the admin pages, which isn’t what I want as my main app already has its own styles.</p>
<p>Is there a  simple way to install DaisyUI so that it only applies to my Backpex routes and not my whole?</p>
<p>I came up with my own solution involving making a separate tailwind config file called <code>tailwind.backpex.config.js</code>, compiling another CSS file that’s separate from the normal <code>app.css</code> then rendering my backpex routes with a layout that only loads the new CSS file. It works, but I’m just wondering if there’s some obvious simpler way that I don’t know about.</p>
<p>If not I’m happy to write up my own solution in more detail, maybe as a PR for the Backpex docs?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="341547" 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/backpex-a-highly-customizable-admin-panel-for-phoenix-liveview-applications/64314/33">Post #32</a>
	                </div>
	            </div>
              <div id="likers-container-341547" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="341547"
                     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 #32"></div>
  </section>
</div>
    <div class="postbit" id="341589" data-post-id="341589">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I also run two different tailwind configs for admin and the main site, I also run two different javascript files because some custom fields have deps that I don’t need in the main site and I probably do the same thing that you do, split the files and edit the config and aliases.</p>
<p>I don’t think there’s anything wrong with it, the <a href="https://tailwindcss.com/docs/functions-and-directives#config" rel="noopener nofollow ugc">tailwind docs</a> even provide a way to use different configs when using the tailwind cli without passing it in the command line.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="341589" 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/backpex-a-highly-customizable-admin-panel-for-phoenix-liveview-applications/64314/34">Post #33</a>
	                </div>
	            </div>
              <div id="likers-container-341589" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="341589"
                     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 #33"></div>
  </section>
</div>
    <div class="postbit" id="341933" data-post-id="341933">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Okay so if anyone else is wondering how to do this, here’s what I did:</p>
<ol>
<li>copy <code>assets/tailwind.config.js</code> to a new file <code>assets/tailwind.backpex.config.js</code>.</li>
<li>Update the new config file like so:</li>
</ol>
<pre data-code-wrap="elixir"><code class="lang-elixir">  content: [
    "./js/**/*.js",
    "../lib/*_web.ex",
    "../lib/*_web/**/*.*ex",
+   "../deps/backpex/**/*.*ex"
  ],
  …
  plugins: [
+   require('daisyui')
    …
</code></pre>
<ol start="3">
<li>Add a new tailwind command in <code>config/config.exs</code> that compiles backpex-related CSS (including DaisyUI) to <code>backpex.css</code>:</li>
</ol>
<pre data-code-wrap="elixir"><code class="lang-elixir"> config :tailwind,
   version: "3.4.0",
   default: [
     args: ~w(
       --config=tailwind.config.js
       --input=css/app.css
       --output=../priv/static/assets/app.css
     ),
     cd: Path.expand("../assets", __DIR__)
-  ]
+  ],
+  backpex: [
+    args: ~w(
+      --config=tailwind.backpex.config.js
+      --input=css/app.css
+      --output=../priv/static/assets/backpex.css
+    ),
+    cd: Path.expand("../assets", __DIR__)
+  ]
</code></pre>
<ol start="4">
<li>Add a new watcher in <code>config/dev.exs</code>:</li>
</ol>
<pre data-code-wrap="elixir"><code class="lang-elixir"> config :my_app, MyAppWeb.Endpoint,
   …
   watchers: [
     esbuild: {Esbuild, :install_and_run, [:default, ~w(--sourcemap=inline --watch)]},
     tailwind: {Tailwind, :install_and_run, [:default, ~w(--watch)]},
+    tailwind_backpex: {Tailwind, :install_and_run, [:backpex, ~w(--watch)]}
   ]

</code></pre>
<p>Then add this line in your backpex layout so it loads the new CSS:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">&lt;link phx-track-static rel="stylesheet" href={~p"/assets/backpex.css"} /&gt;
</code></pre>
<p>Hope that helps someone.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="341933" 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/backpex-a-highly-customizable-admin-panel-for-phoenix-liveview-applications/64314/35">Post #34</a>
	                </div>
	            </div>
              <div id="likers-container-341933" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="341933"
                     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 #34"></div>
  </section>
</div>
    <div class="postbit" id="344334" data-post-id="344334">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Flo0807" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Flo0807/120/28461_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Flo0807
                    <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">
								<h2><a name="p-344334-backpex-v08-release-starting-to-support-ash-1" class="anchor" href="#p-344334-backpex-v08-release-starting-to-support-ash-1" aria-label="Heading link" rel="nofollow"></a>Backpex v0.8 release - Starting to support Ash</h2>
<p>We’ve just released a new version of Backpex. We have asked for feedback many times in the past, and by far the most requested feature was Ash support.</p>
<p>So this release lays the foundation to support multiple data sources (e.g. Ash).</p>
<p>With v0.8 we introduce an adapter module that sits between the UI and the data. We tried to move all current Ecto specific code into an Ecto adapter and have already started to implement an Ash adapter.</p>
<p>We added a new helpdesk section to our demo application that lists tickets that are retrieved from an Ash resource.</p>
<p>There is still some Ecto code that we need to move to the Ecto adapter. Moreover, the adapter pattern / API in Backpex is in an early alpha stage and is likely to change in the future.</p>
<p>In addition, the ash adapter is limited to listing and displaying items. You can’t edit items, use filters or delete items. Therefore, we recommend that you do not use the Ash adapter in production code. If you use the Ecto adapter, everything works as before.</p>
<p>However, we wanted to release these WIP changes as early as possible to get feedback from you and let you experiment with them. What are you looking for besides editing, filtering and deleting?</p>
<p>This release has some breaking changes, so make sure to read the <a href="https://hexdocs.pm/backpex/v0-8.html" rel="noopener nofollow ugc">upgrade guide</a>. The guide also contains more information about the adapter pattern.</p>
<p>Release Notes: <a href="https://github.com/naymspace/backpex/releases/tag/0.8.0" class="inline-onebox" rel="noopener nofollow ugc">Release 0.8.0 · naymspace/backpex · GitHub</a></p>
<p>Upgrade Guide: <a href="https://hexdocs.pm/backpex/v0-8.html" class="inline-onebox" rel="noopener nofollow ugc">Upgrading to v0.8 — Backpex v0.18.3</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="344334" 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/backpex-a-highly-customizable-admin-panel-for-phoenix-liveview-applications/64314/36">Post #35</a>
	                </div>
	            </div>
              <div id="likers-container-344334" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="344334"
                     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 #35"></div>
  </section>
</div>
    <div class="postbit" id="344343" data-post-id="344343">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="zachdaniel" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/zachdaniel/120/31980_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  zachdaniel
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Creator of Ash</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Does the getting started guide need to be updated with these changes? It looks like the live resource example given in the getting started guide doesn’t have the changes applied from the upgrade guide.</p>
<p>EDIT: should also probably change the version listed in the getting started guide to <code>0.8.0</code> <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="344343" 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/backpex-a-highly-customizable-admin-panel-for-phoenix-liveview-applications/64314/37">Post #36</a>
	                </div>
	            </div>
              <div id="likers-container-344343" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="344343"
                     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 #36"></div>
  </section>
</div>
    <div class="postbit" id="344348" data-post-id="344348">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Flo0807" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Flo0807/120/28461_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Flo0807
                    <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 needs to be updated! Fixed in v0.8.1 <img src="https://forum.elixirforum.com/images/emoji/apple/raised_hands.png?v=15" title=":raised_hands:" class="emoji" alt=":raised_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="344348" 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/backpex-a-highly-customizable-admin-panel-for-phoenix-liveview-applications/64314/38">Post #37</a>
	                </div>
	            </div>
              <div id="likers-container-344348" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="344348"
                     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 #37"></div>
  </section>
</div>
    <div class="postbit" id="348424" data-post-id="348424">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I really like this Backpex library, and I’d like to ask whether the following feature would be in scope.</p>
<p>Currently, one has to supply a lot of information for each individual resource (repo, layout, topic, event names, list of fields, etc.), which makes sense because it allows Backpex to be decoupled from the user’s app.</p>
<p>I wonder if one could introspect the ecto schema and automatically generate the list of fields and the corresponding input types (which could be overridden by the user if needed). Also, we could have a <code>MyApp.LiveResource</code> module which could be used in the individual live resources.</p>
<p>I’m thinking of something like this:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">defmodule MyAppWeb.LiveResource do
  use Backpex.AutoLiveResource,
    repo: MyApp.Repo,
    layout: {MyAppWeb.Layouts, :admin}
    # possibly other options, like preferred
    # input types for each ecto field type 
end
</code></pre>
<p>Now we can use the above for super concise resource definitions:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">defmodule MyAppWeb.MyResourceLive do
  use MyAppWeb.LiveResource,
    resource: MyApp.MyContext.MyResource
    # everything else is taken from the
    # common parameters given to the
    # use macro above or inferred from the
    # resource module name.
    # fields are inferred from the ecto schema
    override1: ...,
    override2: ...
    ...
end
</code></pre>
<p>I could implement this if you think it’s in scope, otherwise I’ll just implement this in a different package.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="348424" 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/backpex-a-highly-customizable-admin-panel-for-phoenix-liveview-applications/64314/39">Post #38</a>
	                </div>
	            </div>
              <div id="likers-container-348424" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="348424"
                     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 #38"></div>
  </section>
</div>
    <div class="postbit" id="348703" data-post-id="348703">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I have implemented a new macro, which does pretty much what I’ve explained in the last message:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">defmodule MyAppWeb.LiveResource do
  # Could be added into the Backpex namespace too
  use BackpeXtra.LiveResource,
    repo: MyApp.Repo,
    layout: {MyAppWeb.Layouts, :admin},
    pubsub: MyApp.PubSub
end
</code></pre>
<p>This module will encapsulate all the infomration that’s specific to your app</p>
<p>The next module will use the above module to very succintly declare a new live resource. Lots of things are inferred automatically from the resource module name.</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">defmodule MyAppWeb.MyContext.MyResourceLive do
  use MyAppWeb.LiveResource,
    resource: MyApp.MyContext.MyResource
end
</code></pre>
<p>The <code>use ...</code> macro above generates the following code:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">def __update_changeset(item, attrs, _opts) do
  # The macro has been smart enough to notice that
  # there isn't an `update_changeset/3` function in
  # the ecto schema and that there is a `changeset/2`
  # function. For that reason, we will use that function.
  StartTrials.Roster.Trial.changeset(item, attrs)
end

def __create_changeset(item, attrs, _opts) do
  StartTrials.Roster.Trial.changeset(item, attrs)
end

use Backpex.LiveResource,
  adapter_config: [
    schema: StartTrials.Roster.Trial,
    repo: StartTrials.Repo,
    # Use the wrapper defined in this module, so that we
    # can adapt the `update_changeset/3` function to the
    # functions taht are implemented in the ecto schema.
    update_changeset: &amp;__MODULE__.__update_changeset/3,
    create_changeset: &amp;__MODULE__.__create_changeset/3,
    item_query: &amp;__MODULE__.item_query/3
  ],
  layout: {StartTrialsWeb.Layouts, :admin},
  # topic and event_prefix names inferred from the resource module
  pubsub: [name: StartTrials.PubSub, topic: "trial", event_prefix: "trial_"]

@impl Backpex.LiveResource
def singular_name do
  # Inferred from the resource module
  "Trial"
end

@impl Backpex.LiveResource
def plural_name do
  # Inferred from the resource module
  "Trials"
end

@impl Backpex.LiveResource
def fields do
  # List of fields built automatically from introspecting the
  # fields in the ecto schema. 
  [
    description: %{label: "Description", module: Backpex.Fields.Text},
    name: %{label: "Name", module: Backpex.Fields.Text},
    inserted_at: %{
      except: [:new],
      format: "%Y-%m-%d %H:%M:%S",
      label: "Inserted at",
      module: Backpex.Fields.DateTime,
      readonly: true
    },
    updated_at: %{
      except: [:new],
      format: "%Y-%m-%d %H:%M:%S",
      label: "Updated at",
      module: Backpex.Fields.DateTime,
      readonly: true
    }
  ]
end

# Make this functioin overridable so that the user can implement
# their own fields if our automatic implementation is not a good fit
defoverridable fields: 0
</code></pre>
<p>Now, I plan on implementing overrides for everything so that the initial functionality can be replicated with a minimum amount of code. My goal is to be as succint as this: <a href="https://flask-appbuilder.readthedocs.io/en/latest/intro.html" class="inline-onebox" rel="noopener nofollow ugc">Introduction — Flask AppBuilder</a> (Python code)</p>
<p>PS: the generated code at the bottom was obviously generated from a different macro evocation, I can’t edit it now but it does get the idea across</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="348703" data-batch-url="/posts/batch_likers">
                        4
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/backpex-a-highly-customizable-admin-panel-for-phoenix-liveview-applications/64314/40">Post #39</a>
	                </div>
	            </div>
              <div id="likers-container-348703" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="348703"
                     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 #39"></div>
  </section>
</div>
    <div class="postbit" id="349392" data-post-id="349392">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Flo0807" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Flo0807/120/28461_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Flo0807
                    <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>Hey!</p>
<p>I can see the problem that providing all the information can be tedious at first, but I also think that hiding the live resource configuration behind another module is not perfect either. Especially when it comes to supporting multiple data sources, like Ecto or Ash.</p>
<p>The setup is not that easy anyway, and creating another abstraction (live resources are already an abstraction for resources) makes it even more complicated.</p>
<p>I really appreciate your work and ideas to simplify the setup, but I guess we will not add such an <em>auto live resources</em> to the core at the moment. We are open to an add-on package if you need this feature and want to maintain such an automatic resource generation.</p>
<p>When it comes to making setup easier, I’d like to see Mix tasks that do the resource introspection and automatically generate live resources for you. The advantage of a Mix task is that we’d simplify the setup, but end up with the same configuration (both manually and programmatically via running a mix task).</p>
<p>Looking forward to hearing your thoughts!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="349392" 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/backpex-a-highly-customizable-admin-panel-for-phoenix-liveview-applications/64314/41">Post #40</a>
	                </div>
	            </div>
              <div id="likers-container-349392" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="349392"
                     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 #40"></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/64314/load_more?page=5">Load more posts (50 remaining)</a>
</div></template></turbo-stream>