Explanation of the application is in the report.
This code requires Node.js and truffle v5.0.2 to run.
Install Ganache, metamask on your browser and then run the following code
$ npm install
$ truffle test
$ truffle migrate --reset
Then to start the application
$ npm run dev
Now go to local host, import your account to metamask by entering your private key of your account in Ganache. Now use the application!