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)