ykostov

ykostov

E-commerce in Elixir - pros and cons (vs Rails)

Hello devs!
I’m starting these day coding my own e-commerce platform, and so I have a few questions…
First of all, except the live-view, do Elixir have more pros (or cons)? The site will be used by approximate 5K per month (not sure at all) users, so is it good for this subject. As I have better knowledge in Rails, which lang is better for you? Are there any free open-sources in Phoenix (like Solidus and Spree in Rails)? Please, share your thoughts, I’d glad to view different opinions..

Best Regards,
YKostov

Marked As Solved

joselo

joselo

In an old reply I mentioned that I’m building a kind of shopify clone for my country, well… after some months working this is the result. the work is still in progress, so the answer is yes, you can build a e-comerce app in phoenix elixir :sunglasses:

My mix.exs updated

      {:phoenix, "~> 1.5.12"},
      {:phoenix_ecto, "~> 4.4.0"},
      {:ecto_sql, "~> 3.7.0"},
      {:postgrex, ">= 0.15.10"},
      # Needs to be updated to 3.0.0 but there are still conflicts with live_view
      {:phoenix_html, "~> 3.0.3"},
      {:phoenix_live_reload, "~> 1.3.3", only: :dev},
      {:telemetry_metrics, "~> 0.6.1"},
      {:telemetry_poller, "~> 0.4"},
      {:gettext, "~> 0.11"},
      {:jason, "~> 1.2.2"},
      {:plug_cowboy, "~> 2.5.1"},
      {:bcrypt_elixir, "~> 2.3.0"},
      {:ex_machina, "~> 2.7.0", only: :test},
      {:wallaby, "~> 0.28.1", runtime: false, only: :test},
      {:credo, "~> 1.5.6", only: [:dev, :test], runtime: false},
      {:git_hooks, "~> 0.6.3", only: [:test, :dev], runtime: false},
      {:phoenix_live_view, "~> 0.16.3"},
      {:floki, ">= 0.31.0"},
      {:cachex, "~> 3.4.0"},
      {:money, github: "elixirmoney/money", branch: "master"},
      {:liquex, "~> 0.6.1"},
      {:puid, "~> 1.0"},
      {:ecto_enum, "~> 1.4"},
      {:attrition, "~> 0.1.0"},
      {:poison, "~> 5.0.0"},
      {:struct_access, "~> 1.1"},
      {:bamboo, "~> 2.2.0"},
      {:bamboo_phoenix, "~> 1.0"},
      {:bamboo_ses, "~> 0.2.0"},
      {:timex, "~> 3.7.6"},
      {:oban, "~> 2.8.0"},
      {:mimic, "~> 1.5.0", only: :test},
      {:excoveralls, "~> 0.14.2", only: :test},
      {:httpoison, "~> 1.8"},
      {:slugify, "~> 1.3"},
      {:pdf, "~> 0.5.0"},
      {:elixir_xml_to_map, "~> 2.0"},
      {:barlix, "~> 0.6.1"},
      {:xml_builder, "~> 2.2"},
      {:mox, "~> 1.0", only: :test},
      {:premailex, "~> 0.3.13"},
      {:geocoder, "~> 1.1.3"}

Also Liked

olivermt

olivermt

I started as a CTO for www.amoi.no (and www.amoi.se) last wednesday and we’re an eCommerce using Elixir and liveview with sprinkles of Surface.

We’re pivoting to be a bit more api heavy, so most likely we will leave liveview out of it, but liveview was a great enabler to get the product off the ground quickly with a small and super senior / great team.

Not «eCommerce» in the traditional sense, as amoi is city-as-a-warehouse (for now) similar to what gojek etc do in asia, but we do logistics, payments and all that jazz.

dimitarvp

dimitarvp

LiveView is VERY FAR from being the biggest positive trait of Elixir.

Have you read on the OTP? The guarantees of a process being restarted if it crashes, for example?

joselo

joselo

Hi I come from Rails and I’m building a kind of Shoppify clone with some custom things for my country, I’m convinced that Phoenix/Elixir was the right choice, It has every thing to create a E-Commerce site. I even had to create a electronic invoice using a P12 Certificate and I was able to do using erlang libraries (from elixir), Phoenix is amazing and with liveview complex interfaces was easy to do. An E-Commerce platform is a big thing you have orders, customers, inventories, shipping, etc. there are many things, but I feel that Phoenix/Liveview help a lot.

if it can help this is my current mix.ex

  defp deps do
    [
      {:phoenix, "~> 1.5.8"},
      {:phoenix_ecto, "~> 4.2.1"},
      {:ecto_sql, "~> 3.5.4"},
      {:postgrex, ">= 0.15.8"},
      {:phoenix_html, "~> 2.14.3"},
      {:phoenix_live_reload, "~> 1.3.0", only: :dev},
      {:phoenix_live_dashboard, "~> 0.4.0"},
      {:telemetry_metrics, "~> 0.6.0"},
      {:telemetry_poller, "~> 0.4"},
      {:gettext, "~> 0.11"},
      {:jason, "~> 1.2.2"},
      {:plug_cowboy, "~> 2.4.1"},
      {:bcrypt_elixir, "~> 2.3.0"},
      {:ex_machina, "~> 2.7.0", only: :test},
      {:wallaby, "~> 0.28.0", runtime: false, only: :test},
      {:credo, "~> 1.5.5", only: [:dev, :test], runtime: false},
      {:git_hooks, "~> 0.5.2", only: [:test, :dev], runtime: false},
      {:phoenix_live_view, "~> 0.15.4"},
      {:floki, ">= 0.30.0", only: :test},
      {:cachex, "~> 3.3"},
      {:money, "~> 1.8.0"},
      {:liquex, "~> 0.5.0"},
      {:puid, "~> 1.0"},
      {:ecto_enum, "~> 1.4"},
      {:attrition, "~> 0.1.0"},
      {:poison, "~> 4.0"},
      {:geocoder, "~> 1.1.0"},
      {:countries, "~> 1.5"},
      {:mox, "~> 1.0", only: :test},
      {:struct_access, "~> 1.1"},
      {:bamboo, "~> 2.0.1"},
      {:bamboo_phoenix, "~> 1.0"},
      {:bamboo_ses, "~> 0.2.0"},
      {:grpc, "~> 0.3.1"},
      {:cowlib, "~> 2.8.1", hex: :grpc_cowlib, override: true},
      {:timex, "~> 3.7.3"},
      {:oban, "~> 2.5"},
      {:mimic, "~> 1.4", only: :test},
      {:excoveralls, "~> 0.14", only: :test},
      {:httpoison, "~> 1.8"}
    ]
  end

One of my favorite lib is liquex Liquex — liquex v0.15.1 you can use liquid lang for your templates.

Regards!

Where Next?

Popular in Questions Top

New
gshaw
What is the idiomatic way of matching for not nil in Elixir? E.g., First way: defp halt_if_not_signed_in(conn, signed_in_account) when...
New
greenz1
I have a phoenix application from which a user can download multiple(5-6) files of size 1MB. I couldn’t find anything related to sending ...
New
JeremM34
Hello, how can I check the Phoenix version ? Thanks !
New
LegitStack
I’m trying to make a websocket server in Phoenix or raw Elixir. I heard about gun, I think I could use cowboy, but since I’m not that sma...
New
dokuzbir
I want to highlight html closing tags when i click a html tag. That works in .html files but doesnt work for html.eex templates. How can...
New
joeerl
Hello again - after a longish gap I’ve decided I really must dig into Elixir and see what’s been happening here - so I have a few questio...
New
Emily
I have VueJS GUIs with the project generated using Webpack. I have Elixir modules that will need to be used by the VueJS GUIs. I forese...
New
sergio_101
I am VERY much an elixir newbie. I have taken one elixir course and one phoenix course on Udemy. During that course, I saw the instructor...
New
WestKeys
Currently suffering from paralysis by [HTTP client] analysis. This is rather unusual in Elixirland as there tends to be consensus on the ...
New

Other popular topics Top

danschultzer
None of the current solutions worked well for me, so I went ahead and built a user management system from scratch. This project took far...
548 29377 241
New
sorentwo
Hello! tl;dr Announcing Oban, an Ecto based job processing library with a focus on reliability and historical observability. After spen...
985 42920 311
New
AngeloChecked
What learn first? Rust or Elixir Hi Elixir community! I’m here because i want learn a new language. I’m a junior developer and mainly i ...
New
jaysoifer
Is there a way to rollback a specific migration and only that one (“skipping” all the other ones)? Would mix ecto.rollback -v 200809061...
New
vonH
When I run the Plug and I recompile I wind up having to use Ctrl C to quit iex and start again. Witht the help of rlwrap I can use the cu...
New
boundedvariable
I am going through the kafka architecture. All the features what the kafka is providing are already in Erlang. I would like hear your opi...
New
nsuchy
Hi. I’ve noticed that Windows Powershell has it’s own IEX command and you cannot access Elixir’s IEX due to the conflict. This isn’t a cr...
New
hariharasudhan94
Lets say I have map like this fetching from my database %{"_id" => #BSON.ObjectId<58eb1a7a9ad169198c3dXXXX>, "email" => ...
New
jononomo
For some reason my phoenix channels are working for me in my local dev environment, but as soon as I deploy via Docker, I get a 403 error...
New
svb
Hi! Currently I want to submit a form by pressing the Enter key. However, since my input field is of type “textarea” this is just adds a...
New

We're in Beta

About us Mission Statement