README.md

# ExTerm

![tests](https://github.com/e-xyza/ex_term/actions/workflows/test_flow.yml/badge.svg)

![screenshot](screenshot.png)

ExTerm is a terminal `Phoenix.LiveView`.  By default, ExTerm provides an IEx 
terminal usable as a web interface, however, this is customizable and you may
use ExTerm for other CLIs.

Under the hood, ExTerm is a generic interface for converting erlang IO protocol 
messages into web output and translating web input into responses in the IO 
protocol.

## Installation

Add ExTerm to your mix.exs:

```elixir

def deps do
[
  # ...
  {:ex_term, "~> 0.2"}
  # ...
]
end
```

```elixir

def deps do
[
  # ...
  {:ex_term, "~> 0.2"}
  # ...
]
end
```

### How to create a live terminal in your Phoenix router

You must supply a `Phoenix.PubSub` server that is the communication channel
to send important updates to the liveview.  It's recommended to use the
PubSub server associated with your web server.

```elixir
import ExTerm.Router

scope "/live_term" do
  pipe_through :browser

  live_term "/", pubsub_server: MyAppWeb.PubSub
end
```

## Documentation

Documentation is available on hexdocs.pm: https://hexdocs.pm/ex_term

### Planned (Pro?) features:
- provenance tracking
- multiplayer mode