-
Notifications
You must be signed in to change notification settings - Fork 39
Development environment
To make a distributed app (dApp), you will usually need:
- One or more contracts (written in Solidity)
- A client that talks to your contract
It is recommended to develop dApp clients using common web development languages: HTML, Javascript, CSS. The two biggest advantages of this are:
- Many people already know how to make web applications and can leverage their existing knowledge
- Apps can in the future easily run in Mist, a browser for Ethereum dApps
There's a bunch of useful tools to get started developing dApps. The choice depends to some extent on your prior experience developing web applications.
Truffle is a command line tool setting up a project and simplifying a lot of common tasks. The list of features is already long and the tool is actively developed. Especially if you don't have much experience setting up web projects, this is a great choice. The team already made some good decisions for you, so you can get started right away.
If you have experience with Webpack, you should check out this setup and its guide instead. It does most of the key things that Truffle does, with the added advantage that instead of learning a new command line tool you can just continue using what you used before, and also leverage the huge community around Webpack and its extensions. The cool thing is you can easily add your favorite framework (e.g. React) or testing library (e.g. Mocha) and don't depend on another tool (and third-party). If you have no experience with this, the learning curve might be a little bit steep, though.
To test the contract and its API, you need to deploy it to an Ethereum network. The easiest way to do this is using testrpc, a lightweight local test implementation of Ethereum. It offers the same RPC interface the real Ethereum nodes offer, but is much faster and easier to setup because it's not really mining on a shared network.
If you want to connect to an existing network or run a real one on your own, geth is the command line tool of choice. How to setup a local test node
For debugging Solidity code and having a look on the blockchain, Mix can be a useful tool, but it's a bit convoluted at the moment. (TODO: Add details after talking to chriseth)
Finally, to test the end result you can use Mist, as this will hopefully some day be what your users will access your app with. Mist is under heavy development and not yet ready to use, sadly.