Need help with nova?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

andreapavoni
125 Stars 10 Forks 95 Commits 3 Opened issues

Description

An attempt to port/rebuild Spree, an open source e-commerce solution, with Elixir and Phoenix.

Services available

!
?

Need anything else?

Contributors list

# 121,704
golang
Elixir
elixir-...
lesson
86 commits
# 23,820
Elixir
elixir-...
Rails
bitbuck...
1 commit
# 415,066
Discord
chatbot...
HTML
chatops
1 commit

Nova

Build Status Coverage Status Stories in Ready

An attempt to port/rebuild Spree, an open source e-commerce solution, with Phoenix.

Vision

Spree is an excellent product however, for several reasons, it started to show some limits:

  • being written in Ruby and Rails requires a lot of hosting resources
  • it became a big, monolithic piece of software, really hard to customize
  • it slowed down the development pace (perhaps because of the point above)

So here's the deal: why not to port/rebuild Spree with Elixir and Phoenix? The main idea is to take inspiration from the many Spree's good parts and build a new generation ecommerce for the next years.

Roadmap, a sort of

See TODO for more details, meanwhile, here there are some intentions:

Short term

The first short term goal is to quickly build a bare-bones MVP with the core models (eg:

Product
,
Variant
,
Order
,
LineItem
, ...) and the necessary code to glue them through isolated, well defined commands. Then, at a very high level:
  • get a monolithic app, for now
  • as a Customer (say a guest user for the first iteration), I want to purchase products (add to cart -> do checkout)
  • as an Admin, I want to manage products and orders through an HTTP-JSON API

Mid term

Once we get an initial, working, very basic product, we can start to split the whole app into components. Very similar to Spree:

  • core
    : contains the core models and their basic integrations (queries, commands, ...);
  • api
    : all actions should be done from an HTTP-JSON API, so anyone can build its custom frontend (eg: a Single Page App, command line, mobile app, ...), especially for admins;
  • frontend
    : uses plain old server-rendered HTML pages;
  • admin
    : not a top priority. it's like
    frontend
    , for admins;
  • extensions: everything that doesn't strictly fit into the above components, should be done in a dedicated package. After all, some features are very specific to certain needs, we don't want another monolithic piece of software.

Long term

Don't know right now, world domination™? :-)

Contributing

  1. Be nice with others
  2. Check issues or, if your prefer kanban boards, we have waffle too
  3. Fork this repo
  4. Write code (and tests)
  5. Open a PR

Setup

  1. Copy
    .env-example.exs
    to
    .env.exs
    , then edit it to set secret configs
  2. Install dependencies with
    mix deps.get
  3. Create and migrate your database with
    mix ecto.create && mix ecto.migrate
  4. Run tests with
    mix test
  5. Install npm dependencies with
    npm install
  6. Start Phoenix endpoint with
    mix phoenix.server
  7. Visit
    localhost:4000
    from your browser

Credits

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.