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


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>It is feature rich. It has most of what you would ever need in an e-commerce shop project.</p>
<p>That being said, it’s slow, brittle and easy to break when you try to extend things, and very big. I mean, don’t get me wrong: it <em>is</em> extendable but requires a lot of attention to not fall on its head. It’s an awful idea to invest in Spree for a long-term maintenance project. So I am also looking at alternatives. For now it’s only but a dream since I am very busy and I am working with the now-ancient Spree 2.2.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="14441" 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/resources-for-building-an-e-commerce-store-in-phoenix/1813/13">Post #12</a>
	                </div>
	            </div>
              <div id="likers-container-14441" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="14441"
                     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="27238" data-post-id="27238">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Seems like the projects mentioned here are no longer being maintained, or just lacking recent activity. I’m too looking for a Ecommerce platform for my next pet project. What did people end up with, and how’s your experience? <img src="https://forum.elixirforum.com/images/emoji/apple/smile.png?v=15" title=":smile:" class="emoji" alt=":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="27238" 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/resources-for-building-an-e-commerce-store-in-phoenix/1813/14">Post #13</a>
	                </div>
	            </div>
              <div id="likers-container-27238" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="27238"
                     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="27242" data-post-id="27242">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>It was mentioned once before, but if it’s a pet project then I think there’s a lot to gain by picking apart <a href="https://github.com/robconery/peach" rel="noopener nofollow ugc">Peach</a>. It’s based on <a href="https://vimeo.com/171317253" rel="noopener nofollow ugc">this talk</a> which I found compelling, and there’s also a few insightful <a href="http://rob.conery.io/2016/02/10/let-s-build-something-with-elixir/" rel="noopener nofollow ugc">blog posts</a> that help to further explain some of the design choices.</p>
<p>I came away with a better understanding of agents and OTP in general after incorporating some of the ideas into a side project.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="27242" 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/resources-for-building-an-e-commerce-store-in-phoenix/1813/15">Post #14</a>
	                </div>
	            </div>
              <div id="likers-container-27242" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="27242"
                     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="56825" data-post-id="56825">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Any news on this topic. I am considering to built my own from scratch using <code>Phoenix</code> especially since I don’t need to care now about on-line payments (Payments by transfers or credit card over phone).</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="56825" 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/resources-for-building-an-e-commerce-store-in-phoenix/1813/16">Post #15</a>
	                </div>
	            </div>
              <div id="likers-container-56825" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="56825"
                     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="59066" data-post-id="59066">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Great to find interested people alike in this thread. I currently have built my own and am adding more features to it everyday. I can share my experience - I initially tried the umbrella architecture and quickly burnt my finger with it. Startup time became too long, there were simply lot of models, and duplicate layouts and some patchwork simply because for my use case it wasn’t appropriate and I tried to break down everything in a possibly wrong way using DDD. I <a href="https://forum.elixirforum.com/t/understanding-contexts-web-and-ddd/4995/15" rel="nofollow">consulted the community</a> many times when building this too. For example, I had apps broken down into Accounts, CMS, Ecommerce, Finance, Marketing and so forth. But then, E-Commerce needed to use the same entity “Page” inside of CMS. Marketing had to use the entity “User” from Accounts. This lead to cross-app queries which broke my DDD design. This is what I meant by patch work.</p>
<p>3 months in and I almost gave up. Finally, I decided to scrap everything and write a single large monolith instead. I was pleasantly surprised that this was the appropriate way I should have taken earlier because I didn’t have to worry about cross-app queries and also the app itself was pretty much faster. However, I hit a roadblock when trying to integrate Payments. I incorporated an incompetent gateway called PayPal whose sandbox was full of bugs. They wasted a month’s worth of development time. So, I eventually <a href="https://github.com/dsignr/PayPal/commit/02e93285feaaeb3e50647451e16bab5a0cd055e9" rel="noopener nofollow ugc">decided to</a> stop using them and switch to Stripe to accept Payments.</p>
<p>Before building my own solution, which I understand requires lot of effort to develop AND maintain to keep it free of security issues and so forth, I evaluated a lot of existing solutions along the way, including Spree from the Ruby land and Woocommerce from PHP land. Woocommerce has one of the most fucked up design choices made ever and I was surprised no one even complained about it. For example, you have PHP functions that will render HTML for you and sometimes that’s the only way to output some information such as a cart table. If you want to add a class name to that table, you would pass it to the function as a parameter. So, in cases where you could just do something like <code>&lt;%= variable_name %&gt;</code> in EEX, you would have to do something like <code>&lt;?php function some_fucked_up_function("my_class_name", "td_class_name", [td_attributes]..., ...., ....); ?&gt;</code>. But, you get what I mean. I wasted so many hours into it as well and the even worse part is there are companies out there who rely on this level of obfuscation to win businesses from customers who are locked in into their eco-system. Anyway, let me end the rant there.</p>
<p>So, I decided it’s faster and simpler to build your own system with Phoenix than use something off the shelf and struggle customizing it. This is actually true for any software simply because of the differences in the philosophies of the software author and yourself. So, you will end up eventually adapting the system to fit into your philosophy that will cost you a lot of time. So yeah, I used Phoenix. Couldn’t be happier.</p>
<p><strong>Stuff I use for my app:</strong></p>
<ol>
<li>Authentication - <a href="https://github.com/riverrun/phauxth" rel="noopener nofollow ugc">Phauxth</a>. Written by the man behind <code>comeonin</code>, <code>bcrypt_elixir</code> and a dozen more. Easily the best library out there if you’re looking for a straightforward <code>devise</code> alternative from Ruby land, this is it. I’ve been using this library from it’s early releases and the author, David, is super friendly and super fast in getting things fixed.</li>
<li>Security - I use <a href="https://github.com/nccgroup/sobelow" rel="noopener nofollow ugc">sobelow</a> to scan my app for vulnerabilities. I also found <a href="https://forum.elixirforum.com/t/32-elixirconf-2017-plugging-the-security-holes-in-your-phoenix-application/8565" rel="nofollow">this talk</a> REALLY helpful.</li>
<li>Hosting - I initially used Google’s App Engine with a custom runtime, but I blew up the free $300 credit and found it’s actually quite expensive in the long run too. It costs about $40-50 USD per month to host a Phoenix app. But, the performance is really good of course. Eventually I moved to AWS simply because I wanted a lot of other things in their ecosystem. For example, I sell digital products on my Ecommerce store. AWS S3 offers time-limited Signed URLs to prevent leeching. I use AWS Lambda for managing image uploads. Google doesn’t have any transcoding options I’m aware of. Appengine has one image service that does image manipulations on the fly, but it seems not very well documented.</li>
<li>Admin dashboard - I had a pretty bad experience using a gem for admin dashboards when I worked with RoR some time ago. So, I don’t use any plugins for this, I simply wrote a custom generator in Phoenix that, each time when I use <code>phx.new</code> that would generate using my own UI. I simply used scoped routes with role based authorization to restrict it from normal users.</li>
</ol>
<p>The best part about writing your own Ecommerce app is that you can control a lot of things - For example, I can control the checkout experience and not need to adhere to a standard 2 or 3 step checkout. I can modify this experience however I want based on certain criteria too (if it’s a home page, follow a simple checkout. If it’s a product page, follow a complex checkout, etc). if I used an OTS solution, I would need to fight it and it would outweigh any benefits it provides me. Oh and did I mention, when I benchmarked, my solution is much much faster and consumes wayyy less resources than say, a PHP based solution? <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>
<p>So, so far, I’m pretty happy with my choices. I hope this helped someone <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="59066" data-batch-url="/posts/batch_likers">
                        16
                      </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/resources-for-building-an-e-commerce-store-in-phoenix/1813/17">Post #16</a>
	                </div>
	            </div>
              <div id="likers-container-59066" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="59066"
                     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="59080" data-post-id="59080">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>IMO it’s hard to justify the use case.</p>
<p>There are going to be 3 types of people out there:</p>
<ol>
<li>
<p>Low traffic, low budget boutique shops with standard requirements that can just use Shopify or Square Space</p>
</li>
<li>
<p>Mid range shops that want to own their own site for something custom who will tell themselves it’s going to need to be amazon scale but Spree will actually handle just fine. Also they will need a dev ecosystem for future support.</p>
</li>
<li>
<p>Companies with serious budgets who actually do want to do something unique who would end up building from scratch anyway.</p>
</li>
</ol>
<p>It’s HARD to find the ecommerce niche where a packaged Elixir solution would gain traction</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="59080" 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/resources-for-building-an-e-commerce-store-in-phoenix/1813/18">Post #17</a>
	                </div>
	            </div>
              <div id="likers-container-59080" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="59080"
                     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="59100" data-post-id="59100">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I think, you’re right in the sense that for most use cases Spree would suffice. But, in my mind, if I wanted a custom solution, I couldn’t go wrong with an RoR project (Spree). If I’m going for RoR, then why the hell not Phoenix? I love the language more than Ruby (personal choice).</p>
<p>EDIT Also, to add - Another important reason I wrote this was because I have 3 ecommerce properties that are somewhat related with each other. Unless this is a custom solution, it’s pretty hard to make 3 shopify stores talk to each other.</p>
<p>In my case, it was pretty justified because we wanted to really have full control over a lot of aspects:</p>
<ol>
<li>Easy theme development.</li>
<li>Must be really FAST, this means, pagespeed score &gt; 90.</li>
<li>No data leakage. I absolutely hate when I inspect the network tab from an ecommerce store run by Shopify - 10,000 requests (exaggeration) to 1000 vendors (analytics, retargeting, adserver snippets, what not). I want to own my data.</li>
<li>Highly customizable. Like I mentioned above, the checkout experience for example. Very important. We now have modules that can be customized by marketing dept. without touching devs. For example, they want to run campaigns with the subscription box containing a single step opt in vs a two-step opt in.</li>
<li>No vendor lock down. Some platforms out there limit you to a handful of vendors. In some stores, you’d be able to use only Paypal express checkout, which really sucks. And even if they used Stripe, they would not be in a way that we’d want. For example, we don’t want to give Stripe any more data other than treating them like a Payment gateway. So this means, we don’t want to (re-)create our products within their APIs, we simply want to use the <code>charge</code> endpoint specifying an amount.</li>
<li>We recently implemented chatbot functionality. Not possible within Shopify or anyone else without paying extra.</li>
<li>We don’t want to keep paying for stuff that is arbitrarily removed out of a core ecommerce functionality just so the vendor can earn. Woocommerce does this. Lot of modules that make the platform useful are paid.</li>
<li>Finally, we sell both digital AND offline products. Not many vendors support all our requirements, not this one without having to buy another plugin, for example.</li>
<li>Hosting costs - I am actually quite experienced with Shopify, Wordpress and Spree as these are the platforms I used early on in my career. If it solved my use case, I’d definitely go with something like Squarespace or Shopify, but unfortunately (or fortunately) it didn’t and I’m so glad I developed my own. I now spend $0 - $0.50 on servers, running on Elastic Beanstalk, with the free tier. For this, I get to explore new technology and have the pride of building something as complex as an ecommerce platform. So, there is definitely value in that as well.</li>
</ol> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="59100" 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/resources-for-building-an-e-commerce-store-in-phoenix/1813/19">Post #18</a>
	                </div>
	            </div>
              <div id="likers-container-59100" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="59100"
                     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="59105" data-post-id="59105">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="brightball" data-post="18" data-topic="1813">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/brightball/48/17192_2.png" class="avatar"> brightball:</div>
<blockquote>
<ol start="3">
<li>Companies with serious budgets who actually do want to do something unique who would end up building from scratch anyway.</li>
</ol>
</blockquote>
</aside>
<p>They mostly buy of the shelf “high end” systems like Hybris, Oracle Commerce etc.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="59105" 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/resources-for-building-an-e-commerce-store-in-phoenix/1813/20">Post #19</a>
	                </div>
	            </div>
              <div id="likers-container-59105" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="59105"
                     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="59132" data-post-id="59132">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>It’s not quite Ecommerce, but I’ve been building two different two-sided marketplaces with Elixir and Phoenix. Both started life as JS apps, but for various reasons it was decided to move them to Elixir.</p>
<p>The first is a pretty simple classifieds website, so other than taking listing fees, bares little resemblance to a traditional Ecommerce store.</p>
<p>The second, that I’m still working on, is quite similar to a platform like Etsy, allowing people to list items, sell them through the site, with the site managing the handling of money (using Stripe Connect). So far, this has been pretty straightforward, but I’ll confess it’s being built in such a way that isn’t even close to suitable for reuse. It’s operating in a very specific market, and a lot of the functionality caters to that markets individual needs.</p>
<p>Between the two apps, I’m happy to conclude that building this sort of app completely from scratch isn’t all that painful, and that trying to work within the confines of another system can be much worse. As <a class="mention" href="/u/dsignr" rel="nofollow">@dsignr</a> has said, work with the right platforms (Stripe) and a few carefully selected libraries, and it can be quite straightforward.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="59132" 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/resources-for-building-an-e-commerce-store-in-phoenix/1813/21">Post #20</a>
	                </div>
	            </div>
              <div id="likers-container-59132" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="59132"
                     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>
    <div class="postbit" id="59133" data-post-id="59133">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I think Phoenix and Elixir is actually an excellent platforom to built e-commerce/marketplace platforms from scratch. This is different question from if you should build e-commerce platforms from scratch at all.</p>
<p>If you do make the decision that you build it from scratch, however, either a dedicated software for your business, hosted solution for many businesses or something you’d license to others - in my humble opinion it’s good choice to build it with Elixir and Phoenix.</p>
<p>Being able to scale up, being able to handle abusive clients (web crawlers/scrapers used heavily in the industry), being able to monitor things, perform long-running operations such as reporting, reaching out to external services (payemnt gateways etc) en masse etc. BEAM/Erlang/Elixir eliminates tones of problems that are being faced by the industry when they desing similar systems say in Ruby. Shopify would do well switching from Ruby to Elixir, for example (again, in my opinion). I’d say they’d definitely cut down on the hosting cost and simplify infrastructure significantly.</p>
<p>I don’t think Elixir is good choice if you want to use something out of the box, in most cases, as the libraries are simply not there. But if you’ve already made the decision you need to build custom stuff, go ahead and use it.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="59133" data-batch-url="/posts/batch_likers">
                        6
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/resources-for-building-an-e-commerce-store-in-phoenix/1813/22">Post #21</a>
	                </div>
	            </div>
              <div id="likers-container-59133" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="59133"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #21"></div>
  </section>
</div>
</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/1813/load_more?page=3">Load more posts (44 remaining)</a>
</div></template></turbo-stream>