|-- .github/workflows
|
|-- .vscode
|      |-- tasks.json : json file to contain setting for running system
|      |-- launch.json : json file to contain setting for running system
|
|-- bin: contents of this folder used to generate random data initially to load
|         into dashboard. This was used for first demo to fill graphs on view.
|
|      |-- generate-graphql.ts: creates graphql schemas for query for random data
|      |-- start-ganache.ps1 : starts Ganache CLI for loading random generated data
|      |-- blockchain-populator:
|      |      |-- global-des-populator.ts: generates random data for many users
|      |      |-- user-desc-populator.ts: generates random data for one user
|
|-- contracts:
|      |-- GlobalDescriptor.sol: Defines Ethereum Blockchain storage schema and
|      |                         functionalities for GlobalDescriptors, parameters
|      |                         that relate to data of the population as a whole. Written in Solidity
|      |
|      |-- UserDescriptors.sol: Defines Ethereum Blockchain storage schema and functions
|      |                        for UserDescriptors. These descriptors describe parameters
|      |                        for each individual user.
|      |-- Migrations.sol: Used to launch the descriptor.sol files to the blockchain. Makes
|      |                   descriptors accessible to rest of Node app and to blockchain.
|
|-- docs: contains an html document with pages listing various classes, methods, and assests
|         that are within our system
|
|-- gifs: contains some instructional gifs for use by members of our team
|
|-- migrations: each of these files obtain corresponding migrations.sol files from
|               contracts and make them available to blockchain, this is done so
|               we can store data and functions within the blockchain
|      |-- 1_initial_migrations.js
|      |-- 2_user_desc_migration.js
|      |-- 3_global_desc_migration.js
|
|-- node-tests: contains files to test our system:
|      |-- integration: contains file(s) integration test
|      |-- unit: contains file(s) for unit tests
|
|-- src: contains main business logic files:
|      |-- graphql
|      |      |-- resolvers: contains files that will receive different requests
|      |      |              from client. Then the resolver will carry out operations
|      |      |              based on the particular request ex obtain data from blockchain
|      |      |              or compute user parameters or etc. The resolvers will return some
|      |      |              data based on request or null if error of some kind.
|      |      |
|      |      |      |-- accounts-create-verify-resolver.ts: resolver that create accounts and
|      |      |      |                                       facilitate login.
|      |      |      |
|      |      |      |-- accounts-resolver.ts: gets ether balace for any account
|      |      |      |-- crawler-resolver.ts: gets web crawler query, searches google
|      |      |      |                        for request and returns google searches
|      |      |      |                        pertaining to request.
|      |      |      |
|      |      |      |-- dynamic-analytics-resolver.ts: resolver handles preparing the
|      |      |      |                                  dashboard with required data
|      |      |      |
|      |      |      |-- global-descriptor-resolver.ts: gets and returns data regarding
|      |      |      |                                  overall population parameters
|      |      |      |
|      |      |      |-- hello-world-resolver.ts: irrelevant
|      |      |      |
|      |      |      |-- index.ts: contains all of the resolver in one file so they are
|      |      |      |             more easily accessible
|      |      |      |
|      |      |      |-- user-descriptor-resolver.ts: gets and returns data regarding
|      |      |      |                                individual user parameters
|      |      |
|      |      |-- schema: folder contains the schema for each of the graphql queries
|      |      |      |-- index: contains all of the schemas so they are accessible by graphql api
|      |      |      |-- account-create-verify.graphql
|      |      |      |-- accounts.graphql
|      |      |      |-- base.graphql
|      |      |      |-- crawler.graphql
|      |      |      |-- dynamic-analytics.graphql
|      |      |      |-- global-descriptor.graphql
|      |      |      |-- hello-world.graphql
|      |      |      |-- user-descriptor.graphql
|      |      |
|      |      |-- context.ts: creates "context" global variable from user account id
|      |      |               to be used as authentication for each service in our system
|      |      |               .Created each time user logs in
|      |      |
|      |      |-- index.ts: contains graphql function that will be called by other functions
|      |      |             . This graphql function will recieve and process requests and pass
|      |      |             them along to proper resovlers.
|      |
|      |-- services: folder contains the main business logic of our system. Called by
|      |             corresponding resovlers from graphql folder
|      |
|      |      |-- login:
|      |      |      |-- create-account-service: service creates new user accounts
|      |      |      |                           called by accounts-create-verify resolver
|      |      |      |
|      |      |      |-- verification-service: service that verifies user by comparing
|      |      |      |                         received account id (convered from signed
|      |      |      |                         message parameter), and checking if id exists
|      |      |      |                         in blockchain node. called by
|      |      |      |                         accounts-create-verify resolver
|      |      |      |
|      |      |
|      |      |-- account-service.ts: function that obtains ether balance of account
|      |      |-- crawler-service.ts: queryies google for web searches related to
|      |      |                       individual user data.
|      |      |
|      |      |-- global-descriptor-service.ts: service obtains global parameters from Blockchain
|      |      |                                by utilizing the Ethereum solidity contracts
|      |      |
|      |      |-- user-descriptor-service.ts:   service obtains user parameters from blockchain
|      |      |                                by utilizing the Ethereum solidity contracts
|      |      |
|      |      |-- unlock-accounts.ts: uses web3 library to unlock ethereum account in blochain
|      |      |                      so that they can be read/updated. Called in verification-service
|      |      |
|      |
|      |-- utilities: contains functions that load addresses and contracts from blockchain
|      |              . Loaded content will be used in global&user descriptors
|      |
|      |      |-- account-address-loader.ts
|      |      |-- contract-address-loader.ts
|      |
|      |-- pre-fetcher.ts: functions to reduce loading time
|      |-- server.ts: express server through which cliet will reach graphql endpoint
|      |-- types.d.ts: creates moduel for ganache cli
|
|-- test: contains files that test descriptors; these are test scripts
|      |-- global-descriptors.ts
|      |-- user-descriptors.ts
|
|-- types:
|      |-- truffle-contracts
|      |      |-- index.d.ts: contains all the functions that interact with blockchain
|      |      |               . Connected to the contracts.
|      |      |
|      |      |-- merge.d.ts: connects ethereum contracts to rest of system
|      |
|      |-- web3-contracts: files that define and connect contracts to be able to work
|      |                   with the Ethereum blockcahin
|      |
|      |      |-- GlobalDescriptor.d.ts
|      |      |-- Migrations.d.ts
|      |      |-- UserDescriptors.d.ts
|      |      |-- types.d.ts : event listeners that wait for specific events and
|      |      |                executes appropriate functions
|
|-- .env: defines environmental variables to be used by system
|-- .gitignore: necessary to upload clean versions on github
|-- README.md
|-- package-lock.json: infor on software dependencies and version and etc.
|-- package.json: infor on software dependencies and version and etc.
|-- truffle-config.js: configures truffle ethereum settings to be used by blockchain
|-- tsconfig.json: sets up configurations for typescript use
|-- tslint.json: typescript lint options
