Git Product home page Git Product logo

dokwufulueze / eth-vue Goto Github PK

View Code? Open in Web Editor NEW
243.0 14.0 40.0 6.99 MB

Featured in Awesome Vue [https://github.com/vuejs/awesome-vue], a curated list maintained by vuejs of awesome things related to the Vue.js framework, and Awesome List [https://awesomelists.net/150-Vue.js/3863-Open+Source/18749-DOkwufulueze-eth-vue], this Truffle Box provides everything you need to quickly build Ethereum dApps that have authentication features with vue, including configuration for easy deployment to the Ropsten Network. It's also Gravatar-enabled. Connecting to a running Ganache blockchain network from Truffle is also possible -- for fast development and testing purposes. Built on Truffle 5 and Vue 3, eth-vue uses vuex for state management, vuex-persist for local storage of app state, and vue-router for routing. Authentication functionalities are handled by Smart Contracts running on the Ethereum blockchain.

License: GNU General Public License v3.0

JavaScript 39.34% Vue 22.66% Solidity 37.84% HTML 0.16%
vuejs ethereum ethereum-contract dapp ethereum-dapp eth-vue blockchain truffle truffle-framework vue-router

eth-vue's People

Contributors

beardream avatar dependabot[bot] avatar dokwufulueze avatar lukecurtis93 avatar onlyonejmjq avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

eth-vue's Issues

truffle unbox issue

Hello,

I've run following commands
truffle unbox DOkwufulueze/eth-vue truffle compile

and i get an error

Error: Cannot find module 'ethereumjs-wallet/hdkey'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:594:15)
at Function.Module._load (internal/modules/cjs/loader.js:520:25)
at Module.require (internal/modules/cjs/loader.js:650:17)
at require (internal/modules/cjs/helpers.js:20:18)
at Object. (/media/adam/Projekty/KATA/truffle.js:2:13)
at Module._compile (internal/modules/cjs/loader.js:702:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10)
at Module.load (internal/modules/cjs/loader.js:612:32)
at tryModuleLoad (internal/modules/cjs/loader.js:551:12)
at Function.Module._load (internal/modules/cjs/loader.js:543:3)

my versions are:
Truffle v4.1.12 (core: 4.1.12)
Solidity v0.4.24 (solc-js)

Is this also related to the version of truffle?

ethereumjs-wallet is in node_modules and dist folder contains hdkey.js

GNU GPL-3.0

Why not MIT/Apache? I couldn't release whole code of my dApp as open source and as result couldn't use your box at all.

Which part of repository covered with GPL? If I will use only webpack build files could I use MIT?

Development issue

Hi, i'm using the amazing framework,but i couldn't to getting a event of solidity in VUE,for example:
PlaygroudBattle.sol
contract PlaygroundBattle is Destructible {
address public dbAddress;

event won(bool status,uint amount);

}

The problem is: How should i to do for using "event won() " in DOkwufulueze/eth-vue framework in VUE?

Error: could not unlock signer account

Hi,

Thanks for your boilerplate. That's exactly what i was looking for.

The problem is that when i run the first migration a got a Error: could not unlock signer account.

Any idea ?

Network config for Truffle / Ganache

Just starting out. Can't seem to connect to Ganache on 7545. Does network_id need to be 5777 for Ganache? What unlocked acccount needs to be in the from property?

module.exports = {
...
networks: {
development: {
host: "localhost",
port: 7545,
network_id: "*", // Match any network id. You may need to replace * with your network Id
from: "", // Add your unlocked account within the double quotes
gas: 4444444
}
}

Getting this :
Uncaught TypeError: Cannot read property 'isListening' of undefined
at eval (webpack-internal:///./src/util/web3/getWeb3.js:13)

Deployment issues

Hi, I have already deployed this app to the ganache network on port 7545, but I keep getting the app run on port 3001 even though I have configured truffle.js, I can show the logs:

_gustavoparedes1978@gustavoparedes1978-HP-Pavilion-g4-Notebook-PC:~/Documents/Cryptocurrencies/soliditytruffleprojects/dapp/truffle boxes/DOkwulueze$ ganache-cli --port 7545
Ganache CLI v6.0.3 (ganache-core: 2.0.2)

Available Accounts

(0) 0x3bc519105fd6ab34b555b62f5d673585744a6c6a
(1) 0xea4e8bab61fa21ef10d4e3bdac32d84b6c66b505
(2) 0x6161bf566473e866a0dea4f4ec111fd199dec664
(3) 0x2ba0ea109e94ee720e635e45c13efcc1f050d7a3
(4) 0x3fa573d569606256a0d8e39a62f667b7eac943c2
(5) 0x96ec7f3b95ced719c601155329913552e97fdef7
(6) 0x08d08a61a9329764f7a1acabf0796478662f9ad0
(7) 0x8067f875d246509b7e1dbf99694745ba0b4b7c6c
(8) 0x5d38bd534cef69b441bbfda679d15aa34b956030
(9) 0x6c213dd255fd207f6ac4bb72f8c363fd50f2b54f

Private Keys

(0) e863a39d52c38ca9c186216ad5f11831ede13b8028f08c842262fc471301344e
(1) a26fea66f7dd62afe381fe36c2fff20fbc189098fc0e3900218f42cbd60b0c67
(2) 63d84623be786797c4f978c4349d3cef8adf714bf407016ef1c48805bb600b41
(3) b80f1d019d04f548fffec15944d17c8afa27ddccecdef6c692e3723d473d8e8f
(4) 3e80247246f53f3454125c60f49309317a79a74c0f1cc495da3613414ba49a1a
(5) 3f4d664e59c42b7e756b9d06c9090b186f60d2ca237e896e2936afdca4ef53cd
(6) 13ca2c633b7e094508e3ac16fb7ebbc7fa34f69bf26c30f0194c5477fa591eca
(7) 85ccd647dca47c7982645b9f6a935b0a167105b654e8a17302b56c1991bfbabf
(8) f53bad5a65b518b6db2ef6f277925577ef9f939a3c6a8f3da44993a136edbeb4
(9) e5ded692b12dfe1805b62fe4f8d81728cf03592fa41647ce5e002aa8cf783908

HD Wallet

Mnemonic: crater solution correct surprise kite earn try banana vendor lake powder describe
Base HD Path: m/44'/60'/0'/0/{account_index}

Listening on localhost:7545
net_version
eth_accounts
net_version
net_version
eth_sendTransaction

Transaction: 0x7a254b7a019bb071c32d31d93eb15295c20003a66df94f5f39fe877e39182566
Contract created: 0x54850d2da6dae18dbc9992ef389889aa9ffda2e7
Gas usage: 269607
Block Number: 1
Block Time: Fri Dec 01 2017 15:43:49 GMT-0600 (CST)

eth_newBlockFilter
eth_getFilterChanges
eth_getTransactionReceipt
eth_getCode
eth_uninstallFilter
eth_sendTransaction

Transaction: 0xb45960aaad4c95cb9c60e0d5ce40316fcb58dddef84a34ee488b9b6befb1abc5
Gas usage: 41981
Block Number: 2
Block Time: Fri Dec 01 2017 15:43:50 GMT-0600 (CST)

eth_getTransactionReceipt
eth_accounts
net_version
net_version
eth_sendTransaction

Transaction: 0x7ecd14b491f5933855527ce9e0b826a456badbe9bc5d45f7a1097d859c5baf47
Contract created: 0x2aca8bc53a603f13572ccf5d143aaf8b48162534
Gas usage: 214586
Block Number: 3
Block Time: Fri Dec 01 2017 15:43:50 GMT-0600 (CST)

eth_newBlockFilter
eth_getFilterChanges
eth_getTransactionReceipt
eth_getCode
eth_uninstallFilter
net_version
net_version
eth_sendTransaction

Transaction: 0x67d3d7493c1835fad5815b6900dcb4675e4a8f3cbfddd0b2c9aec6c197976397
Contract created: 0xd4bce84cdbc4ff1036d2cf97a349c13f6db9ed2d
Gas usage: 311002
Block Number: 4
Block Time: Fri Dec 01 2017 15:43:50 GMT-0600 (CST)

eth_newBlockFilter
eth_getFilterChanges
eth_getTransactionReceipt
eth_getCode
eth_uninstallFilter
net_version
net_version
eth_sendTransaction

Transaction: 0x400083534a859c763abedc6f2ac8f4935683aa950300fec51f8e32d0fd92c32f
Contract created: 0x4974d944e5996a2b8d834ba5ce857e0066eb2296
Gas usage: 950530
Block Number: 5
Block Time: Fri Dec 01 2017 15:43:50 GMT-0600 (CST)

eth_newBlockFilter
eth_getFilterChanges
eth_getTransactionReceipt
eth_getCode
eth_uninstallFilter
net_version
net_version
eth_sendTransaction

Transaction: 0x1de61635038851c3bccc6154a81c305764fe6fe096b9489537faf3ffa0d15cc1
Contract created: 0x0a6f4c944d298266b040f4d7960d29fd7fb78008
Gas usage: 68653
Block Number: 6
Block Time: Fri Dec 01 2017 15:43:51 GMT-0600 (CST)

eth_newBlockFilter
eth_getFilterChanges
eth_getTransactionReceipt
eth_getCode
eth_uninstallFilter
net_version
net_version
eth_sendTransaction

Transaction: 0x0ecb23d332e7189c1ffbb19454a8decff5060abd1b2fd679131815a12cef1f48
Contract created: 0x014e58610dbd1a90d759157f8a98560c943c2f2a
Gas usage: 215342
Block Number: 7
Block Time: Fri Dec 01 2017 15:43:51 GMT-0600 (CST)

eth_newBlockFilter
eth_getFilterChanges
eth_getTransactionReceipt
eth_getCode
eth_uninstallFilter
eth_sendTransaction

Transaction: 0xc2ad6035a4f5ee5592a721e60212d84d7f8e16e1cba9691a562f6544f8066f59
Gas usage: 26981
Block Number: 8
Block Time: Fri Dec 01 2017 15:43:51 GMT-0600 (CST)

eth_getTransactionReceipt_

I'm running the dev right here:

_gustavoparedes1978@gustavoparedes1978-HP-Pavilion-g4-Notebook-PC:~/Documents/Cryptocurrencies/soliditytruffleprojects/dapp/truffle boxes/DOkwufulueze$ npm run d
ev

[email protected] dev /home/gustavoparedes1978/Documents/Cryptocurrencies/soliditytruffleprojects/dapp/truffle boxes/DOkwufulueze
node build/dev-server.js

Starting dev server...

DONE Compiled successfully in 30445ms 15:48:20

Listening at http://localhost:3001_

This is the actual result:
image

Errors with Smartcontracts compilation

The contrats are not compiling, and the app is not working because the JSON files are not generated.

truffle(develop)> compile
Compiling .\contracts\DB.sol...
Compiling .\contracts\Migrations.sol...
Compiling .\contracts\Setup.sol...
Compiling .\contracts\UserAuthManager.sol...
Compiling .\contracts\lib\arachnid\solidity-stringutils\strings.sol...
Compiling .\contracts\lib\userManager.sol...
Compiling .\contracts\lib\utilities.sol...
Compiling .\contracts\zeppelin\lifecycle\Destructible.sol...
Compiling .\contracts\zeppelin\math\SafeMath.sol...
Compiling .\contracts\zeppelin\ownership\Ownable.sol...

Compilation warnings encountered:

/C/Dev/Vue/contracts/zeppelin/ownership/Ownable.sol:17:3: Warning: Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
  function Ownable() public {
  ^ (Relevant source part starts here and spans across multiple lines).
,/C/Dev/Vue/contracts/zeppelin/lifecycle/Destructible.sol:13:3: Warning: Defining constructors as functions with the same name as the contract is deprecated.
Use "constructor(...) { ... }" instead.
  function Destructible() payable public { }
  ^----------------------------------------^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:140:9: Warning: Use of the "var" keyword is deprecated.
        var ret = new string(self._len);
        ^-----^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:158:9: Warning: Use of the "var" keyword is deprecated.
        var ptr = self._ptr - 31;
        ^-----^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:159:9: Warning: Use of the "var" keyword is deprecated.
        var end = ptr + self._len;
        ^-----^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:203:9: Warning: Use of the "var" keyword is deprecated.
        var selfptr = self._ptr;
        ^---------^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:204:9: Warning: Use of the "var" keyword is deprecated.
        var otherptr = other._ptr;
        ^----------^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:215:17: Warning: Use of the "var" keyword is deprecated.
                var diff = (a & mask) - (b & mask);
                ^------^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:304:9: Warning: Use of the "var" keyword is deprecated.
        var b = word / _div;
        ^---^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:414:9: Warning: Use of the "var" keyword is deprecated.
        var selfptr = self._ptr + self._len - needle._len;
        ^---------^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:442:9: Warning: Use of the "var" keyword is deprecated.
        var selfptr = self._ptr + self._len - needle._len;
        ^---------^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:672:9: Warning: Use of the "var" keyword is deprecated.
        var ret = new string(self._len + other._len);
        ^-----^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:696:9: Warning: Use of the "var" keyword is deprecated.
        var ret = new string(strLen);
        ^-----^
,/C/Dev/Vue/contracts/DB.sol:28:3: Warning: Defining constructors as functions
with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
  function DB () public {
  ^ (Relevant source part starts here and spans across multiple lines).
,/C/Dev/Vue/contracts/Migrations.sol:11:3: Warning: Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
  function Migrations() public {
  ^ (Relevant source part starts here and spans across multiple lines).
,/C/Dev/Vue/contracts/Setup.sol:11:3: Warning: Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
  function Setup (address _dbAddress) public {
  ^ (Relevant source part starts here and spans across multiple lines).
,/C/Dev/Vue/contracts/lib/utilities.sol:17:5: Warning: Use of the "var" keyword is deprecated.
    var idx = DB(dbAddress).getUIntValue(keccak256(countKey));
    ^-----^
,/C/Dev/Vue/contracts/lib/utilities.sol:24:5: Warning: Use of the "var" keyword is deprecated.
    var idx = DB(dbAddress).getUIntValue(keccak256(countKey));
    ^-----^
,/C/Dev/Vue/contracts/lib/userManager.sol:34:5: Warning: Use of the "var" keyword is deprecated.
    var firstNameLength = firstName.toSlice().len();
    ^-----------------^
,/C/Dev/Vue/contracts/lib/userManager.sol:35:5: Warning: Use of the "var" keyword is deprecated.
    var lastNameLength = lastName.toSlice().len();
    ^----------------^
,/C/Dev/Vue/contracts/lib/userManager.sol:36:5: Warning: Use of the "var" keyword is deprecated.
    var emailLength = email.toSlice().len();
    ^-------------^
,/C/Dev/Vue/contracts/UserAuthManager.sol:9:3: Warning: Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
  function UserAuthManager (address _dbAddress) public {
  ^ (Relevant source part starts here and spans across multiple lines).
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:473:21: Warning: The use of labels is deprecated. Please use "if", "switch", "for" or function calls instead.
                    loop:
                    ^--^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:473:21: Warning: Jump instructions and labels are low-level EVM features that can lead to
incorrect stack access. Because of that they are discouraged. Please consider using "switch", "if" or "for" statements instead.
                    loop:
                    ^--^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:474:21: Warning: Jump instructions and labels are low-level EVM features that can lead to
incorrect stack access. Because of that they are discouraged. Please consider using "switch", "if" or "for" statements instead.
                    jumpi(exit, eq(and(mload(ptr), mask), needledata))
                    ^------------------------------------------------^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:476:21: Warning: Jump instructions and labels are low-level EVM features that can lead to
incorrect stack access. Because of that they are discouraged. Please consider using "switch", "if" or "for" statements instead.
                    jumpi(loop, lt(sub(ptr, 1), end))
                    ^-------------------------------^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:478:21: Warning: The use of labels is deprecated. Please use "if", "switch", "for" or function calls instead.
                    exit:
                    ^--^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:478:21: Warning: Jump instructions and labels are low-level EVM features that can lead to
incorrect stack access. Because of that they are discouraged. Please consider using "switch", "if" or "for" statements instead.
                    exit:
                    ^--^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:510:21: Warning: The use of labels is deprecated. Please use "if", "switch", "for" or function calls instead.
                    loop:
                    ^--^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:510:21: Warning: Jump instructions and labels are low-level EVM features that can lead to
incorrect stack access. Because of that they are discouraged. Please consider using "switch", "if" or "for" statements instead.
                    loop:
                    ^--^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:511:21: Warning: Jump instructions and labels are low-level EVM features that can lead to
incorrect stack access. Because of that they are discouraged. Please consider using "switch", "if" or "for" statements instead.
                    jumpi(ret, eq(and(mload(ptr), mask), needledata))
                    ^-----------------------------------------------^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:513:21: Warning: Jump instructions and labels are low-level EVM features that can lead to
incorrect stack access. Because of that they are discouraged. Please consider using "switch", "if" or "for" statements instead.
                    jumpi(loop, gt(add(ptr, 1), selfptr))
                    ^-----------------------------------^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:515:21: Warning: Jump instructions and labels are low-level EVM features that can lead to
incorrect stack access. Because of that they are discouraged. Please consider using "switch", "if" or "for" statements instead.
                    jump(exit)
                    ^--------^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:516:21: Warning: The use of labels is deprecated. Please use "if", "switch", "for" or function calls instead.
                    ret:
                    ^-^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:516:21: Warning: Jump instructions and labels are low-level EVM features that can lead to
incorrect stack access. Because of that they are discouraged. Please consider using "switch", "if" or "for" statements instead.
                    ret:
                    ^-^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:518:21: Warning: The use of labels is deprecated. Please use "if", "switch", "for" or function calls instead.
                    exit:
                    ^--^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:518:21: Warning: Jump instructions and labels are low-level EVM features that can lead to
incorrect stack access. Because of that they are discouraged. Please consider using "switch", "if" or "for" statements instead.
                    exit:
                    ^--^
,/C/Dev/Vue/contracts/lib/utilities.sol:10:39: Warning: This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar
function to encode the data.
    return DB(dbAddress).getUIntValue(keccak256(key));
                                      ^------------^
,/C/Dev/Vue/contracts/lib/utilities.sol:10:39: Warning: The provided argument of type string memory is not implicitly convertible to expected type bytes memory.
    return DB(dbAddress).getUIntValue(keccak256(key));
                                      ^------------^
,/C/Dev/Vue/contracts/lib/utilities.sol:17:42: Warning: This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar
function to encode the data.
    var idx = DB(dbAddress).getUIntValue(keccak256(countKey));
                                         ^-----------------^
,/C/Dev/Vue/contracts/lib/utilities.sol:17:42: Warning: The provided argument of type string memory is not implicitly convertible to expected type bytes memory.
    var idx = DB(dbAddress).getUIntValue(keccak256(countKey));
                                         ^-----------------^
,/C/Dev/Vue/contracts/lib/utilities.sol:18:35: Warning: This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar
function to encode the data.
    DB(dbAddress).setAddressValue(keccak256(key, idx), val);
                                  ^-----------------^
,/C/Dev/Vue/contracts/lib/utilities.sol:19:32: Warning: This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar
function to encode the data.
    DB(dbAddress).setUIntValue(keccak256(key, val, "index"), idx);
                               ^--------------------------^
,/C/Dev/Vue/contracts/lib/utilities.sol:20:32: Warning: This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar
function to encode the data.
    DB(dbAddress).setUIntValue(keccak256(countKey), idx + 1);
                               ^-----------------^
,/C/Dev/Vue/contracts/lib/utilities.sol:20:32: Warning: The provided argument of type string memory is not implicitly convertible to expected type bytes memory.
    DB(dbAddress).setUIntValue(keccak256(countKey), idx + 1);
                               ^-----------------^
,/C/Dev/Vue/contracts/lib/utilities.sol:24:42: Warning: This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar
function to encode the data.
    var idx = DB(dbAddress).getUIntValue(keccak256(countKey));
                                         ^-----------------^
,/C/Dev/Vue/contracts/lib/utilities.sol:24:42: Warning: The provided argument of type string memory is not implicitly convertible to expected type bytes memory.
    var idx = DB(dbAddress).getUIntValue(keccak256(countKey));
                                         ^-----------------^
,/C/Dev/Vue/contracts/lib/utilities.sol:25:32: Warning: This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar
function to encode the data.
    DB(dbAddress).setUIntValue(keccak256(key, idx), val);
                               ^-----------------^
,/C/Dev/Vue/contracts/lib/utilities.sol:26:32: Warning: This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar
function to encode the data.
    DB(dbAddress).setUIntValue(keccak256(key, val, "index"), idx);
                               ^--------------------------^
,/C/Dev/Vue/contracts/lib/utilities.sol:27:32: Warning: This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar
function to encode the data.
    DB(dbAddress).setUIntValue(keccak256(countKey), idx + 1);
                               ^-----------------^
,/C/Dev/Vue/contracts/lib/utilities.sol:27:32: Warning: The provided argument of type string memory is not implicitly convertible to expected type bytes memory.
    DB(dbAddress).setUIntValue(keccak256(countKey), idx + 1);
                               ^-----------------^
,/C/Dev/Vue/contracts/lib/userManager.sol:9:33: Warning: This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar function to encode the data.
    DB(dbAddress).setUInt8Value(keccak256("user/status", userId), status);
                                ^------------------------------^
,/C/Dev/Vue/contracts/lib/userManager.sol:21:40: Warning: This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar function to encode the data.
    return DB(dbAddress).getUInt8Value(keccak256("user/status", userId));
                                       ^------------------------------^
,/C/Dev/Vue/contracts/lib/userManager.sol:47:34: Warning: This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar function to encode the data.
    DB(dbAddress).setStringValue(keccak256("user/first-name", userId), firstName);
                                 ^----------------------------------^
,/C/Dev/Vue/contracts/lib/userManager.sol:48:34: Warning: This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar function to encode the data.
    DB(dbAddress).setStringValue(keccak256("user/last-name", userId), lastName);
                                 ^---------------------------------^
,/C/Dev/Vue/contracts/lib/userManager.sol:49:34: Warning: This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar function to encode the data.
    DB(dbAddress).setStringValue(keccak256("user/email", userId), email);
                                 ^-----------------------------^
,/C/Dev/Vue/contracts/lib/userManager.sol:50:35: Warning: This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar function to encode the data.
    DB(dbAddress).setBytes32Value(keccak256("user/gravatar", userId), gravatar);
                                  ^--------------------------------^
,/C/Dev/Vue/contracts/lib/userManager.sol:60:34: Warning: This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar function to encode the data.
      DB(dbAddress).setUIntValue(keccak256("user/created-on", userId), now);
                                 ^----------------------------------^
,/C/Dev/Vue/contracts/lib/userManager.sol:61:35: Warning: This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar function to encode the data.
      DB(dbAddress).setUInt8Value(keccak256("user/status", userId), 1);
                                  ^------------------------------^
,/C/Dev/Vue/contracts/UserAuthManager.sol:32:5: Warning: Invoking events without "emit" prefix is deprecated.
    SetUser(msg.sender, true);
    ^-----------------------^


/C/Dev/Vue/contracts/zeppelin/ownership/Ownable.sol:1:1: SyntaxError: Source file requires different compiler version (current compiler is 0.4.24+commit.e67f0147.Emscripten.clang - note that nightly builds are considered to be strictly less than the released version
pragma solidity 0.4.18;
^---------------------^
,/C/Dev/Vue/contracts/zeppelin/ownership/Ownable.sol:17:3: Warning: Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
  function Ownable() public {
  ^ (Relevant source part starts here and spans across multiple lines).
,/C/Dev/Vue/contracts/zeppelin/lifecycle/Destructible.sol:1:1: SyntaxError: Source file requires different compiler version (current compiler is 0.4.24+commit.e67f0147.Emscripten.clang - note that nightly builds are considered to be strictly less than the released version
pragma solidity 0.4.18;
^---------------------^
,/C/Dev/Vue/contracts/zeppelin/lifecycle/Destructible.sol:13:3: Warning: Defining constructors as functions with the same name as the contract is deprecated.
Use "constructor(...) { ... }" instead.
  function Destructible() payable public { }
  ^----------------------------------------^
,/C/Dev/Vue/contracts/zeppelin/math/SafeMath.sol:1:1: SyntaxError: Source file
requires different compiler version (current compiler is 0.4.24+commit.e67f0147.Emscripten.clang - note that nightly builds are considered to be strictly less than the released version
pragma solidity 0.4.18;
^---------------------^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:1:1: SyntaxError: Source file requires different compiler version (current compiler is 0.4.24+commit.e67f0147.Emscripten.clang - note that nightly builds are considered
to be strictly less than the released version
pragma solidity 0.4.18;
^---------------------^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:140:9: Warning: Use of the "var" keyword is deprecated.
        var ret = new string(self._len);
        ^-----^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:158:9: Warning: Use of the "var" keyword is deprecated.
        var ptr = self._ptr - 31;
        ^-----^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:159:9: Warning: Use of the "var" keyword is deprecated.
        var end = ptr + self._len;
        ^-----^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:203:9: Warning: Use of the "var" keyword is deprecated.
        var selfptr = self._ptr;
        ^---------^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:204:9: Warning: Use of the "var" keyword is deprecated.
        var otherptr = other._ptr;
        ^----------^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:215:17: Warning: Use of the "var" keyword is deprecated.
                var diff = (a & mask) - (b & mask);
                ^------^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:304:9: Warning: Use of the "var" keyword is deprecated.
        var b = word / _div;
        ^---^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:414:9: Warning: Use of the "var" keyword is deprecated.
        var selfptr = self._ptr + self._len - needle._len;
        ^---------^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:442:9: Warning: Use of the "var" keyword is deprecated.
        var selfptr = self._ptr + self._len - needle._len;
        ^---------^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:672:9: Warning: Use of the "var" keyword is deprecated.
        var ret = new string(self._len + other._len);
        ^-----^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:696:9: Warning: Use of the "var" keyword is deprecated.
        var ret = new string(strLen);
        ^-----^
,/C/Dev/Vue/contracts/DB.sol:28:3: Warning: Defining constructors as functions
with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
  function DB () public {
  ^ (Relevant source part starts here and spans across multiple lines).
,/C/Dev/Vue/contracts/Migrations.sol:1:1: SyntaxError: Source file requires different compiler version (current compiler is 0.4.24+commit.e67f0147.Emscripten.clang - note that nightly builds are considered to be strictly less than the released version
pragma solidity 0.4.18;
^---------------------^
,/C/Dev/Vue/contracts/Migrations.sol:11:3: Warning: Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
  function Migrations() public {
  ^ (Relevant source part starts here and spans across multiple lines).
,/C/Dev/Vue/contracts/Setup.sol:1:1: SyntaxError: Source file requires different compiler version (current compiler is 0.4.24+commit.e67f0147.Emscripten.clang - note that nightly builds are considered to be strictly less than the released version
pragma solidity 0.4.18;
^---------------------^
,/C/Dev/Vue/contracts/Setup.sol:11:3: Warning: Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
  function Setup (address _dbAddress) public {
  ^ (Relevant source part starts here and spans across multiple lines).
,/C/Dev/Vue/contracts/lib/utilities.sol:17:5: Warning: Use of the "var" keyword is deprecated.
    var idx = DB(dbAddress).getUIntValue(keccak256(countKey));
    ^-----^
,/C/Dev/Vue/contracts/lib/utilities.sol:24:5: Warning: Use of the "var" keyword is deprecated.
    var idx = DB(dbAddress).getUIntValue(keccak256(countKey));
    ^-----^
,/C/Dev/Vue/contracts/lib/userManager.sol:1:1: SyntaxError: Source file requires different compiler version (current compiler is 0.4.24+commit.e67f0147.Emscripten.clang - note that nightly builds are considered to be strictly less than the released version
pragma solidity 0.4.18;
^---------------------^
,/C/Dev/Vue/contracts/lib/userManager.sol:34:5: Warning: Use of the "var" keyword is deprecated.
    var firstNameLength = firstName.toSlice().len();
    ^-----------------^
,/C/Dev/Vue/contracts/lib/userManager.sol:35:5: Warning: Use of the "var" keyword is deprecated.
    var lastNameLength = lastName.toSlice().len();
    ^----------------^
,/C/Dev/Vue/contracts/lib/userManager.sol:36:5: Warning: Use of the "var" keyword is deprecated.
    var emailLength = email.toSlice().len();
    ^-------------^
,/C/Dev/Vue/contracts/UserAuthManager.sol:1:1: SyntaxError: Source file requires different compiler version (current compiler is 0.4.24+commit.e67f0147.Emscripten.clang - note that nightly builds are considered to be strictly less than the released version
pragma solidity 0.4.18;
^---------------------^
,/C/Dev/Vue/contracts/UserAuthManager.sol:9:3: Warning: Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
  function UserAuthManager (address _dbAddress) public {
  ^ (Relevant source part starts here and spans across multiple lines).
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:473:21: Warning: The use of labels is deprecated. Please use "if", "switch", "for" or function calls instead.
                    loop:
                    ^--^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:473:21: Warning: Jump instructions and labels are low-level EVM features that can lead to
incorrect stack access. Because of that they are discouraged. Please consider using "switch", "if" or "for" statements instead.
                    loop:
                    ^--^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:474:21: Warning: Jump instructions and labels are low-level EVM features that can lead to
incorrect stack access. Because of that they are discouraged. Please consider using "switch", "if" or "for" statements instead.
                    jumpi(exit, eq(and(mload(ptr), mask), needledata))
                    ^------------------------------------------------^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:476:21: Warning: Jump instructions and labels are low-level EVM features that can lead to
incorrect stack access. Because of that they are discouraged. Please consider using "switch", "if" or "for" statements instead.
                    jumpi(loop, lt(sub(ptr, 1), end))
                    ^-------------------------------^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:478:21: Warning: The use of labels is deprecated. Please use "if", "switch", "for" or function calls instead.
                    exit:
                    ^--^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:478:21: Warning: Jump instructions and labels are low-level EVM features that can lead to
incorrect stack access. Because of that they are discouraged. Please consider using "switch", "if" or "for" statements instead.
                    exit:
                    ^--^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:510:21: Warning: The use of labels is deprecated. Please use "if", "switch", "for" or function calls instead.
                    loop:
                    ^--^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:510:21: Warning: Jump instructions and labels are low-level EVM features that can lead to
incorrect stack access. Because of that they are discouraged. Please consider using "switch", "if" or "for" statements instead.
                    loop:
                    ^--^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:511:21: Warning: Jump instructions and labels are low-level EVM features that can lead to
incorrect stack access. Because of that they are discouraged. Please consider using "switch", "if" or "for" statements instead.
                    jumpi(ret, eq(and(mload(ptr), mask), needledata))
                    ^-----------------------------------------------^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:513:21: Warning: Jump instructions and labels are low-level EVM features that can lead to
incorrect stack access. Because of that they are discouraged. Please consider using "switch", "if" or "for" statements instead.
                    jumpi(loop, gt(add(ptr, 1), selfptr))
                    ^-----------------------------------^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:515:21: Warning: Jump instructions and labels are low-level EVM features that can lead to
incorrect stack access. Because of that they are discouraged. Please consider using "switch", "if" or "for" statements instead.
                    jump(exit)
                    ^--------^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:516:21: Warning: The use of labels is deprecated. Please use "if", "switch", "for" or function calls instead.
                    ret:
                    ^-^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:516:21: Warning: Jump instructions and labels are low-level EVM features that can lead to
incorrect stack access. Because of that they are discouraged. Please consider using "switch", "if" or "for" statements instead.
                    ret:
                    ^-^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:518:21: Warning: The use of labels is deprecated. Please use "if", "switch", "for" or function calls instead.
                    exit:
                    ^--^
,/C/Dev/Vue/contracts/lib/arachnid/solidity-stringutils/strings.sol:518:21: Warning: Jump instructions and labels are low-level EVM features that can lead to
incorrect stack access. Because of that they are discouraged. Please consider using "switch", "if" or "for" statements instead.
                    exit:
                    ^--^
,/C/Dev/Vue/contracts/lib/utilities.sol:10:39: Warning: This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar
function to encode the data.
    return DB(dbAddress).getUIntValue(keccak256(key));
                                      ^------------^
,/C/Dev/Vue/contracts/lib/utilities.sol:10:39: Warning: The provided argument of type string memory is not implicitly convertible to expected type bytes memory.
    return DB(dbAddress).getUIntValue(keccak256(key));
                                      ^------------^
,/C/Dev/Vue/contracts/lib/utilities.sol:17:42: Warning: This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar
function to encode the data.
    var idx = DB(dbAddress).getUIntValue(keccak256(countKey));
                                         ^-----------------^
,/C/Dev/Vue/contracts/lib/utilities.sol:17:42: Warning: The provided argument of type string memory is not implicitly convertible to expected type bytes memory.
    var idx = DB(dbAddress).getUIntValue(keccak256(countKey));
                                         ^-----------------^
,/C/Dev/Vue/contracts/lib/utilities.sol:18:35: Warning: This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar
function to encode the data.
    DB(dbAddress).setAddressValue(keccak256(key, idx), val);
                                  ^-----------------^
,/C/Dev/Vue/contracts/lib/utilities.sol:19:32: Warning: This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar
function to encode the data.
    DB(dbAddress).setUIntValue(keccak256(key, val, "index"), idx);
                               ^--------------------------^
,/C/Dev/Vue/contracts/lib/utilities.sol:20:32: Warning: This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar
function to encode the data.
    DB(dbAddress).setUIntValue(keccak256(countKey), idx + 1);
                               ^-----------------^
,/C/Dev/Vue/contracts/lib/utilities.sol:20:32: Warning: The provided argument of type string memory is not implicitly convertible to expected type bytes memory.
    DB(dbAddress).setUIntValue(keccak256(countKey), idx + 1);
                               ^-----------------^
,/C/Dev/Vue/contracts/lib/utilities.sol:24:42: Warning: This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar
function to encode the data.
    var idx = DB(dbAddress).getUIntValue(keccak256(countKey));
                                         ^-----------------^
,/C/Dev/Vue/contracts/lib/utilities.sol:24:42: Warning: The provided argument of type string memory is not implicitly convertible to expected type bytes memory.
    var idx = DB(dbAddress).getUIntValue(keccak256(countKey));
                                         ^-----------------^
,/C/Dev/Vue/contracts/lib/utilities.sol:25:32: Warning: This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar
function to encode the data.
    DB(dbAddress).setUIntValue(keccak256(key, idx), val);
                               ^-----------------^
,/C/Dev/Vue/contracts/lib/utilities.sol:26:32: Warning: This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar
function to encode the data.
    DB(dbAddress).setUIntValue(keccak256(key, val, "index"), idx);
                               ^--------------------------^
,/C/Dev/Vue/contracts/lib/utilities.sol:27:32: Warning: This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar
function to encode the data.
    DB(dbAddress).setUIntValue(keccak256(countKey), idx + 1);
                               ^-----------------^
,/C/Dev/Vue/contracts/lib/utilities.sol:27:32: Warning: The provided argument of type string memory is not implicitly convertible to expected type bytes memory.
    DB(dbAddress).setUIntValue(keccak256(countKey), idx + 1);
                               ^-----------------^
,/C/Dev/Vue/contracts/lib/userManager.sol:9:33: Warning: This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar function to encode the data.
    DB(dbAddress).setUInt8Value(keccak256("user/status", userId), status);
                                ^------------------------------^
,/C/Dev/Vue/contracts/lib/userManager.sol:21:40: Warning: This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar function to encode the data.
    return DB(dbAddress).getUInt8Value(keccak256("user/status", userId));
                                       ^------------------------------^
,/C/Dev/Vue/contracts/lib/userManager.sol:47:34: Warning: This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar function to encode the data.
    DB(dbAddress).setStringValue(keccak256("user/first-name", userId), firstName);
                                 ^----------------------------------^
,/C/Dev/Vue/contracts/lib/userManager.sol:48:34: Warning: This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar function to encode the data.
    DB(dbAddress).setStringValue(keccak256("user/last-name", userId), lastName);
                                 ^---------------------------------^
,/C/Dev/Vue/contracts/lib/userManager.sol:49:34: Warning: This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar function to encode the data.
    DB(dbAddress).setStringValue(keccak256("user/email", userId), email);
                                 ^-----------------------------^
,/C/Dev/Vue/contracts/lib/userManager.sol:50:35: Warning: This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar function to encode the data.
    DB(dbAddress).setBytes32Value(keccak256("user/gravatar", userId), gravatar);
                                  ^--------------------------------^
,/C/Dev/Vue/contracts/lib/userManager.sol:60:34: Warning: This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar function to encode the data.
      DB(dbAddress).setUIntValue(keccak256("user/created-on", userId), now);
                                 ^----------------------------------^
,/C/Dev/Vue/contracts/lib/userManager.sol:61:35: Warning: This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar function to encode the data.
      DB(dbAddress).setUInt8Value(keccak256("user/status", userId), 1);
                                  ^------------------------------^
,/C/Dev/Vue/contracts/UserAuthManager.sol:32:5: Warning: Invoking events without "emit" prefix is deprecated.
    SetUser(msg.sender, true);
    ^-----------------------^
Compilation failed. See above.

Scrypt: the request of a dependency is an expression

After loading and compiling, run server I get the following error :

...WARNING in ./node_modules/web3-eth-accounts/src/scrypt.js 17:50-60
Critical dependency: the request of a dependency is an expression
 @ ./node_modules/web3-eth-accounts/src/index.js
 @ ./node_modules/web3-eth/src/index.js
 @ ./node_modules/truffle-contract/node_modules/web3/src/index.js
 @ ./node_modules/truffle-contract/lib/contract.js
 @ ./node_modules/truffle-contract/index.js
 @ ./src/js/BlockchainManager.js
 @ ./src/js/UserManager.js
 @ ./src/main.js
 @ multi ./build/dev-client ./src/main.js```


Compilation failed

Hi,
I have installed truffle and then install eth-vue as per your instructions and got an issue after compilation. I don't have any knowledge about solidity, error on network_id - 3 & 4, I have not checked others network_id
I am a window user and also not installed Ganache & Ropsten.

error

What is an "unlocked account" in truffle.js?

Hi, Daniel,

Thanks for sharing this comprehensive dApp.

In truffle.js, the "from" property in the development stanza is blank and needs to have an "unlocked account":

...
development: {
      host: "localhost",
      port: 9545, // This is the conventional port. If you're using the Ganache Blockchain, change port value to the Ganache default port 7545. If you're using Truffle develop network, change port value to 9545
      network_id: "*", // Match any network id. You may need to replace * with your network Id
      from: "", // Add your unlocked account within the double quotes
      gas: 4444444
    }
...

What is an "unlocked account"? Where do I find it? If I'm running against ganache, it it just one of the available accounts?

PS Congratulations on your new born!

Migrations Issue

Hi,

initially using:
Truffle v5.0.3 (core: 5.0.3)
Solidity v0.5.0 (solc-js)
Node v10.11.0

I unboxed the eth-vue truffle box and ran a truffle compile but got a bunch of compilation errors so I downgraded the version of solc that truffle uses by modifying the truffle.js config file to match the version of solidity "0.4.18" which got rid of all of the compilation errors (as you have previously documented).

However now at the next step, truffle migrate.... I get
Error: *** Deployment Failed ***
"Setup" -- invalid address (arg="_dbAddress", coderType="address", value=undefined).
at /Users/thomasmoran/.nvm/versions/node/v10.11.0/lib/node_modules/truffle/build/webpack:/packages/truffle-deployer/src/deployment.js:364:1

Any ideas or suggestions to what might be going wrong?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.