A todoList ethereum sample app made with create-react-app, Truffle and web3
While a TodoList app is not suited to ethereum-based backends, I originally wanted to do one to get my hands on this technology and to have a very simple app actually doing something I am familiar with as a front-end developper.
The goal of this sample app is to help anyone wanting to understand what are ethereum contracts and how they can be used as a distributed back-ends, with its limitations as well.
You must run a node on your computer, whether its a real or virtual one. For development speed reasons, the best choice is to use testrpc because you have as much ether as you want and don't need to mine transactions.
sudo npm install -g ethereumjs-testrpc
If you can't afford this, we've covered you with Vagrant. This piece of software allows you to run a lightweight linux virtual machine in the terminal. Thus, it uses much less power than a full VM and you can still enjoy your Windows environment and tools you are used to, while providing you linux compatibility for terminal tools.
To do so, it's as easy as:
vagrant upin a terminal opened at the project root. It may take some time as it must download an ubuntu ISO the first time it runs.
vagrant ssh. If it doesn't work (it probably won't in fact) you can use Git bash if you already have it on your computer. If you don't, follow those instructions.
And that's it ! Now you can run
testrpcand you should see your node running.
sudo npm install -g truffle
Note :npm install -g truffleon Windows.
Note : If install fails on windows (particularly if node-gyp is the issue), run Powershell as administrator and runnpm install -g windows-build-tools. It will allow you to install and use native node packages.
In a terminal (or in vagrant ssh on Windows, see above), run
npm run gethto initialize and run the ethereum node with geth console
personal.unlockAccount("ACCOUNT_TO_UNLOCK_ADDRESS", "pass")(see Note if you don't get it)
Note : At least the first time, you need to run those commands to create an account to mine on
Note 2: If you need to customize the geth parameters, check the "geth" task in gulpfile.js.
In another terminal, run
truffle compileand then
truffle migrate --reset
Warning here: You have to re-run those commands when you modify your contracts so that they are re-deployed to the blockchain.
Note : There is an experimental watcher that launch these commands when you save a contract. It may not work but it's worth the shot :npm run watch-contracts
With your node running and the smart contracts deployed to it, run in terminal
You're done !
Why is there both a truffle.js file and a truffle-config.js file?
Truffle requires the truffle.js file be named truffle-config on Windows machines. Feel free to delete the file that doesn't correspond to your platform.
Where is my production build?
The production build will be in the build_webpack folder. This is because Truffle outputs contract compilations to the build folder.
Where can I find more documentation?