A few people have DMd me asking how they might get started building a GUI. A bunch of people DMd me saying they’d be interested in working for pay on it with the foundation (thats up to the new board when its finalized).
I figured it might be interesting to get a brain dump of what it takes to build a Zcash GUI. One side of this will be the zcash bits. Those are actually simple, no crypto needed. The other side is the GUI bits. I’d love if people would add a sort of skeleton on how to get a GUI up and running in python/javascript/electron/QT etc just in general or better link to good resources. Obviously the holy grail is cross platform. The point of this thread isn’t for you to build it, just advance the community’s knowledge. I figure everyone would be interested in what it takes to get started and might want to share any incites they have.
Unfortunately, I’m not the person to tell you how to do any of this. I’m a cryptographer who has near zero-knowledge of GUI programing. So hopefully people will come in and correct this as we go.
The rough sketch is zcash as you know it is actually zcashd, a command line client that also supports a JSON RPC Api. See the docs. Zcashd handles all the cryptographic logic and the business logic for managing coins. So the only thing you need to do is create buttons that make calls to zcashs APIs and handle a few events about receiving a payment. Most languages will have libraries to do JSON RPC. You don’t need to do anything as ugly as call the command line yourself and parse responses.
So the quick getting started is to download zcash for your platform. Natively we support linux, there are also experimental OSX and Windows builds. You’d manually get it running and then write a standalone program that displayed a UX and made calls via that API. (obviously later you’d make them both start via launching the app and package it , yada yada)
You will probably want to start running on testnet and use the z-cash test-net faucet to get coins. Testnet is “fake” zcash, the money is not real and its there to play around with. You can also run your own local testnet via regtest=1.
Beyond that, you then need to actually build a GUI. Have some main function that launches, makes the initial JSON RPC calls, and then do your thing. No need to handle cryptography, networking, or anything.