felicity -- medicine made easy

Overview

We are building a DApp that allows users to store medical records electronically using blockchain. We have used Ethereum and IPFS, which enables storing medical records in a decentralized way, keeping the medical records secure!

The user enters an image of the medical record which gets stored in IPFS. This returns a hash code which is then stored on the Ethereum blockchain.

The purpose of our project is to have decentralised, transferrable and immutable medical records.

Screenshot 2021-05-11 at 7 26 10 AM

Usage

The current usage is quite basic, the user logs into their account and can enter a new medical record or view their previous medical records.

Home Page

The home page is an interface that allows the user to login using their credentials.

Screenshot 1

Upload Page

This page allows the user to upload images of their medical records which can be referred to in the future by medical professionals.

Screenshot 2

Prerequisites

  1. You will need Metamask plugin for Chrome.
  2. Make sure you have Node.js installed.

Installation and Execution

  1. Install Truffle Framework and Ganache (gaphical version) globally.

    npm install -g truffle

    Note: The graphical version of Ganache seems to be more stable on Mac whereas Ganache CLI works better on Ubuntu.

  2. Run the development blockchain. On Ganache, click on Quick Ethereum to enable. You should see a similar page activate --

    Screenshot 3
  3. Open another terminal, clone this repo and install its dependencies.

    git clone https://github.com/deepalisingh11/felicity.git
    
    cd felicity
    
    npm install

    Note: If you get an error on install, that's okay. It should still work as long it shows installed packages message in the end.

  4. Compile, migrate, and test the smart contracts.

    ./node_modules/.bin/truffle compile
    ./node_modules/.bin/truffle migrate
    ./node_modules/.bin/truffle test
    Screenshot 4
  5. Start the application

    npm run start
  6. Navigate to http://localhost:3000/ in your browser.

  7. Remember to connect MetaMask to one of your local Ganache Ethereum accounts.

    Screenshot 5
    • Create and connect to a custom RPC network using the Ganache RPC server (currently http://127.0.0.1:7545), then
    • Import a new account and use the account seed phrase provided by Ganache

Tech Stack

  • Solidity Smart Contracts
  • IPFS for storing image data via Infura
  • Truffle and Ganache for our development and testing framework
  • HTML5 / CSS3 / React / Redux / Bootstrap 4 for our front-end development
  • Ethereum blockchain acts as our back-end storage
  • MetaMask for our web3 provider

Authors

Deepali Singh, Aarushi Gajri, and Muskan Yadav