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)