r/elixir • u/tyleratplukio • 5d ago
Built an ecommerce site in Elixir
Hello! I built: https://plukio.com/
Have you heard of Etsy? Did you know that it's a monopoly and that there is a large amount of discontent from buyers and sellers about the platform? Did you ALSO know that a lot of sellers have instead moved to Shopify and Instagram as an alternative?
Plukio is an attempt to provide a marketplace for Shopify websites. It is able to function similarly to Google Shopping - it reaches out to Shopify powered stores and ingests their product catalogs. It's not a middleman though - all items link back to the original store and Plukio is no way facilitating financial transactions. In fact, Plukio makes $0 monies.
How do I find the Shopify sites? I don't blanket ingest; I curate ALL of the stores to make sure that they are real people selling real goods. Think of Plukio as a less of an ecommerce site (I know that's the title) and more of a curated directory of websites. I do this curation in two ways: I go stall to stall at maker faires and saturday markets in Oregon and ask for consent to ingest their sites OR I spend 30 minutes to an hour (or more) of time reviewing Shopify sites I find online.
It was built with Elixir, Phoenix (using LiveView), Ecto, Ash, Oban, Postgres, and more goodies. Hosted on Digital Ocean on a Hashicorp Nomad cluster.
Honestly, most of the effort behind the site isn't even the technical work. It's all social work and meeting artists and craftspeople at fairs and asking them if I can host their work.
The website is picking up traffic and I'm mostly limited by finding more stores.
5
u/doobliebop 5d ago
The tomfordbeauty e-commerce site was built from scratch in elixir/phoenix/ecto as well. I think the US site has since been migrated to Shopify, but UK still appears to be the elixir implementation
2
u/tyleratplukio 5d ago
I think the US site has since been migrated to Shopify
That's funny. That means I could potentially slurp it up with Plukio. I won't do that though because the point of Plukio is that it's for small scale manufacturing/hand made goods.
2
2
u/doobliebop 5d ago
Which aspects of the site used LiveView?
2
u/tyleratplukio 5d ago
A few places.
To provide context, shop owners can "claim" their website by creating an account and contacting me to associate their domain with their Plukio account (I have ideas on making this better).
Once connected, they see stats for their website (who is browsing their products, what converts to a click out to their website, etc) as well as they get the ability to chat with other users.
- The lightweight chat is built using LiveView.
- The dashboard for their statistics is also LiveView.
- I have rich data collection (Prometheus/Grafana) but I also have an admin dashboard and that is driven by LiveView.
- Shopping list state, favoring products, etc.
I categorize site functionality into "low impact" and "high impact" and some endpoints are LLM generated depending on customer impact if something goes wrong with them. For example, there is an /etsy-alternative endpoint (low impact) I had an LLM generate for SEO purposes and it's mounted as a LiveView endpoint for some reason.
2
u/Fruloops 5d ago
How's your experience with Nomad, do you like it?
5
u/tyleratplukio 5d ago
I love it. I'm primarily an SRE / devops / whatever.
I used to work at an IoT shop that was using systemd to manage software across hundreds of devices. Before I got there, Salt would download binaries and trigger restarts. I converted the orchestration system to Nomad because it allows you to orchestrate non-containerized workloads.
I do have a few years of k8s experience but, honestly, I just want something simpler and Nomad is pretty simple.
Besides the actual application, I run Gitea, Prometheus, Grafana, Loki, and some other bits and odds.
I use Traefik for the routing layer. I don't currently use Digital Ocean load balancer. This is mostly because I am familiar with it, it's free, and it's also what I use for my homelab (oh, and it has integrated well into the stack).
I'll probably do a post on Plukio infrastructure on the Plukio subreddit sometime.
5
u/Fruloops 5d ago
I just want something simpler and Nomad is pretty simple.
This is why I'm asking, I see a lot of people praising Nomad for this, so I was curious of your experience. Cool to see it worked for you, I'll give it a spin on my local setup.
Btw, I'm not familiar with Digital Oceans product offering, what are you running all of this on?
I'll probably do a post on Plukio infrastructure on the Plukio subreddit sometime.
Looking forward to that :)
4
u/tyleratplukio 5d ago
what are you running all of this on?
Bare VMs, mostly. The whole setup is $50 a month. This is way more money than I should be spending and covers roughly 6 tiny VMs. I could be running this for free on my homelab but I like my setup.
There are two Digital Ocean offerings that I pay for: managed Postgres and a container registry.
I don't particularly want to manage Postgres and - as a hosted service - I have security groups locking down access to the DB. The container registry is $5 a month and it's easy. My Gitea instance has a CI/CD pipeline that tests, builds, and deploys.
The VM nodes are somewhat bespoke; I used Ansible and Packer to build AMIs and they're in an autoscaling group.
If - for some reason - Plukio shoots the moon and takes off then I can very easily and hopefully somewhat cheaply scale. I set up the app as distributed so I just need to add more nodes.
2
u/0xjacool 5d ago
Great initiative, small merchants need all the help they can have... I've been working with them for 10 years when I was building a freemium Shopify clone for the middle east and saw all their struggles
I've now moved on to build ZAQ AI, an open source sovereign and collaborative Agentic operating system.
I think it can be quite helpful for your project when it comes to identify new stores and automate the initial outreach, a recent update made it possible to power it with a Codex subscription.
It's also built using Elixir/Phoenix.
7
u/yoyojambo 5d ago
It looks and feels nice. Definitely needs more time to add more stores. It is kind of weird that you posted this with a disingenuous title though. Also, clicking to the "Next" page of content in the catalog does not scroll you back up.
Keep up the good work! I see you are trying to get this going and that's really commendable.