{"id":18964260,"url":"https://github.com/lorransutter/ekyc","last_synced_at":"2025-10-05T18:39:24.792Z","repository":{"id":38769403,"uuid":"275641059","full_name":"LorranSutter/eKYC","owner":"LorranSutter","description":"KYC solution using Hyperledger Fabric","archived":false,"fork":false,"pushed_at":"2022-12-30T20:44:54.000Z","size":4897,"stargazers_count":46,"open_issues_count":15,"forks_count":28,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-04-16T05:44:52.075Z","etag":null,"topics":["blockchain","chaincode","hyperledger-fabric","kyc","nodejs","reactjs"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LorranSutter.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-06-28T18:06:12.000Z","updated_at":"2025-04-02T12:16:06.000Z","dependencies_parsed_at":"2023-01-31T16:16:19.120Z","dependency_job_id":null,"html_url":"https://github.com/LorranSutter/eKYC","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LorranSutter%2FeKYC","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LorranSutter%2FeKYC/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LorranSutter%2FeKYC/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LorranSutter%2FeKYC/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LorranSutter","download_url":"https://codeload.github.com/LorranSutter/eKYC/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249699341,"owners_count":21312379,"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":["blockchain","chaincode","hyperledger-fabric","kyc","nodejs","reactjs"],"created_at":"2024-11-08T14:23:28.359Z","updated_at":"2025-10-05T18:39:24.674Z","avatar_url":"https://github.com/LorranSutter.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n   \u003cimg src=\"https://res.cloudinary.com/lorransutter/image/upload/v1626387244/eKYC/eKYC_logo.svg\" height=150/\u003e\n   \u003cp\u003eeKYC\u003c/p\u003e\n\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n   Blockchain solution for sharing customer KYC information, using Hyperledger Fabric, Node.js and ReactJS. Presented as final assingment for BCDV1012 - dApp I from \u003ca href='https://www.georgebrown.ca/programs/blockchain-development-program-t175/'\u003eBlockchain Development\u003c/a\u003e program from \u003ca href='https://www.georgebrown.ca'\u003eGeorge Brown College\u003c/a\u003e.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n   For architecture, flow diagrams and more detailed explanation, please check \u003ca href='Project%20Documents/Architecture%20Design%20%26%20Governance%20Document%20-%20eKYC%20-%20dAPP%201.pdf'\u003eProject Documents\u003c/a\u003e folder.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/Nas2020\"\u003eCherukkatil Naseer\u003c/a\u003e\u0026nbsp;|\u0026nbsp;\n    \u003ca href=\"https://github.com/TheClockworkOrange\"\u003eHenry Eriko Mwenge\u003c/a\u003e\u0026nbsp;|\u0026nbsp;\n    \u003ca href=\"https://github.com/LorranSutter\"\u003eLorran Sutter\u003c/a\u003e\u0026nbsp;|\u0026nbsp;\n    \u003ca href=\"https://github.com/pumpin100\"\u003eRaymond Lawal\u003c/a\u003e\u0026nbsp;|\u0026nbsp;\n    \u003ca href=\"https://github.com/mascarenhaswanja\"\u003eWanja Mascarenhas\u003c/a\u003e\u0026nbsp;|\u0026nbsp;\n    \u003ca href=\"https://github.com/DeadPreZ-101\"\u003eZakariya Jasat\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \n  \u003cimg src=\"https://res.cloudinary.com/lorransutter/image/upload/v1594527234/eKYC/eKYC-2.0_1.gif\" height=400/\u003e\n  \u003cimg src=\"https://res.cloudinary.com/lorransutter/image/upload/v1594528007/eKYC/eKYC-2.0_2.gif\" height=400/\u003e\n  \n\u003c/p\u003e\n\n## :runner: How to run\n\nThis project was developed using a [Google Cloud Platform](https://cloud.google.com/) virtual machine, so every step must be performed in a VM CLI under a _sudo -s_ command.\n\nStart your VM and save the highlighted External IP:\n\n\u003cp align=\"center\"\u003e\n   \u003cimg src=\"https://res.cloudinary.com/lorransutter/image/upload/v1594076924/eKYC/VM.png\"/\u003e\n\u003c/p\u003e\n\nYou must have [Fabric samples](https://github.com/hyperledger/fabric-samples) to run this project. You will clone this project inside fabric-samples folder so as to this can use the files from bin and config folders.\n\nHere you can see the folder structure and the main files mentioned in this section:\n\n```\n📦fabric-samples\n ┣ 📂bin\n ┣ 📂config\n ┗ 📂eKYC\n   ┣ 📂api\n   ┣ 📂chaincode\n   ┣ 📂frontend\n      ┗ 📂src\n         ┗ 📂service\n            ┗ 📜baseURL.json\n   ┣ 📂test-network\n   ┣ 📜.env\n   ┣ 📜networkDown.sh\n   ┗ 📜setUp.sh\n```\n\nOpen your terminal in the fabric-samples folder and clone the project.\n\n``` sh\n# Clone this repo\ngit clone https://github.com/LorranSutter/eKYC.git\n\n# Go to the project folder\ncd eKYC\n```\n\nTo run the application you will need to set your own configurations of _port_, _database_, _private key_ and _encryption key_. Create the following .env file in the indicated path and format with your customized configurations:\n\n``` json\n// ./.env\n\nPORT_API=5000\nPRIVATE_KEY=\"54AD766F231CCB0EA64156F1E5488\"\nENCRYPTION_KEY=\"CoCKidLqlVuB8y1EYmKaye1UGoxtHmko1LmyqOHvVht=\"\nMONGODB_URI_DEV=\"YOUR_DEV_MONGO_URI\"\n```\n\nNow you will need two opened terminals to run the project. One for the API and another one for the frontend.\n\nAPI will run on http://35.193.245.108:5000/\n\nFrontend will run on http://35.193.245.108:3000/\n\n``` sh\n\n## In the first terminal ##\n\n# Go to the chaincode folder\ncd chaincode\n\n# Install dependencies\nnpm install\n\n# Go to the API application\ncd ../api\n\n# Install dependencies\nnpm install\n```\n\n``` sh\n## In the second terminal ##\n\n# Go to the frontend application\ncd frontend\n\n# Install dependencies\nnpm install\n```\n\nIn order to connect frontend to the API, you will have to provide the base URL of the API in the following file:\n\n```sh\n## In the second terminal ##\n\n# Go to the baseURL.json file\ncd src/service/baseURL.json\n\n{\n    \"baseURL\": \"http://35.193.245.108:5000\"\n}\n```\n\nNow you can start the network and perform all necessary set up running the following magic script:\n\n``` sh\n## In the first terminal ##\n\n# Go to the root\ncd ..\n\n# Run the set up script\n./setUp.sh\n```\n\nRun the API application:\n\n``` sh\n## In the first terminal ##\n\n# Go to the API application\ncd api\n\n# Run API application\nnpm run start\n\n# Or to use nodemon\nnpm run dev\n```\n\nFinally run the frontend application:\n\n``` sh\n## In the second terminal ##\n\n# Run the project\nnpm start\n```\n\nIf you want to stop the network and delete all artifacts created, just run the next magic script below:\n\n``` sh\n## In the first terminal ##\n\n# Go to the root\ncd ..\n\n# Run the script\n./networkDown.sh\n```\n\n#### Login credentials\n\nClient\n* login: user01 / user02 / JonasKahnwald / MarthaNielsen / ClaudiaTiedemann / ElisabethDoppler / H.G.Tannhaus\n* password: 123456\n\nFinancial Institution\n* login: FI1 / FI2\n* password: 123456\n\n## :book: Resources and technologies :computer:\n\n1. Chaincode\n\n   - [Fabric samples](https://github.com/hyperledger/fabric-samples) - get started samples for Hyperledger Fabric\n   - [Fabric contract API](https://www.npmjs.com/package/fabric-contract-api) - contract interface to implement smart contracts\n   - [ESlint](https://eslint.org/) - pluggable JS linter\n\n2. API\n\n   - [Express.js](http://expressjs.com/) - web application framework\n   - [MongoDB](https://www.mongodb.com/) - NoSQL database\n   - [Mongoose](https://mongoosejs.com/) - object data modeling (ODM) library for MongoDB and Node.js\n   - [Async](https://caolan.github.io/async/v3/) - library to perform asynchronous operations\n   - [Express validator](https://express-validator.github.io/docs/) - middleware to validate data\n   - [Bcryptjs](https://www.npmjs.com/package/bcryptjs) - library to perform cryptography\n   - [JWT. IO](https://jwt.io/) - JSON Web Tokens to allow, decode, verify and generate JWT\n   - [Dotenv](https://www.npmjs.com/package/dotenv) - loads environment variables from a .env file\n   - [Fabric CA Client](https://www.npmjs.com/package/fabric-ca-client) - SDK for Node.js to interact with HLF CA\n   - [Fabric Network](https://www.npmjs.com/package/fabric-network) - SDK for Node.js to interact with HLF\n\n3. Frontend\n\n   - [Rimble](https://rimble.consensys.design/) - design system\n   - [ReactJS](https://reactjs.org/) - frontend library\n   - [React router dom](https://www.npmjs.com/package/react-router-dom) - routing and navigation for react apps\n   - [React-cookie](https://www.npmjs.com/package/react-cookie) - cookie interaction for React applications\n   - [Axios](https://www.npmjs.com/package/axios) - HTTP requests\n\n## :cookie: Credits\n\n- [Encryption/Decryption code using cipher](https://github.com/zishon89us/node-cheat/blob/master/stackoverflow_answers/crypto-create-cipheriv.js#L2)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Florransutter%2Fekyc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Florransutter%2Fekyc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Florransutter%2Fekyc/lists"}