---
# System prepended metadata

title: UI Discussion Summary

---

UI Discussion Summary
=======

## Implementations

### 1. ElectronJS App
The original idea.

### 2. Web App
Pi and cloud users may not want a desktop UI. But a GUI is good to use for them.

### 3. Deploy remotely
This is another option for Pi or cloud users. And if we support remote deployment then it's easy to add cluster deployment later.

### 4. Be stick to containers?
Loose couple with containers, build images locally, install docker

### Conclusion

I don't see any conflict between these implementations. On the contrary, there is an incremental relationship between them.

Web App -> ElectronJS App -> Deployment variants (remote/cluster/no contianers/etc...)

So the problem turns into what is the MVP implementation of GUI. I think it's a **web app** like what we had in webui container.

### What is missing?

1. A GUI (pure UI layer)

* Web browser based (DOM)
* Native (Cocoa/WPF/Gtk/Qt/Android/iOS/Flutter/...)

2. An API for deployment and control

We have xud-docker to do deployment now but it has no such API provided. So take a simple launch as an example. We need APIs like

* Pulling images
* Creating network
* Creating/Starting containers
* Use CLIs for each nodes (docker exec / access node RPC port)

This is just the most intuitive API design borrowed from xud-docker. But from a high level we probabaly need something like

* Deploy services using declarative language (docker-compose/docker swarm/kubernetes/ansible/salt)
It cloud deploy containerized services or native services.
    - macOS (launchd)
    - Linux (systemd/systemv)
    - Windows services

* Control services (RPC invocation/CLIs)



## The setup flows

### 1. When do we need to create a wallet (like xud-docker or not)?

> for reference eclair starts prompting the user to backup the seed when the user has received funds
or it can be a warning sign somewhere in the GUI asking the user to setup backup (like breeze does it)

### 2. What to display when there is no wallet?
   
   - Clients syncing
   - Xud network bird's-eye view (Tor problem)
   - Xud markets
   - News (blogs/tweets/prices)

### 3. What to display when there is a wallet?

   - The balance (deposit address/QR code)
   - The trade (start trading manually OR activate arby yield farming (AMM))
   - Nodes status

### 4. A CTA design (UX)

> Guiding the user trough the process in a gui is easier and gives more confidence than just linking some written docs imho

### 5. Overall status

> I don't need to understand lnd/connext/bitcoind/litecoind status individually - just status: 1. Syncing or 2. Ready to trade

> but again, if this product is for market makers (not takers) then this kind of overview bar is probably nice to have (even better if I could click on it and get the output of docker logs -f container_name)

### 6. A simple use case


   - Install docker (optional, cloud be done in step 2)
   - Run xud script/Download xud.exe/xud.dmg/xud.tar.gz and click it
   - Bump out GUI window/Print "Open http://localhsot:1337" in the console. (We can learn from create-react-app scripts. It prints http://localhost:3000 and opens the browser automatically)