Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

XUD UI Project #656

Closed
kilrau opened this issue Aug 11, 2020 · 5 comments
Closed

XUD UI Project #656

kilrau opened this issue Aug 11, 2020 · 5 comments
Assignees
Labels
P1 top priority

Comments

@kilrau
Copy link
Contributor

kilrau commented Aug 11, 2020

Original issue: ExchangeUnion/xud#471.

We want to revive this as a native GUI project for market makers, sitting atop the current xud-docker. The setup UX should be similar to https://lightningpolar.com/, a native GUI connecting to docker in the background:
image

If docker is not installed, it helps installing it. Target platforms:

  • macOS
  • ubuntu amd64/arch64
  • windows 10 amd 64 with docker (using the wsl2 backend)

Step 1: agree on the setup concept (how GUI and xud-docker connect) & tech for the UI to achieve above cross-platform support. xud-docker will remain a CLI-first project just like all other bitcoin/lightning projects out there (meaning some features might be accessible via cli only, never vice versa) since we are optimizing for technical market makers running this on an "unattended" setup. It is also ok for the GUI to use xud-docker specific features. Goal is to run xud-docker under the hood as-is.

Step 2: select GUI features, wireframing, UI design

Step 3: development 🎉

@kilrau kilrau added the P1 top priority label Aug 11, 2020
@peartobear
Copy link

There are three projects we could look for inspiration: Lightning Polar, Sparkswap, and Zap Desktop. All of these projects use Electron with ReactJS for cross platform desktop app support. Additional TypeScript use will help increase productivity. So I propose a generalised tech stack of Electron + ReactJS + TypeScript. The frontend dev could choose either Redux, ReactN, or Easy Peasy for local and global state management. In case, React Hooks serves the purpose, third party state management can be discarded. It's important that the app uses Vercel's Hazel for pushing updates, as there will inevitably be critical hotfixes that would be required on already installed versions. End to end testing with Jest, TestCafe, or Cypress is also recommended before release.

Just like lightning polar, there would be setup dependencies necessary to run the GUI, For windows and Mac - Docker Desktop will do the trick. For Linux, Docker Server and Docker Compose will have to be installed separately.

The GUI will only support the XUD light setup. Since the prod version will deal with mainnet assets, XUD docker needs to be hardened with best practices. Just like Lightning Polar, The XUD Docker GUI app will create a docker image from XUD dockerFile, and then build that image. Sparkswap has a similar dockarised LND engine that encapsulates, BTCD, LTCD, and, forked LND-BTC and LND-LTC nodes. They then pull that LND-engine as a dependency on the Electron powered desktop frontend. The architecture and GUI connection logic in our case can be exactly the same. Zap Desktop can be referenced on how to deal with Neutrino, in case that is required.

@reliveyy
Copy link
Collaborator

reliveyy commented Aug 14, 2020

I'm looking forward to try Electron. @kilrau And they got autoUpdater API which I'm struggling to fix recently in xud-docker :P

@peartobear
Copy link

@reliveyy check out Vercel's Hazel as an alternative to autoUpdater. It's super fast and tiniest update server. autoUpdater doesn't support Linux yet.

@kilrau
Copy link
Contributor Author

kilrau commented Aug 19, 2020

@peartobear and I started a PRD, keep you posted.

@kilrau kilrau changed the title [Concept] GUI Project XUD UI Project Aug 26, 2020
@kilrau
Copy link
Contributor Author

kilrau commented Sep 7, 2020

Update: we decided to go for a web-based basic UI for market makers first instead of a standalone UI since the target user for such remains somewhat unclear. Closing here for now.

@kilrau kilrau closed this as completed Sep 7, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
P1 top priority
Projects
None yet
Development

No branches or pull requests

3 participants