{"id":15407201,"url":"https://github.com/ltfschoen/dapp_truffle","last_synced_at":"2025-07-07T19:34:24.535Z","repository":{"id":76619997,"uuid":"96650619","full_name":"ltfschoen/dapp_truffle","owner":"ltfschoen","description":"MetaCoin Truffle DApp","archived":false,"fork":false,"pushed_at":"2017-07-10T08:18:21.000Z","size":139,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-02T03:43:27.493Z","etag":null,"topics":["solidity-contracts","testrpc","truffle-framework","webpack"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ltfschoen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-07-08T23:57:43.000Z","updated_at":"2018-08-07T08:15:50.000Z","dependencies_parsed_at":null,"dependency_job_id":"bd79d1c2-a4aa-4fd1-9c13-92f52f7f47e6","html_url":"https://github.com/ltfschoen/dapp_truffle","commit_stats":{"total_commits":7,"total_committers":1,"mean_commits":7.0,"dds":0.0,"last_synced_commit":"fb966ea4c30cae1bd91c83ccc65f309fcbf18376"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ltfschoen%2Fdapp_truffle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ltfschoen%2Fdapp_truffle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ltfschoen%2Fdapp_truffle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ltfschoen%2Fdapp_truffle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ltfschoen","download_url":"https://codeload.github.com/ltfschoen/dapp_truffle/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245956321,"owners_count":20700079,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["solidity-contracts","testrpc","truffle-framework","webpack"],"created_at":"2024-10-01T16:27:40.659Z","updated_at":"2025-03-28T02:25:59.444Z","avatar_url":"https://github.com/ltfschoen.png","language":"JavaScript","readme":"* Original Setup\n\n  * Guide for Truffle \u003ev3 http://truffleframework.com/docs/\n  \t* Warning: Deprecated guide for Truffle v1 and v2 at this link https://truffle.readthedocs.io/en/develop\n\n  * Install relevant Node.js version \t\n\t\t```\n\t\tnvm use v8.0.0\n\t\t```\n\n  * Install Truffle\n      ```\n      npm install -g truffle\n      ```\n\n  * Install Ethereum TestRPC Client\n      * https://github.com/ethereumjs/testrpc\n      * Benefits\n      \t* Blockchain-in-memory runs only on development machine. \n      \t* Processes transactions instantly instead of waiting for default block time so can test code works quickly \n      \t* Immediate feedback when smart contracts run into errors. \n      \t* Ideal client for automated testing\n      \t* Truffle knows how to use its special features to speed up test runtime by almost 90%\n      ```\n      npm install -g ethereumjs-testrpc\n      ```\n\n  * Create Truffle Dapp - http://truffleframework.com/docs/getting_started/project\n\n  \t* Installs truffle-init-webpack, a webpack project with Truffle. that includes contracts, migrations, tests, user interface and webpack build pipeline.\n      ```\n      mkdir dapp_truffle; cd dapp_truffle; truffle unbox;\n      ```\n\n  * Compile\n      * Solidity Contracts\n          * http://solidity.readthedocs.io/en/latest/contracts.html#libraries\n\n* System Info\n\t```\n\ttruffle version\n\t```\n\n* Setup\n\n  * Install and switch to relevant Node.js version \t\n  \t```\n  \tnvm install\n  \t```\n\n  * Install Truffle https://truffle.readthedocs.io/en/develop/getting_started/installation/\n    ```\n    npm install -g truffle\n    ```\n\n  * Install Ethereum TestRPC Client \n  \t* https://truffle.readthedocs.io/en/develop/getting_started/client/\n    * https://github.com/ethereumjs/testrpc\n    ```\n    npm install -g ethereumjs-testrpc\n    ```\n\n\t* Run Truffle Dapp\n\n  \t* Run Ethereum Client (in separate Terminal tab)\n  \t\t* Create DB folder\n  \t\t\t```\n  \t\t\tmkdir db \u0026\u0026 mkdir db/chain_database\n  \t\t\t```\n\t\t\t* Delete DB folder if starting fresh\n\t\t\t\t```\n\t\t\t\trm -rf ./db\n\t\t\t\t```\n  \t\t* [ethereumjs-testrpc](https://github.com/ethereumjs/testrpc)\n  \t\t\t* Basic `testrpc`\n  \t\t\t* Advanced\n\t  \t\t\t```\n\t\t\t\t\ttestrpc --account=\"0x0000000000000000000000000000000000000000000000000000000000000001, 2471238800000000000\" \\\n\t\t\t\t\t        --account=\"0x0000000000000000000000000000000000000000000000000000000000000002, 4471238800000000000\" \\\n\t\t\t\t\t        --unlock \"0x0000000000000000000000000000000000000000000000000000000000000001\" \\\n\t\t\t\t\t        --unlock \"0x0000000000000000000000000000000000000000000000000000000000000002\" \\\n\t\t\t\t\t        --blocktime 0 \\\n\t\t\t\t\t        --deterministic true \\\n\t\t\t\t\t        --port 8545 \\\n\t\t\t\t\t        --hostname localhost \\\n\t\t\t\t\t        --seed 'blah' \\\n\t\t\t\t\t        --gasPrice 20000000000 \\\n\t\t\t\t\t        --gasLimit 0x47E7C4 \\\n\t\t\t\t\t        --debug true \\\n\t\t\t\t\t        --mem true \\\n\t\t\t\t\t        --mnemonic 'something' \\\n\t\t\t\t\t        --db './db/chain_database' \\\n\t  \t\t\t```\n  \t\t* Served on http://localhost:8545\n\n\t\t* Deploy Contracts onto Network of choice (i.e. \"development\") defined in truffle.js\n\n\t\t\t* Compile: - http://truffleframework.com/docs/getting_started/compile\n\t\t\t\t* Compile Contract Latest - `truffle compile` (only changes since last compile)\n\t\t\t\t* Compile Contract Full - `truffle compile --compile-all` (full compile)\n\n\t\t\t* Migrate: \n\t\t\t\t* Run Migrations Latest - `truffle migrate`\n\t\t\t\t* Run Migrations Full - `truffle migrate --reset --network development`\n\t\t\t\t* Run Contracts from specific Migration - `truffle migrate -f \u003cnumber\u003e`\n\t\t\t\t* Run Migration on specific network called 'live' defined in truffle.js - `truffle migrate --network live`\n\t\t\n\t\t* Dapp installation of NPM Dependencies from package.json into directory node_modules/ `npm install`\n\n\t\t* Dapp installation of [EthPM](https://www.ethpm.com/) Dependencies from ethpm.json into directory installed_contracts/ `truffle install` (or `truffle install \u003cpackage name\u003e@\u003cversion\u003e)\n\t\t\t* Note:\t\n\t\t\t\t* Truffle search installed packages from EthPM first before searching for packages installed from NPM, so in the rare case of a naming conflict the package installed via EthPM is used\n\t\t\t* References\n\t\t\t\t* NPM http://truffleframework.com/docs/getting_started/packages-npm\n\t\t\t\t* EthPM http://truffleframework.com/docs/getting_started/packages-ethpm\n\n\t\t* Build Dapp Front-end:\n\t\t\t* Build Artifacts (requires Default or Custom Builder such as Webpack to be configured)\n\t\t\t\t```\n\t\t\t\tnpm run build\n\t\t\t\t``` \n\t\t\t\t(same as `truffle build`)\n\n  \t* Run Dapp Server\n  \t\t* Build App and Run Dev Server: `npm run dev` (so changes are re-built automatically)\n  \t\t\t* Served at http://localhost:8080\n  \t\t\t* Open `open http://localhost:8080` in browser\n\n  \t\t\t* Screenshot:\n\n  \t\t\t\t![alt tag](https://raw.githubusercontent.com/ltfschoen/dapp_truffle/master/screenshots/gui.png)\n\n\t\t\t\t* Example:\n\t\t\t\t\t* Within browser transfer say 10 wei to Account No.  0x0000000000000000000000000000000000000000000000000000000000000001 that we created on Ethereum TestRPC\n\n\t\t\t\t* Check Account Balances from Terminal by loading External JavaScript file:\n\t\t\t\t\t```\n\t\t\t\t\ttruffle exec './scripts/checkAllBalances.js’\n\t\t\t\t\t```\n\t\t\n\t\t* Watch\n\t\t\t* Watch for changes to contracts, app and config files. Rebuild app upon changes.\n\t\t\t```\n\t\t\ttruffle watch\n\t\t\t```\n\n\t\t\t* Reference\n\t\t\t\t* http://truffleframework.com/docs/advanced/commands\n\t\t\n\t\t* Test: \n\t\t\t```\n\t\t\ttruffle test\n\t\t\ttruffle test ./path/to/test/file.js\n\t\t\t```\n\n\t\t* Linter\n  \t\t* Run Linter: `npm run lint`\n\n* Truffle Interactive Console (REPL) \n\t* Run REPL on specified network and log communication between Truffle and the RPC\n\t\t```\n\t\ttruffle console --network development --verbose-rpc\n\t\t```\n\n\t\t* Try the following commands\n\t\t\t```\n\t\t\tweb3\n\n\t\t\t// Show existing MetaCoin accounts\n\t\t\tweb3.eth.accounts\n\n\t\t\ti.e. \n\t\t\t\t[ '0x7e5f4552091a69125d5dfcb7b8c2659029395bdf',\n  \t\t\t\t'0x2b5ad5c4795c026514f8317c7a215e218dccd6cf' ]\n\n \t\t\tweb3.eth.blockNumber\n\t\t\tvar Web3 = require('web3');\n\t\t\tvar web3 = new Web3.providers.HttpProvider(\"http://localhost:8545\");\n\t\t\tweb3.isConnected();\n\t\t\tvar contract = require(\"truffle-contract\");\n\n\t\t\t/*\n\t\t\t * Execute Custom Contract (MetaCoin) Functions on Ethereum Network (i.e. we * previously created the following functions in MetaCoin.sol: sendCoin, \n\t\t\t * getBalanceInEth, getBalance)\n\t\t\t */ \n\n\t\t\t// Call sendCoin function to send Meta coins from one account to another. Execute as 'transaction' that persists changes to the network\n\n\t\t\t// Get reference to the 2x Ethereum Account Addresses we created on the Ethereum.js TestRPC network:\n\t\t\tvar account_one = web3.eth.accounts[0]; // an address\n\t\t\tvar account_two = web3.eth.accounts[1]; // another address\n\n\t\t\t// Show Account Balances \n\t\t\tweb3.eth.getBalance(account_one)\n\t\t\tweb3.eth.getBalance(account_two)\n\n\t\t\t/*\n\t\t\t * Call the Contract Abstraction's `sendCoin` function directly\n\t\t\t * (passing a special object as the last parameter that allows Editing of\n\t\t\t * specific transaction details) that results \n\t\t\t * in a 'transaction' (WRITE DATA instead of a 'call') and callback function * only fires when transaction successful\n\t\t\t */\n\t\t\tvar meta;\n\n\t\t\t// Refer to alternative better approach using `MetaCoin.at(...)`: https://github.com/trufflesuite/truffle-contract\n\t\t\tMetaCoin.deployed().then(function(instance) {\n\t\t\t  meta = instance;\n\t\t\t  return meta.sendCoin(account_two, 10, {from: account_one});\n\t\t\t}).then(function(result) {\n\t\t\t  // callback that when called means transaction was successfully processed\n\t\t\t  // Validate that triggered the Transfer event by checking logs\n\t\t\t  for (var i = 0; i \u003c result.logs.length; i++) {\n\t\t\t    var log = result.logs[i];\n\n\t\t\t    if (log.event == \"Transfer\") {\n\t\t\t      console.log(\"Transaction triggered Transfer event in logs\");\n\t\t\t      break;\n\t\t\t    }\n\t\t\t  }\n\t\t\t  console.log(\"Transaction successful with response: \", JSON.stringify(result, null, 2));\n\t\t\t}).catch(function(e) {\n\t\t\t  console.log(\"Error running MetaCoin.sol function sendCoin\");\n\t\t\t})\n\n\t\t\t// IMPORTANT NOTE: COPY/PASTE BELOW INTO TRUFFLE CONSOLE (SINCE CANNOT COPY/PASTE MULTI-LINE CODE)\n\t\t\tvar meta; MetaCoin.deployed().then(function(instance) { meta = instance; return meta.sendCoin(account_two, 10, {from: account_one}); }).then(function(result) { for (var i = 0; i \u003c result.logs.length; i++) { var log = result.logs[i]; if (log.event == \"Transfer\") { console.log(\"Transaction triggered Transfer event in logs\"); break; } }; console.log(\"Transaction successful with response: \", JSON.stringify(result, null, 2)); }).catch(function(e) { console.log(\"Error running MetaCoin.sol function sendCoin\"); })\n\n\t\t\t/*\n\t\t\t * Call the Contract Abstraction's `getBalance` function using \n\t\t\t * a 'call' (READ DATA instead of a 'transaction') so Ethereum network \n\t\t\t * knwos we do not intend to persist any changes, and callback function \n\t\t\t * only fires when call is successful. Instead returns a value (instead\n\t\t\t * of just a Transaction ID like with 'transaction') of MetaCoin balance \n\t\t\t * as BigNumber object at address that is passed to it.\n\t\t\t */\n\t\t\tvar meta;\n\t\t\tMetaCoin.deployed().then(function(instance) {\n\t\t\t  meta = instance;\n\t\t\t  return meta.getBalance.call(account_one, {from: account_one});\n\t\t\t}).then(function(balance) {\n\t\t\t  // Callback is called when 'call' was successfully executed\n\t\t\t  // Callback returns immediately without any waiting\n\t\t\t  console.log(\"Balance is: \", balance.toNumber());\n\t\t\t}).catch(function(e) {\n\t\t\t  console.log(\"Error running MetaCoin.sol function getBalance\");\n\t\t\t})\n\n\t\t\t// New Contract Abstraction deployed to Address on network\n\t\t\tMetaCoin.new().then(function(instance) {\n\t\t\t  // Print the new address\n\t\t\t  console.log(\"New Contract Abstraction deployed to network at address: \", instance.address);\n\t\t\t}).catch(function(err) {\n\t\t\t\tconsole.log(\"Error creating new contract abstraction: \", err);\n\t\t\t});\n\n\t\t\t// Existing Contract Abstraction Address - Create New Contract Abstraction using Existing Contract Address (that has already been deployed)\n\t\t\tvar instance = MetaCoin.at(\"0x7e5f4552091a69125d5dfcb7b8c2659029395bdf\");\n\n\t\t\t// Send Ether directly to a Contract or trigger a Contract's [Fallback function](http://solidity.readthedocs.io/en/develop/contracts.html#fallback-function)\n\t\t\t```\n\t\t\t// Send Ether / Trigger Fallback function \n\t\t\t// Reference: https://github.com/ethereum/wiki/wiki/JavaScript-API#web3ethsendtransaction\n\t\t\tinstance.sendTransaction({...}).then(function(result) {\n\t\t\t  // Same transaction result object as above.\n\t\t\t});\n\n\t\t\t// Send Ether directly to Contract using shorthand\n\t\t\tinstance.send(web3.toWei(1, \"ether\")).then(function(result) {\n\t\t\t  // Same result object as above.\n\t\t\t});\n\n\t* Reference: \n\t\t* http://truffleframework.com/docs/getting_started/console\n\t\t* https://github.com/trufflesuite/truffle-contract\n\t\t* http://truffleframework.com/docs/getting_started/contracts\n\t\t* https://github.com/ethereum/wiki/wiki/JavaScript-API\n\t\t* https://www.ethereum.org/cli\n\n* Writing Tests\n\t* JavaScript Tests (Mocha, Chai) - http://truffleframework.com/docs/getting_started/javascript-tests\n\t* Solidity Contract Tests - http://truffleframework.com/docs/getting_started/solidity-tests\n\n* Interaction with Contracts - http://truffleframework.com/docs/getting_started/contracts\n\n\t* 'call' (READ DATA) - Reading Data from Ethereum Network\n\t\t* Definition:\n\t\t\t* Calls do not change state of network\n\t\t\t* Calls execute code on network but no data is permanently changed\n\t\t\t* Calls read data\n\t\t\t* Calls are free to run\n\t\t\t* Calls when used to execute a contract function allow receiving the return value immediately\n\t\n\t* 'transaction' (WRITE DATA) - Writing Data to Ethereum Network\n\t\t* Definition:\n\t\t\t* Transactions change state of network\n\t\t\t* Transactions write/change data\n\t\t\t* Transactions cost Ether to run (aka 'gas') \n\t\t\t* Transactions take time to process\n\t\t\t* Transactions only return Transaction ID, but cannot receive functions return value since transaction not processed immediately\n\t\t* Examples\n\t\t\t* Example (Simple): Sending Ether between accounts\n\t\t\t* Example (Complex): \n\t\t\t\t* Executing Contract function (i.e. via a transaction)\n\t\t\t\t* Adding New Contract to network \n\n\t* Truffle Contract Abstraction (i.e. [truffle-contract](https://github.com/trufflesuite/truffle-contract))\n\t\t* Definition\n\t\t\t* Wrapper code (over engines running under the hood) for interaction with Ethereum Contracts from JavaScript\n\t\t* Example\n\t\t\t* MetaCoin.sol\n\t\t\t\t* 3x functions exist (i.e. sendCoin, getBalanceInEth, and getBalance)\n\t\t\t\t* Each function executable as either `transaction` or `call`\n\n\n* Contract and Migration Development\n\n\t* Helper Methods to Scaffold New Contracts, Migrations, and Tests for Contracts http://truffleframework.com/docs/advanced/commands#networks\n\t\t```\n\t\ttruffle create contract MyContract\n\t\ttruffle create migration MyContract\n\t\ttruffle create test MyTest\n\t\t```\n\n\t* Execute a JavaScript file in Truffle environment, and include web3, and set the default provider based on the `network` argument specified, and includes contracts as global objects whilst executing script \n\t\t```\n\t\ttruffle exec /path/to/my/script.js --network \u003cname\u003e\n\t\t```\n\t\t* References:\n\t\t\t* http://truffleframework.com/docs/advanced/commands#networks\n\t\t\t* http://truffleframework.com/docs/getting_started/scripts\n\n* Publishing Smart Contract Package to EthPM (Ethereum Package Registry)that is integrated into Truffle \n\t\n\t* References:\n\t\t* http://truffleframework.com/docs/getting_started/packages-ethpm\n\t\t* http://truffleframework.com/docs/advanced/networks\n\n\t* Note: \n\t\t* EthPM currently exists on Ropsten test network\n\t\t* List of existing Ethereum Packages https://www.ethpm.com/registry/packages\n\n\t* Show Networks `truffle networks`\n\t\t* Shows deployed addresses of all contracts on all networks\n\n\t* Pre-Publish Cleaning - `truffle networks --clean`\n\t(removes network artifacts not associated with named network that not want published)\n\n\t* Publish package to Ethereum Package Registry `truffle publish` (all parameters pull from project config file)\n\n* Project Structure\n\n\t* app/\n\t\t* Usage - App files by default (JS, styles)\n\t\n\t* build/contracts\n\t\t* Usage - Artifacts of compilation for deployment. \n\n\t* build/\n\t\t* References\n\t\t\t* truffle.js comments\n\t\t* Options\t- configured in `truffle.js`\n\t\t\t* Default Builder - \n\t\t\t\t* Important Note: in Truffle \u003ev3.0 the Default Builder is in a separate module called truffle-default-builder. Refer to section \"Usage in Truffle 3.0\" at https://github.com/trufflesuite/truffle-default-builder/tree/master\n\t\t\t\t* Advantages\n\t\t\t\t\t* Automatically bootstraps app front-end in browser and imports compiled and deployed contract artifacts and information and Ethereum client config.\n\t\t\t\t\t* Control over organisation of files and folders\n\t\t\t\t\t* Automatically includes recommended dependencies including:\n\t\t\t\t\t\t* web3 - https://github.com/ethereum/web3.js/tree/master\n\t\t\t\t\t\t* Ether Pudding (Contract Packager) - https://github.com/trufflesuite/truffle-artifactor\n\t\t\t\t\t\t* ES6 and React.js built-in\n\t\t\t\t\t\t* Sass\n\t\t\t\t\t\t* UglyifyJS \n\t\t\t\t* Disadvantages\n\t\t\t\t\t* No support for ES2015 `import` or CommonJS `require`\n\t\t\t\t\t* Poor integration with other build systems like Webpack\n\t\t\t* Custom Builder\n\t\t\t\t* Advantages\n\t\t\t\t* Disadvantages\n\n\t* contracts/\n\t\t* Usage - Truffle expects to finds solidity contracts\n\t\t* Contents\n\t\t\t* Solidity Contract file http://solidity.readthedocs.io/en/latest/contracts.html\n\t\t\t* Solidity Library file http://solidity.readthedocs.io/en/latest/contracts.html#libraries\n\t\t\t* Migrations Contract\n\t\t\t\t* About - Deploy this contract in first migration to use Migrations Feature. Deploy libraries before contracts\n\t\t* Examples\n\t\t\t* Default Project\n\t\t\t\t* MetaCoin\n\t\t\t\t\t* About - Demo app called MetaCoin which is a coin-like contract that acts like alt-coin built inside Ethereum\n\t\t\t\t\t* Limitations \n\t\t\t\t\t\t* Not standards compatible or able to talk to other coin/contracts\n\t\t\t\t\t* Opportunities - Convert to standards compatible https://github.com/ConsenSys/Tokens\n\n\t* migrations/\n\t\t* Usage \n\t\t\t* Scriptable deployment files for staging and deployment of contracts to Ethereum network. New migration scripts used to further evolve project on the blockchain\n\t\t\t* Deploy the Migrations Contract in the first migration file\n\t\t\t* Deployer used to stage deployment tasks synchronously or alternatively using Promise chain\n\t\t\t* Deploy libraries before contracts\n\t\t\t* Link libraries to contracts with `deployer.link` and `deployer.autolink`\n\t\t\t* Execute script relative to migrations file, to be run with `truffle exec` as part of deployment with `deployer.exec`\n\t\t\t* Option to conditionallly run deployment tasks depending on Network\n\t\t* References\n\t\t\t* http://truffleframework.com/docs/getting_started/migrations\n\t\n\t* test/\n\t\t* Usage - Test files for testing app and contracts\n\t\n\t* truffle.js\n\t\t* Main Truffle config file.\n\n* QUESTIONS\n\t* Why does passing `--secure false` to `testrpc` result in error `Error: could not unlock signer account` even if I've already unlocked accounts to be generated\n\n* TODO\n\t* [X] - Fix functionality of `truffle build` to resolve error. Await response from question posted in Truffle forum https://gitter.im/ConsenSys/truffle\n\t\t```\n\t\tError building:\n\n\t\tBuild configuration can no longer be specified as an object. Please see our documentation for an updated list of supported build configurations.\n\n\t\tBuild failed. See above.\n\t\t```\n\t\t* Solution:\n\t\t\t* Use latest guide for Truffle \u003ev3 http://truffleframework.com/docs/ instead of deprecated guide for Truffle v1 and v2 at this link https://truffle.readthedocs.io/en/develop\n\t* [ ] - Read Interacting with Contracts http://truffleframework.com/docs/getting_started/contracts\n\t* [ ] - Read Bootstrapping your application http://truffleframework.com/docs/getting_started/contracts\n\t* [ ] - Solidity Smart Contracts Guide http://solidity.readthedocs.io/en/develop/introduction-to-smart-contracts.html\n\t* [ ] - Build token similar to Curation Markets https://github.com/ConsenSys/curationmarkets\n\t* [ ] - Web3 JavaScript API Learn in-depth https://github.com/ethereum/wiki/wiki/JavaScript-API\n\t* [ ] - Truffle Tutorials/Blog http://truffleframework.com/tutorials/\n\t* [ ] - Do tutorial https://medium.com/@mvmurthy/full-stack-hello-world-voting-ethereum-dapp-tutorial-part-1-40d2d0d807c2 using web3 interface (similar to my https://github.com/ltfschoen/dapp_front_end, that provides web3 interface for managing accounts and transactions)\n\t* [ ] - Read this Voting system that is used at a university https://github.com/pmarella2/BroncoVotes\n\t* [ ] - Read Truffle Init Webpack documentation https://github.com/trufflesuite/truffle-init-webpack\n\t* [ ] - Experiment with Ethereum TestRPC\n\t\t* References: https://github.com/ltfschoen/dapp_front_end/blob/master/views/index.html\n\t* [ ] - Integrate Webpack hotloader to sense when contracts or javascript have been recompiled and rebuild the app\n\t* [ ] - Import dependencies http://solidity.readthedocs.io/en/latest/layout-of-source-files.html#importing-other-source-files\n\t* [ ] - Interact with Ethereum.js Test RPC\n\t* [ ] - Deploy Custom Smart Contract Package to EthPM http://truffleframework.com/docs/getting_started/packages-ethpm\n\t* [ ] - Write JavaScript Tests\n\t* [ ] - Write Solidity Tests\n\t* [ ] - Read Truffle Contract repo https://github.com/trufflesuite/truffle-contract\n\t* [ ] - Check `truffle watch` integrated\n\t* [ ] - Convert to standards compatible https://github.com/ConsenSys/Tokens\n\t* [X] - Run deployment tasks depending on Network\n\t* [ ] - Truffle Boxes (React.js, Redux, Uport Authentication)\n\t* [ ] - Ethereum Homestead Documentation http://ethdocs.org/en/latest/\n\t* [ ] - Ethereum Wiki https://github.com/ethereum/wiki/wiki\n\t* [ ] - Cryptocurrency course at Coursera https://www.coursera.org/learn/cryptocurrency#creators\n\n* Credits\n\t* Build based on [truffle-init-webpack](https://github.com/trufflesuite/truffle-init-webpack by Douglas von Kohorn)","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fltfschoen%2Fdapp_truffle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fltfschoen%2Fdapp_truffle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fltfschoen%2Fdapp_truffle/lists"}