# ExUssdSimulator
### The development UI for [ExUssd](


## Installation

Add the `:ex_ussd_simulator` package to your `deps` list in `mix.exs`:

defp deps do
  {:ex_ussd_simulator, "~> 0.1.3", only: :dev}

You need to set the `callback_url` of the simulator to your `ExUssd` endpoint:

config :ex_ussd_simulator,
  callback_url: "http://localhost:4000/api/callback",
  # Optional: Set the serviceCode with which the simulator will call your endpoint.
  # Defaults to: *123#
  service_code: "*456#"

Start your phoenix server with `mix phx.server`. Now you can visit [`localhost:5123`](http://localhost:5123) from your browser.

### Why doesn't the simulator run at `localhost:4000`?

We wanted to separate the `ExUssdSimulator` dependencies from your project dependencies as much as possible. Your project potentially runs a "headless" phoenix endpoint, that is without Phoenix Views or templates or Phoenix LiveView. That is, API endpoints only. 

The `ExUssdSimulator` however, depends on Phoenix LiveView, which also needs to be configured. We did not want you to configure LiveView only to use the simulator, which is why we start a separate endpoint for the simulator in the `:dev`-environment only.

## Development

To start your Phoenix server:

  * Install dependencies with `mix deps.get`
  * Install Node.js dependencies with `npm install` inside the `assets` directory
  * Start Phoenix endpoint with `mix phx.server`

Now you can visit [`localhost:5123`](http://localhost:5123) from your browser.

### Important

Please run `mix assets.compile` and push the changes in `priv/static/` before making any PRs.
This ensures that we always keep the production versions of `app.css` and `app.js` in the library and not the larger development versions.