README.md

# ExCatalog

[![Coverage Status](https://coveralls.io/repos/github/mithereal/ex_catalog/badge.svg?branch=main)](https://coveralls.io/github/mithereal/ex_catalog?branch=main)
![CircleCI](https://img.shields.io/circleci/build/github/mithereal/ex_catalog)
[![Version](https://img.shields.io/hexpm/v/ex_catalog.svg?style=flat-square)](https://hex.pm/packages/ex_catalog)
![GitHub](https://img.shields.io/github/license/mithereal/ex_catalog)
![GitHub last commit (branch)](https://img.shields.io/github/last-commit/mithereal/ex_catalog/main)

** A General E-commerce Catalog System **

Think of this like an old school paper mail in catalog, we dont need all the fluff (extra db tables etc) as in in most ecommerce implementations, this is just a catalog, decoupled from inventory management with some options such as csv and pdf export, integer or binary primary key.

## Installation

If [available in Hex](https://hex.pm/docs/publish), the package can be installed
by adding `ex_catalog` to your list of dependencies in `mix.exs`:

```elixir
def deps do
  [
    {:ex_catalog, ">= 0.0.0"}
  ]
end
```

## Creating the Database Tables

The Database Tables can be created by running the mix alias.

```elixir
mix install
```

## Config

Add the following to your config.exs
```elixir
config :ex_catalog, :ecto_repos, [ExCatalog.Repo]

config :ex_cldr,
  json_library: Jason
```

Add the following to your dev and/or prod config
```elixir
config :ex_catalog, :ecto_repos, [ExCatalog.Repo]

config :ex_catalog, ExCatalog.Repo,
  adapter: Ecto.Adapters.Postgres,
  username: "postgres",
  password: "postgres",
  database: "ex_catalog_dev",
  hostname: "localhost",
  pool_size: 10,
  primary_key_type: :uuid ## optional
```

## Generate a migration
```elixir
mix ExCatalog.install
```

## (Optional) startup config options for using currency autoloader etc
```elixir
config :ex_money,
  exchange_rates_retrieve_every: 300_000,
  api_module: Money.ExchangeRates.OpenExchangeRates,
  callback_module: Money.ExchangeRates.Callback,
  exchange_rates_cache_module: Money.ExchangeRates.Cache.Ets,
  preload_historic_rates: nil,
  retriever_options: nil,
  log_failure: :warn,
  log_info: :info,
  log_success: nil,
  json_library: Jason,
  default_cldr_backend: ExCatalog.Cldr
  
config :ex_catalog, :autoload_exchange_rates, true 
```

Documentation can be generated with [ExDoc](https://github.com/elixir-lang/ex_doc)
and published on [HexDocs](https://hexdocs.pm). Once published, the docs can
be found at <https://hexdocs.pm/ex_catalog>.