Tololo eCommerce: Ash Example

Hello, alongside @rekkice
we made an example eCommerce application called “Tololo”.

This application is using the following technology:

  • Elixir 1.18 + Phoenix
  • Ash
  • Prometheus (Store metrics)
  • Kafka (Send events for integration with other systems)
  • Grafana (dashboards)
  • Loki (logs) + Vector (log sender)
  • Open Telemetry + Tenpo (traces)
  • Fly.io
  • Nix Devenv
  • Antora Docs
  • Github Actions
  • Bruno GraphQL Examples
  • Telegram Bot

The idea is creating an open source and libre alternative to Uber Eats and similar applications. Tailored for “Take Away” type restaurants and small stores.

Currently the application can:

  • Show a realtime Map with the delivery.
  • Manage products, discounts and shopping carts.
  • Have a small admin for back office.
  • A telegram bot to send realtime map location updates.

It also supports an “Extension” architecture so components such as Prometheus, Grafana and Kafka are totally optional if you don’t need them.

This was a summer project for us to learn more about Ash and try to be the most professional as possible. Hope is useful as an example and maybe enable more stores to use Elixir as a backend.

We plan to continue working with this project but since is just a spare time only it may not be as fast to implement new features or fix bugs as other eCommerce solutions. But we hope it serves as a good example for an eCommerce with Elixir and Ash.

Take care :smiley:

28 Likes

I probably won’t have time to review it in depth, but I’ve taken a poke around and I can say for sure that there’s a lot of really awesome usage of Ash here. This seems like a great resource for folks to see what is possible.

6 Likes

Awesome, I will definitely use this as a reference for my Ash projects.

1 Like

Thank you for the great initiative and efforts.
Would you think Beacon CMS could be in the future fit within it?

1 Like

Thanks for sharing :slight_smile:

1 Like

It can be integrated by calling the GraphQL endpoints. Or you can use the Ash models and use them inside your codebase.