# BasicECommerce
A library to manager orders in a basic e-commerce application.
## Installation
1. Add the library to your app dependencies in your `mix.exs`:
```
defp deps do
[
{:basic_ecommerce, "~> 0.1.0"}
]
end
```
2. Configure an adapter in `config/config.exs`:
```
config :my_app, MyApp.BasicECommerce,
adapter: BasicECommerce.DataSource.JsonAdapter,
json_file_path: "/data/price_data.json"
```
3. Define your own module using the configured adapter
```
defmodule MyApp.BasicECommerce do
use BasicECommerce, otp_app: :my_app
end
```
## Usage
The main logic is in `BasicECommerce.compute_total/1` which takes a `BasicECommerce.Order` and returns a total price.
To create a new order, call `BasicECommerce.Order.new/0`.
And to add products to an order, call `BasicECommerce.Order.add_product/2` which takes an order and an `atom` which represent the SKU of the product.
You can have a look at the demo application in the `apps/demo` folder for a complete implementation.
## Documentation
Run `mix docs` to generate documentation.
## Tests
Run `mix test` to run unit tests.