Thinking of building e-commerce, please give me advices

Hi!
I am thinking of building e-commerce Graphql backend for my own project.

  • Graphql elixir backend using Absinthe
  • Web App using Phoenix(phoenix liveview)
  • Flutter App using Apollo Client.

I know, there is no e-commerce framework for elixir now(at least actively developed). And most of people do build from scratch for their own needs.
It is first time to build e-commerce using elixir and phoenix.
So please give me any advices how you guys take advantage of elixir/phoenix/erlang(OTP, GenServer, Liveview. ETS etc…)

Sorry for the vague question. :sweat_smile:

It is a common question, and has been asked already, You might find some related topics.

e-commerce site does not require a lot of concurrency, and Shopify is made with Rails. Unless You use concurrency. Live stock update, bid and auctions etc.

I advise You to start by adapting this book to latest Phoenix, You will learn how to make a shop

https://shankardevy.com/phoenix-inside-out-mpf/

Once done… You can add graphQL

2 Likes

I do not think you should generalise like that. My consultancy at (https://www.amberbit.com) has clients that are e-commerce sites, some really big and high-traffic. There is plenty of concurrency and OTP comes in exceptionally handy.

I am not involved coding-wise in either of these projects but from what I hear from my employees, they are doing a lot of data sync (in and out) with external services. Think, delivery services, currency conversion, payment systems, shipment tracking, stock management software. There are streams of data to process, and things like GenStage come in handy. In other places they benefit a lot from implementing circuit breakers as failsafe mechanism when something external fails, also exceptionally easy to do with OTP primitives.

As far as I can tell, they are not using LiveView, however, and that would probably not necessarily be a good match for everything as the number of requests they handle is huge, and statelessness of HTTP here is a possible advantage. You don’t have to keep track of all these connections once product page is served. It may be, very much useful to employ LiveView, however, on things like registration, or checkout process, something that I believe they are doing heavily in JavaScript.

I am also a big fan of GraphQL, but again, this is not something we use with e-commerce clients. Again think of product page, you probably want it server-rendered, served as fast as possible and as simple as humanly possible to be properly indexed by various bots (Google, Facebook etc.). As far as I understand the need for GraphQL is limited in the e-commerce store scenarios I saw.

2 Likes

It wasn’t my plan to make any generalization :slight_smile:

It always depends on context, but OP is quite vague and it’s difficult to make any specific assertion (where concurrency would shine).

GraphQL is a good fit when there is a need for a json Api, like for the Flutter client. You don’t need to use everything, but I would use it to replace any REST Api.

2 Likes

I will use absinthe for graphql for my mobile app client.
Is it OK to add api backend(graphQL) to web app client? or better to separate it?

You can use whatever client You like for GraphQL, web, mobile etc.

1 Like

Any news on this? Any updates?

As it looks unfortunately not or it’s closed source and build from scratch for their own needs…like this one, for example, if I see it right:

https://www.therealreal.com/

I don’t know if they use the Phoenixframework, at least it runs on Cowboy.
But somehow the site is not as fast as I expected.

Or this one is really nice and uses also Phoenix Liveview and is really fast!! :smiley:

https://www.stitched.co.uk