{"id":13989692,"url":"https://github.com/maximevaillancourt/trace","last_synced_at":"2025-07-22T11:31:11.217Z","repository":{"id":98635063,"uuid":"129751922","full_name":"maximevaillancourt/trace","owner":"maximevaillancourt","description":"Supply chain transparency platform proof-of-concept based on the Ethereum blockchain ✍️","archived":true,"fork":false,"pushed_at":"2019-10-31T01:45:53.000Z","size":1965,"stargazers_count":64,"open_issues_count":0,"forks_count":46,"subscribers_count":8,"default_branch":"master","last_synced_at":"2024-11-29T08:39:27.995Z","etag":null,"topics":["blockchain","dapp","decentralized","ethereum","javascript","proof-of-concept","react","reactjs","solidity","supply-chain","transparency","truffle","web3"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/maximevaillancourt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null},"funding":{"github":["maximevaillancourt"]}},"created_at":"2018-04-16T13:58:06.000Z","updated_at":"2024-05-22T01:00:03.000Z","dependencies_parsed_at":"2024-01-15T16:37:21.467Z","dependency_job_id":null,"html_url":"https://github.com/maximevaillancourt/trace","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/maximevaillancourt/trace","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maximevaillancourt%2Ftrace","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maximevaillancourt%2Ftrace/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maximevaillancourt%2Ftrace/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maximevaillancourt%2Ftrace/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maximevaillancourt","download_url":"https://codeload.github.com/maximevaillancourt/trace/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maximevaillancourt%2Ftrace/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266483568,"owners_count":23936370,"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","status":"online","status_checked_at":"2025-07-22T02:00:09.085Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["blockchain","dapp","decentralized","ethereum","javascript","proof-of-concept","react","reactjs","solidity","supply-chain","transparency","truffle","web3"],"created_at":"2024-08-09T13:01:57.771Z","updated_at":"2025-07-22T11:31:10.081Z","avatar_url":"https://github.com/maximevaillancourt.png","language":"JavaScript","funding_links":["https://github.com/sponsors/maximevaillancourt"],"categories":["JavaScript"],"sub_categories":[],"readme":"### ⚠️ **This project is not supported anymore. Here be dragons!** ⚠️\n\n------------\n\n![logo](https://user-images.githubusercontent.com/8457808/38818082-db3aea62-4167-11e8-8e59-7af47131c087.png)\n\n# Trace\n\n\u003e A transparent supply chain management platform with end users in mind.\n\nTrace is a decentralized application based on the Ethereum blockchain aiming to\nlet consumers see the data behind the products they buy every day. It currently \nallows industry experts to add products to the app, as well as create certifications\nthat can be added to products. A mobile companion app (not developed yet) would \nallow scanning Trace QR codes placed on the actual products to see the data\non-premise (e.g. at the grocery store).\n\nKeep in mind that **this is a proof of concept**. It is *not* production ready by any means. However, we do invite you to play around with the project and use it as you see fit. There are some rough edges, so we definitely appreciate your help in improving the platform.\n\nThis project was developed under the supervision of Bessam Abdulrazak, director of the [Ambient Intelligence Lab](https://ami.usherbrooke.ca/welcome/en-lab/) at Université de Sherbrooke.\n\nMade using the Truffle toolkit, React.js, Redux, and Webpack.\n\nLogo design by [Laurence Mailhiot](https://twitter.com/mailhiotlaur).\n\n## Screenshot\n\n![scrot](https://user-images.githubusercontent.com/8457808/38819232-d35aed1e-4168-11e8-90e7-1d74fe726729.png)\n\n## Installing / Getting started\n\n0. Clone the repo:\n\n    ```shell\n    git clone https://github.com/maximevaillancourt/trace.git\n    cd trace\n    ```\n    \n1. Install the Truffle toolkit globally and install project dependencies:\n\n    ```shell\n    npm install -g truffle@4.1.7 \u0026\u0026 npm install\n    ```\n\n2. In a new shell, start the Truffle development console:\n\n    ```shell\n    truffle develop\n    ```\n\n3. In the Truffle console, compile and deploy the smart contracts:\n\n    This will effectively reset your local blockchain, meaning that all existing transactions will be deleted.\n\n    ```shell\n    migrate --reset\n    ```\n\n4. Back in a regular shell, start the Webpack server:\n\n    ```shell\n    npm run start\n    ```\n\n    A browser window should then open automatically at `http://localhost:3000` (or whatever port you set manually). If you see the Trace home page, you're ready to go. Otherwise, if the page is stuck on \"Waiting for Web3...\", proceed to steps 5 and 6. \n\n5.  Install the [MetaMask browser extension](https://metamask.io/). Once installed, click on the MetaMask icon, then use the \"Import Account\" feature to create an account from a private key. Copy the first private key from the first few lines of output of `truffle develop` and paste it into the \"Private Key\" field in Metamask.\n\n6.  Connect to your private network. Click the network chooser (it will likely say \"Main Ethereum Network\" at the top), and choose \"Custom RPC\". In there, enter the URL that matches the configuration in the `truffle.js` file (which should be `http://localhost:9545` by default), then click \"Save\".\n\n7. Refresh the page in your browser, and you should be good to go!\n\n## Developing\n\nTo change something in the \"smart contracts\" side of things, you need to compile your contracts every time you change them\nusing the following command in the Truffle console:\n\n```shell\nmigrate --reset\n```\n\nAs for the React front-end, the Webpack server should refresh the page in your browser automatically when a change is detected.\n\n### Building\n\nOnce you're ready to bundle the front-end app, use the `build` script to bundle everything together.\n\n```shell\nnpm run build\n```\n\n### Deploying\n\nYou're free to deploy the generated front-end bundle wherever you see fit. As for the smart contract, you can deploy it through Ganache/Truffle by adding a new network configuration. See [this guide](http://truffleframework.com/tutorials/deploying-to-the-live-network) for more information.\n\n## Features\n\n* Add a product to the platform\n* Search for a particular product\n* Add certifications to products (e.g. \"biological\", \"non-GMO\", etc.)\n* Browse a product's version history\n* See the product's previous positions on a map\n* Combine products into one\n* Split a product into many (WIP)\n\n# Contributing\n\nFor bug fixes, documentation changes, and small features:  \n\n1. [Fork it](https://github.com/maximevaillancourt/trace/fork)\n2. Create your feature branch (`git checkout -b my-new-feature`)  \n3. Commit your changes (`git commit -am 'Add some feature'`) using [GPG signing](https://help.github.com/articles/signing-commits-using-gpg/)\n4. Push to the branch (`git push origin my-new-feature`)  \n5. Create a new Pull Request\n\nFor larger new features: do everything as above, but first also make contact with the project maintainers to be sure your change fits with the project direction and you won't be wasting effort going in the wrong direction\n\n## Links\n\n- Repository: https://github.com/maximevaillancourt/trace\n- Issue tracker: https://github.com/maximevaillancourt/trace/issues\n- Related projects:\n  - Provenance: http://provenance.org/\n  - SCTS: https://github.com/AtrauraBlockchain/scts\n  - Phinomenal: https://github.com/phi-nomenal/phi-nomenal\n  - Sawtooth Lake traceability example: https://provenance.sawtooth.me/\n\n## Licensing\n\nThe code in this project is licensed under MIT license. See the [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaximevaillancourt%2Ftrace","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaximevaillancourt%2Ftrace","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaximevaillancourt%2Ftrace/lists"}