{"id":18133321,"url":"https://github.com/andreapavoni/nova","last_synced_at":"2025-04-16T06:20:06.001Z","repository":{"id":136327765,"uuid":"41367582","full_name":"andreapavoni/nova","owner":"andreapavoni","description":"An attempt to port/rebuild Spree, an open source e-commerce solution, with Elixir and Phoenix.","archived":false,"fork":false,"pushed_at":"2015-10-09T14:48:23.000Z","size":425,"stargazers_count":130,"open_issues_count":3,"forks_count":11,"subscribers_count":19,"default_branch":"master","last_synced_at":"2025-03-29T05:11:20.118Z","etag":null,"topics":["ecommerce","elixir","phoenix"],"latest_commit_sha":null,"homepage":"","language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andreapavoni.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-08-25T14:19:07.000Z","updated_at":"2024-11-04T19:32:54.000Z","dependencies_parsed_at":"2023-03-13T11:59:05.610Z","dependency_job_id":null,"html_url":"https://github.com/andreapavoni/nova","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreapavoni%2Fnova","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreapavoni%2Fnova/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreapavoni%2Fnova/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreapavoni%2Fnova/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andreapavoni","download_url":"https://codeload.github.com/andreapavoni/nova/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249207245,"owners_count":21230029,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ecommerce","elixir","phoenix"],"created_at":"2024-11-01T13:07:26.207Z","updated_at":"2025-04-16T06:20:05.977Z","avatar_url":"https://github.com/andreapavoni.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Nova\n\n[![Build Status](https://travis-ci.org/nebulab/nova.svg)](https://travis-ci.org/nebulab/nova) [![Coverage Status](https://coveralls.io/repos/nebulab/nova/badge.svg?branch=master\u0026service=github)](https://coveralls.io/github/nebulab/nova?branch=master) [![Stories in Ready](https://badge.waffle.io/nebulab/nova.svg?label=ready\u0026title=Ready)](http://waffle.io/nebulab/nova)\n\nAn attempt to port/rebuild [Spree](http://spreecommerce.com), an open source e-commerce solution, with [Phoenix](http://www.phoenixframework.org/).\n\n\n## Vision\nSpree is an excellent product however,\nfor several reasons, it started to show some _limits_:\n\n* being written in Ruby and Rails requires a lot of hosting resources\n* it became a big, monolithic piece of software, really hard to customize\n* it slowed down the development pace (_perhaps_ because of the point above)\n\nSo here's the deal: why not to port/rebuild Spree with Elixir and Phoenix? The main\nidea is to take inspiration from the many _Spree's good parts_ and build a new\ngeneration ecommerce for the next years.\n\n## Roadmap, a sort of\nSee [TODO](TODO.md) for more details, meanwhile, here there are _some intentions_:\n\n### Short term\nThe 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_:\n\n* get a monolithic app, for now\n* as a _Customer_ (say a guest user for the first iteration), I want to purchase products (add to cart -\u003e do checkout)\n* as an _Admin_, I want to manage products and orders through an HTTP-JSON API\n\n### Mid term\nOnce we get an initial, working, very basic product, we can start to split the whole app into components. Very similar to Spree:\n\n* `core`: contains the core models and their basic integrations (queries, commands, ...);\n* `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;\n* `frontend`: uses plain old server-rendered HTML pages;\n* `admin`: not a top priority. it's like `frontend`, for admins;\n* _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.\n\n### Long term\nDon't know right now, _world domination™_? :-)\n\n## Contributing\n1. Be nice with others\n2. Check [issues](https://github.com/nebulab/nova/issues) or, if your prefer kanban boards, we have [waffle](https://waffle.io/nebulab/nova) too\n3. Fork this repo\n4. Write code (and tests)\n5. Open a PR\n\n## Setup\n\n  1. Copy `.env-example.exs` to `.env.exs`, then edit it to set secret configs\n  2. Install dependencies with `mix deps.get`\n  3. Create and migrate your database with `mix ecto.create \u0026\u0026 mix ecto.migrate`\n  4. Run tests with `mix test`\n  5. Install npm dependencies with `npm install`\n  5. Start Phoenix endpoint with `mix phoenix.server`\n  6. Visit [`localhost:4000`](http://localhost:4000) from your browser\n\n## Credits\n* [Nebulab](http://nebulab.it) for the support.\n* [Contributors](https://github.com/nebulab/nova/graphs/contributors).\n* [@olistik](https://olisti.co/) because he solved the [issue #1](https://github.com/nebulab/nova/issues/1) :-)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandreapavoni%2Fnova","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandreapavoni%2Fnova","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandreapavoni%2Fnova/lists"}