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


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="IVR" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/IVR/120/21062_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  IVR
                    <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>Interesting, thanks for sharing your experience.</p>
<p>Do you still use Elm whenever you need an SPA or did you switch to another solution? Do you see it as an option to use Elm 0.19 and not upgrade to 0.19.1+? Lastly, as long as you are not relying on websockets, the entire experience should still be alright even with the newer versions, right?</p>
<aside class="quote no-group" data-username="Qqwy" data-post="11" data-topic="36647">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/qqwy/48/1349_2.png" class="avatar"> Qqwy:</div>
<blockquote>
<p>Evan Czaplicki has said from the beginning that he prefers a ‘super good’ language in the long run rather than an ‘okay’ language right now.</p>
</blockquote>
</aside>
<p>Just my personal opinion here, but it sounds like a risky approach as a lot of people might simply abandon a language that mainly cares about becoming “super good” in 10 years or so.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="199552" 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/thoughts-and-feeling-about-mixing-elm-with-phoenix/36647/12">Post #11</a>
	                </div>
	            </div>
              <div id="likers-container-199552" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="199552"
                     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="199554" data-post-id="199554">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Qqwy" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Qqwy/120/1349_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Qqwy
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>TypeCheck Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="IVR" data-post="12" data-topic="36647" data-full="true">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/ivr/48/21062_2.png" class="avatar"> IVR:</div>
<blockquote>
<p>Interesting, thanks for sharing your experience.</p>
<p>Do you still use Elm whenever you need an SPA or did you switch to another solution?</p>
</blockquote>
</aside>
<p>I am using Phoenix LiveView for my current projects.<br>
If I encounter another situation in which I really need a full-fledged SPA solution in which e.g. disconnects should not stop the SPA from running, then I’ll probably reach for PureScript.</p>
<aside class="quote no-group" data-username="IVR" data-post="12" data-topic="36647" data-full="true">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/ivr/48/21062_2.png" class="avatar"> IVR:</div>
<blockquote>
<p>Do you see it as an option to use Elm 0.19 and not upgrade to 0.19.1+?</p>
</blockquote>
</aside>
<p>No, I do not see it as an option to stick with 0.18 and not upgrade to 0.19.x because you’re stuck working on a deprecated and unmaintained system.</p>
<aside class="quote no-group" data-username="IVR" data-post="12" data-topic="36647" data-full="true">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/ivr/48/21062_2.png" class="avatar"> IVR:</div>
<blockquote>
<p>Lastly, as long as you are not relying on websockets, the entire experience should still be alright even with the newer versions, right?</p>
</blockquote>
</aside>
<p>There are other tradeoffs in using Elm (some objective, some subjective), but since this topic is about ‘mixing Elm and Phoenix’ I did not intend to go into more detail there. If you want to read more, I suggest the article <a href="https://reasonablypolymorphic.com/blog/elm-is-wrong" rel="noopener nofollow ugc">Elm is Wrong</a> combined with <a href="https://github.com/elm/compiler/issues/1283#issuecomment-259800463" rel="noopener nofollow ugc">Evan Czaplicki’s response</a> to it, to form your own opinion <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="199554" 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/thoughts-and-feeling-about-mixing-elm-with-phoenix/36647/13">Post #12</a>
	                </div>
	            </div>
              <div id="likers-container-199554" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="199554"
                     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="199571" data-post-id="199571">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I hope I can add some “beginner view” to the picture: I have used / am using Phoenix + Elm for two personal (toy?) projects.</p>
<p>These are my first actual “works” in both - started this year -, although I followed Elixir and Elm for a long time - but only reading and thinking is of course way different to working with. I do quite a bit of web programming with C# and Angular for a living and that obviously influences my opinion.</p>
<p>I use Phoenix solely for the API and I think I would agree with you that not using templates and Liveview feels like I’m missing a big part of what makes Phoenix great. But considering I’ve never actually used those I could totally be wrong! Considering this is an Elixir forum I will just say: it’s a blast to work with!</p>
<p>About Elm: I really enjoy it. It’s a great language from my perspective and hasn’t “let me down”, so to say. I do get that I might have been lucky because my requirements aren’t high though..! I do think that the non-native websocket support is not an issue though. I am using that in my second project now and it’s really fairly simple! Maybe about 20 lines of JS “plugging” Elm and the Phoenix JS Client together.</p>
<p>The thing about my usage of Elm is, that I wanted to use it. I think it’s very often smarter to prefer LiveView if you can get away with not using a front-end framework. It’s just so much simpler sometimes, if your website doesn’t need the extra something?</p>
<p>My conclusion: I am using it and would again, because I think it’s fun and productive. I have no steakholders nor hard requirements though, which makes life “easy”. Also in these projects I’m the whole team and have no timeboxing.</p>
<p>Elm makes me feel like I’m forced to work well. Elixir is as great and lovely as we all know. For learning purposes or school / university projects I would recommend highly.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="199571" data-batch-url="/posts/batch_likers">
                        5
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/thoughts-and-feeling-about-mixing-elm-with-phoenix/36647/14">Post #13</a>
	                </div>
	            </div>
              <div id="likers-container-199571" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="199571"
                     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="199573" data-post-id="199573">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="IVR" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/IVR/120/21062_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  IVR
                    <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>Awesome, thanks for pitching in! Your situation sounds very similar to mine, except I don’t do web development professionally. Like you said, I realise that you can probably go a long way with Phoenix alone, however, when I decided to get into web development, I wanted to familiarise myself with a toolkit that would cover all possible scenarios and there is certainly still a niche for SPA frameworks. I thought that Vue and React are solid, however I’m not really a fan of JS, for that reason Elm really appealed to me. You feedback certainly gives me the encouragement to give it a proper go. Thanks again!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="199573" 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/thoughts-and-feeling-about-mixing-elm-with-phoenix/36647/15">Post #14</a>
	                </div>
	            </div>
              <div id="likers-container-199573" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="199573"
                     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="199575" data-post-id="199575">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Not only JS, you can use HUGO (Go) and elm-pages (Elm) which I am pretty sure is supported as well, not to mention Jekyll (Ruby)</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="199575" 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/thoughts-and-feeling-about-mixing-elm-with-phoenix/36647/16">Post #15</a>
	                </div>
	            </div>
              <div id="likers-container-199575" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="199575"
                     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="199580" data-post-id="199580">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I know hugo and jekyll can be used in vercel; Not sure about elm. At least it is not listed in the documentation:</p><aside class="onebox allowlistedgeneric" data-onebox-src="https://vercel.com/docs/builds/configure-a-build">
  <header class="source">
      <img src="https://assets.vercel.com/image/upload/q_auto/front/favicon/vercel/favicon.ico" class="site-icon" alt="" width="48" height="48">

      <a href="https://vercel.com/docs/builds/configure-a-build" target="_blank" rel="noopener nofollow ugc">vercel.com</a>
  </header>

  <article class="onebox-body">
    <img width="" height="" src="https://vercel.com/api/docs-og?title=Configuring%20a%20Build&amp;format=docs&amp;sig=6dc7f2eb732b642c493bbca9892218cd76d23d9aa19903dc5af03210c1f5adaa&amp;category=Ship%20and%20scale&amp;subcategory=Builds" class="thumbnail" alt="">

<h3><a href="https://vercel.com/docs/builds/configure-a-build" target="_blank" rel="noopener nofollow ugc">Configuring a Build</a></h3>

  <p>Vercel automatically configures the build settings for many front-end frameworks, but you can also customize the build according to your requirements.</p>


  </article>

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

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

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="199580" 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/thoughts-and-feeling-about-mixing-elm-with-phoenix/36647/17">Post #16</a>
	                </div>
	            </div>
              <div id="likers-container-199580" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="199580"
                     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="199581" data-post-id="199581">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Not sure by default but it does not seem so hard to deploy with Netlify. Here is a <a href="https://github.com/dillonkearns/elm-pages-starter" rel="noopener nofollow ugc">starter project</a> with Deploy to Netlify support</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="199581" 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/thoughts-and-feeling-about-mixing-elm-with-phoenix/36647/18">Post #17</a>
	                </div>
	            </div>
              <div id="likers-container-199581" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="199581"
                     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="199584" data-post-id="199584">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thanks. Didn’t know you can install elm by <code>npm install elm</code>.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="199584" 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/thoughts-and-feeling-about-mixing-elm-with-phoenix/36647/19">Post #18</a>
	                </div>
	            </div>
              <div id="likers-container-199584" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="199584"
                     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="199638" data-post-id="199638">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>With Elm -<br>
My primary reason to choose Elm is</p>
<ol>
<li>The MVU pattern or Elm architecture or TEA for short.</li>
<li>Type safety and the excellent compiler. I want to be able to come back to project after 6 months and refactor with confidence.</li>
<li>I want zero runtime exceptions happening in places I dont have a watch over.</li>
</ol>
<p>Sooner or later requirements happen where I have to reach into JS via ports. I actually don’t mind doing that. I wrote an entire application with the view logic on Elm and the backend communication via phoenix channels and Elm ports.</p>
<p>But Fable offered everything that Elm did and more… better integration with JS. MVU with the ability to convert a small MVU component into a react component that could then be reused. (This is also possible with Elm but Fable is low ceremony). Ecosystem with wrappers around popular UI frameworks like material. etc… Integration with Google Maps sdk for example is much easier to do with Fable than with Elm.</p>
<p>Liveview -</p>
<aside class="quote no-group" data-username="IVR" data-post="6" data-topic="36647">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/ivr/48/21062_2.png" class="avatar"> IVR:</div>
<blockquote>
<p>I was genuinely thinking that Phoenix + LiveView + Alpine would be more than enough</p>
</blockquote>
</aside>
<p>I was trying to say <a href="https://zaid-ajaj.github.io/Feliz/" rel="noopener nofollow ugc"> Fable-Feliz</a> might be a better alternative to Elm if Phoenix is the backend. If Liveview meets the requirements without the need for a FE framework then there is no need for Elm.</p>
<p>I’m excited about Liveview and use it where I can. Where I cant, I know the problem might be ‘me’ and not Liveview..<br>
When I want to move things around and experiment fast and refactor with confidence…</p>
<ol>
<li>
<p>The Liveview setup, my requirements etc.. was pushing me to use server roundtrips for UI concerns. Alpine is good but has limitations and clients are used to the UX and interactivity offered by an SPA. Over time and refactors later, the sprinkling of JS on top tends to grow into a thick layer (tech debt). This is not a problem if one has the pleasure of spending time and effort on it in the future.</p>
</li>
<li>
<p>UI state has a tendency to mix with business logic state. This is not a problem if one is disciplint and promise not to cut corners and all the people who work on the code adhere to the oath. This problem is a bit easier to handle in MVU.</p>
</li>
<li>
<p>Components become shape shifters with changing requirements. This could get pretty hairy when requirements change rapidly and you want to iterate before getting your component designs right. i.e should a component own its state or should the parent.</p>
</li>
<li>
<p>Some requirements makes me drop to down to pubsub to communicate between components. After a while I no longer know who is talking to who and who is the observer and who is the observed. (This is where TEA shines, unidirectional control flow).<br>
I value the ability to come back after a year and grok the logic in a small component without having to worry about all the actors that maybe associated with that component.  and sequencing of events etc…</p>
</li>
<li>
<p>At this point, I would like to chuck data into an available data-table js component than wire up live view with table search, column sort, prefetch etc… and focus on business logic. (I am watching the surface library with interest)</p>
</li>
</ol>
<p>Some of these are teething troubles and most rise out of me being too dumb to work without a strict compiler to catch my errors.</p>
<p>I’d say it is a matter of personal taste, long term maintainability and individual use case / business requirement.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="199638" 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/thoughts-and-feeling-about-mixing-elm-with-phoenix/36647/20">Post #19</a>
	                </div>
	            </div>
              <div id="likers-container-199638" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="199638"
                     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="199653" data-post-id="199653">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I’m mid-project on a small webapp with a Elixir / Phoenix back end and Elm front end.  The Phoenix app uses Absinthe to create the GraphQL endpoint. The Elm app communicates to the back with elm-graphql.</p>
<p>It works.  It’s pretty cool.  I wouldn’t recommend it.  The app we’re building is fairly small and straight forward with 5 pages and if it were a straight Phoenix/Liveview app it would have been done in about one third of the time.  I’ll be charitable because this is our first Elm project outside of a tutorial and say that adding Elm and GraphQL roughly doubled the implementation time.</p>
<p>Absinthe automates most of the set up for the graphql endpoint, but it has some rough edges that elm-graphql package dogmatically turns into some nasty types like <code>Maybe (List (Maybe Foo))</code> that then add a lot of clutter to your Elm code.  The Elm-graphql library illustrates what I feel to be a big rift in the philosophy of writing documentation between the Elixir and Elm communities.  Elm docs for most packages generally feel very incomplete and are coupled with a few meager examples that are equally poorly documented.</p>
<p>Mostly I feel that by the time you set up an API and a front end SPA you’ve taken away all the big productivity boosters from Elixir/Phoenix/Ecto web apps.  There’s also a very big paradigm change every time you switch contexts front-to-back end since Elixir has a lot of conventions built into it (productive as long as you follow them) and Elm is more “here’s a few powerful tools to go write whatever you want”.  There’s no real synergy gained by the combination.</p>
<p>I feel like I’m the only person so far with a negative take so I’m watching this thread closely to see if there’s something I’m missing.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="199653" data-batch-url="/posts/batch_likers">
                        5
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/thoughts-and-feeling-about-mixing-elm-with-phoenix/36647/21">Post #20</a>
	                </div>
	            </div>
              <div id="likers-container-199653" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="199653"
                     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/36647/load_more?page=3">Load more posts (8 remaining)</a>
</div></template></turbo-stream>