Freshcom API - an open source eCommerce project using Phoenix

Freshcom API is an open source eCommerce backend built using Elixir & Phoenix, it provides a intuitive, developer friendly RESTful API.

Freshcom Dashboard is the admin panel front-end for Freshcom API built using VueJS.

I have previously done many eCommerce project mostly in Ruby on Rails, when a friend recommended me Elixir I immediately fall in love with the language. But there is really not much eCommerce related resource in the community, most of the open source ecom project were abandoned so I decided to roll my own and use it a opportunity to dive deeper into elixir & phoenix.

First line of code was written in Mar 2017, since then I have wrote and re-wrote it many times, its finally at a stage that I feel good enough to share tho still not production yet. This turns out to be a much bigger project than I expected, so I am actively looking for contributors. Any suggestions and code review are also welcome!!

Please check it out, any feedback is appreciated

22 Likes

Hi rbao,
I’m very excited about your project!
I’ll check it out and I’ll be back to you soon!
I could have a real business case for Freshcom…
All the best,
Aldo

Hey Aldo, thanks for checking it out, let me know if you encounter any problem.
If you do have a business case we can definitely chat more in detail.

Roy

Hi @rbao I am trying to play with freshcom_web and freshcom_backend but I don’t find the Get Startded installation/setup in the docs.

I am trying to run it my laptop but it sounds you are hard-coding it to run on AWS or am I misunderstanding something?

freshcom_web/config/config.exs:

config :ex_aws, region: System.get_env("AWS_REGION")

freshcom_web/config/dev.exs:

config :fc_state_storage, adapter: FCStateStorage.DynamoAdapter

By the way congrats for what looks to be a huge endeavor that you are taking alone.

Hi Exadra37 thanks for taking interest in Freshcom.

To answer your question first, right now Freshcom does a hard dependency with AWS DynamoDB for storing write side state through the DynamoAdapter. The Adapter is very straight forward to write, if you want to use other services instead of AWS, you can simply write your own adapter. There is also a MemoryAdapter for testing.

I have been rewriting a lot of stuff from what was originally the freshcom_api repo (which at the time was close to a beta, but I discovered some major flaw in the design and hence the rewrite). Currently there is still a long way to go before it can actually being used.

If you are looking for a production ready library then this is definitely not there yet. However if you are looking for something you can potentially use in the next 6 months to a year, or just want to play around I can definitely show you how to set it up.

I m in the Elixir Slack Channel, that is probably the best way to reach me. I can even give you a demo if you prefer.

Also there is Avia Commercd which is another Elixir eCom library that is under actively development. You can check them out as well see if it will fits your need better for now.

1 Like

Hi @rbao thanks for the quick reply.

I discovered first the Avia Commercd one and afterwards I saw the Freshcom one and I loved the fact that is event source based , thus I was looking to play with it to see how it works.

Currently I don’t have a need to use any eCommerce solution, but my background as a software developer started with the Prestashop eCommerce platform and I always had the dream of building a simple one just for fun, but never went through with it.

When I discovered event sourcing I though in doing some personal project to apply that concept but never end-up to dive on it. Now that I discover Elixir I really want to dive in something with event sourcing in the mix, because I think Elixir and event sourcing have born for each other.

I really would love to play with your solution, but I really would like for you to consider it to be agnostic of the cloud being used and to be able to run it locally.

Regarding writing the adapter I can try with my limited Elixir knowlodge, at least will be a good way to learn and do something useful to open source.

I will discover you on slack, but why not a Gitter channel for your project? Gitter integrates directly with a Github repo…

Do you want me to contribute with a docker stack for your project?

Hi, good to know that, its great that you want to learn ES, elixir and ES is a very nice mix.

To answer your question, right now its just myself working on it since its not at stage where someone can use it right the way I didn’t bother to create a Gitter. I can definitely create one once it get has some tractions, or if there is people willing to contribute.

And yes, eventually I do want to make it agnostic to 3rd party services.

I am not too familiar with docker and how that work, lets chat further on Slack :slight_smile: