Xest connects to various cryptocurrencies exchanges to provide an overview of your crypto assets
On each exchange, it publicly retrieves:
In your wallet, it privately:
You need an API key on the exchange to get it to work properly.
DISCLAIMER : Although this is a web application, it is not designed to be run on a publicly accessible system or network. Only use it on your machine, after making sure it is not remotely accessible.
Security is not the current concern. The bare minimum has been done (secrets are on your system, not in the code), and it is possible there are times and places where secrets are exposed during runtime.
mix docs
TODO: describe the setup, on a dev machine, of apikey & secret for authentication.
To run the test suite (async):
mix test
For a TDD setup, you can use
mix test.watch
Note the tests run locally only with cassettes (recorded network request/responses). The cassettes must be kept up to date by a developer, but this requires a specific setup with an authentication token, and therefore cannot be automated.
For coverage you can use
mix coveralls
For code analysis you can use
mix credo
mix phx.server
This is an Elixir Umbrella project, trying to remain monorepo as long as possible.
Currently there are 4 apps here:
For interactive testing you can use iex:
alexv@pop-os:/opt/Projects/elixir-playground/xest_umbrella$ iex -S mix
Erlang/OTP 23 [erts-11.1.3] [source] [64-bit] [smp:12:12] [ds:12:12:10] [async-threads:1] [hipe]
==> xest
Compiling 5 files (.ex)
Generated xest app
==> xest_web
Compiling 15 files (.ex)
Generated xest_web app
iex(1)> Xest.Binance.system_status()
%{"msg" => "normal", "status" => 0}
TODO : describe the process to test against and update cassettes
graph TD
B[:xest_web] --> |periodic| D{:xest}
D --> |periodic| E[:xest_kraken]
D --> |periodic| F[:xest_binance]