The Ripple Effect (An Ethereum-Based Fundraiser App)

Overview

The Ripple Effect (An Ethereum-Based Fundraiser App)

Description:

The Ripple Effect is a blockchain based de-centralized application that aims to bring transparency to the process of fundraising and managing donations for various types of charities. Our blockchain is built with Ethereum, using Ganache and Truffle to manage it. For the frontend (interface), we are using ReactJS.

Fundraising and donations is a process that is typically not transparent or easily accountable. By introducing our blockchain into the process, we are making sure that anyone can view the donation and allocation transactions and track where money comes from and where it goes to. This makes the whole process transparent.

Requirements:

1: NodeJS:

Node JS is an asynchronous event-driven JavaScript runtime. It is used to build scalable network applications. It can be easily installed by downloading the latest LTS Release from : https://nodejs.org/en/ (version 16.9.0)

2: Ganache:

Ganache is a personal blockchain for Ethereum development that can be used to deploy contracts, develop applications and run tests. It can be easily installed by downloading from : https://trufflesuite.com/ganache/ (version 2.13.2)

3: Truffle:

Truffle is a world class development environment, testing framework and asset pipeline for blockchains using the EVM (Ethereum Virtual Machine) aiming to make life as a developer easy. It can be easily installed by typing the following in the command prompt : npm -g install truffle (version 5.4.25)

4: React Router Dom:

React Router DOM enables you to implement dynamic routing in a web app. React Router DOM facilitates component-based routing according to the needs of the app and platform. It can be easily installed by typing the following in the command prompt : npm install react-router-dom (version 6.2.1)

5: Ethers.JS:

The ethers.js library aims to be a complete and compact library for interacting with the Ethereum Blockchain and its ecosystem. It can be installed using: npm install ethers (version 5)

6: SASS:

Sass (which stands for 'Syntactically awesome style sheets) is an extension of CSS that enables you to use things like variables, nested rules, inline imports and more. It also helps to keep things organized and allows you to create style sheets faster. It can be installed using: npm install sass (version 7.0.0)

7: Create React App:

Create React App is an officially supported way to create single-page React applications. It offers a modern build setup with no configuration. It can be simply installed using: npm install create-react-app (version 5.0.0)

Functionalities:

The Ripple Effect offers the following functionalities:

  1. The user should be able to donate funds (admin will allocate - see point 6)
  2. The user should be able to donate to a specific cause
  3. The user should be able to view how much they have contributed overall
  4. The user should be able to view the funding for each cause
  5. The admin user should be able to view donated funds
  6. The admin user should be able to allocate funds to a cause
  7. Once the goal amount has been reached for a cause, it should be closed for donations
  8. If there is a time limit for donation/cause then it will no longer receive funds if limit has expired
  9. User will call on payable function of contract
  10. There will be a function to transfer money from one contract to another (for allocating funds)

Implementation Details:

1: Frontend:

Our program flow can be seen in the following flowchart:

We created 12 different pages for the frontend and then connected them using switches from react-router-dom. A customized styling class named Style.scss was used to adopt different styles for different classes/containers.

Some screenshots of our interfaces can be seen as follows:

2: Backend:

For this project, we created one smart contract that was responsible for managing all the donations and funds raised and allocated. We had a custom structure for representing a cause, and some state variables to keep track of causes, donations and funds. The appropriate methods needed for the desired functionalities were also added in. We used the package ethers.js in React to react with our local ethereum node in Ganache. The provider is used to connect to the Ganache blockchain at port 7545 – creating an ethers.Contract with this is enough for accessing any of the FundRaiser contract methods that do not perform state-changing transactions. If we want to do that, then we will use provider.getSigner with the current logged in user’s address and create an ethers.Contract object based off of that signer.

The address and abi of the FundRaiser smart contract are created when the contract is successfully compiled and migrated, and they are stored in truffle-project-directory/build/contracts/FundRaiser.json. We simply copy them to a file config.js and store this file in our React project folder, and import it anytime we need it to connect to the smart contract. We will use the ensuing ethers.Contract object to call upon any of the smart contract methods.

Note that whenever the contract is deployed again e.g. if some new functionality is added and it is recompiled, the config.js file has to be updated.

The list of implemented methods and their descriptions is as follows:

Contributors:

In the end, I'd like to mention my group members who helped me alot in this project. You can find them at:

Sana Khan

Aysha Noor

📫 Contact Me:

Website Gmail GitHub LinkedIn Instagram

You might also like...

A desktop app optimized for people to play web-based incremental game

plaza-app A desktop app optimized for people to play web-based incremental game Setup yarn to install dependencies Local testing yarn start to open lo

Dec 24, 2022

The chat app built with microservice architecture, the app using: Lerna, pm2, GraphQL

The chat app built with microservice architecture, the app using: Lerna, pm2, GraphQL

Microservice Chat App A microservice app! Built With Lerna pm2 Graphql Sequelize Socket.io About The Project Here's why: I want learn socket.io and mi

Aug 27, 2022

Recipe providing mobile app, User selects ingredients in pantry and is then provided recipes for those ingredients. App contains a signup/login, meal planner and grocery list pages.

Recipog Student Information Name Connor de Bruyn Username Destiro Assignment SWEN325 A2 Description “Recipog” is a recipe providing app that allows th

Dec 26, 2021

React-app - Building volume rendering web app with VTK.js,react & HTML Using datasets provided in vtk examples (head for surface rendering and chest for ray casting)

SBE306 Assignment 4 (VTK) data : Directory containing Head and Ankle datasets Description A 3D medical viewer built with vtk-js Team Team Name : team-

Jul 19, 2022

Create Sonnat App - Set up a modern web app which is powered by Sonnat.

Create Sonnat App - Set up a modern web app which is powered by Sonnat.

Jan 31, 2022

"BookStore" is a web app for adding books. It is a Single Page App (SPA) that allows users to add and remove a book from the library

BookStore | M3Wx "BookStore" is a web app for adding and removing books from a library storage. It is a Single Page App (SPA) that allows users to add

Apr 11, 2022

Concircle scanner mobile app is application That helps you scan your order and position and to know if there are exact or not. it's cross-platform app.

Concircle scanner mobile app is application That helps you scan your order and position and to know if there are exact or not. it's cross-platform app.

Concircle scanner mobile app ⭐ Star on GitHub — it motivates Me a lot! Concircle scanner mobile app is application That helps you scan your order and

May 7, 2022

Web App to store a list of books (Title and Author) made as a single page app.

Awesome Books This project its an interactive list of books, you can add and remove items to the list. Built With HTML JS Getting Started In this proj

Nov 9, 2022

✌️ A spring physics based React animation library

✌️ A spring physics based React animation library

react-spring is a spring-physics based animation library that should cover most of your UI related animation needs. It gives you tools flexible enough

Dec 28, 2022
Owner
Hassan Shahzad
I am a passionate Software Developer who is always aspiring to learn more. Practice makes perfect and I am always working on improving my skills and myself.
Hassan Shahzad
Using Ethereum Smart Contracts to verify any user's vaccination via Identification Number or QR Code.

Covid-Vaccine-Verification-Blockchain Using Ethereum Smart Contracts to verify any user's vaccination via Identification Number or QR Code. Requiremen

Zaynab Batool Reza 4 May 14, 2022
A little practice dapp for ethereum smart contract development.

Basic Sample Hardhat Project This project demonstrates a basic Hardhat use case. It comes with a sample contract, a test for that contract, a sample s

Andres Vidoza 9 Sep 28, 2022
Run an Ethereum node — just press start

NiceNode "Run a node, just press start" Mission: 2x the number of Ethereum nodes by making a one-click-to-start Ethereum node Why?: The light client r

Johns Gresham 81 Jan 2, 2023
Bursting particle effect buttons for React 🎉

react-particle-effect-button (demo) Bursting particle effect buttons for React. This library is a React port of an awesome Codrops Article by Luis Man

Travis Fischer 1.5k Dec 23, 2022
An experimental hover effect, where a content preview is shown while a mini map indicates the position of the cursor.

Hover Preview Effect with Mini Map An experimental hover effect, where a content preview is shown while a mini map indicates the position of the curso

Codrops 27 Dec 29, 2022
Mobile app development framework and SDK using HTML5 and JavaScript. Create beautiful and performant cross-platform mobile apps. Based on Web Components, and provides bindings for Angular 1, 2, React and Vue.js.

Onsen UI - Cross-Platform Hybrid App and PWA Framework Onsen UI is an open source framework that makes it easy to create native-feeling Progressive We

null 8.7k Jan 8, 2023
A small component based app library composing user interfaces and apps.

See https://vibejs.com for ongoing documentation and info. VibeJS A small component based JavaScript library to build user interfaces and apps. If you

Bret 20 Nov 16, 2022
TV Show App is an application that allows to searh tv shows based on user input. Each tv show is displayed in a Bulma Card component and when clicked, heads you to the official tv show site

TV SHOW APP TV Show App is an application that allows to search tv shows based on user input. Each tv show is displayed in a Bulma* Card component and

HENDEL SAMY 1 Dec 19, 2021
Edvora App is a web application based on an external API, showing data about different types of products and the user can filter these data by choosing a specific state, city or product name. Build with React.js

Edvora App is a web application based on an external API, showing data about different types of products and the user can filter these data by choosing a specific state, city or product name. Build with React.js

Kyrillos Hany 5 Mar 11, 2022
A tiny package for JavaScript Web App's state management based on RxJS & Immer

A tiny package for JavaScript Web App's state management based on RxJS & Immer

Xiao Junjiang 12 Oct 19, 2022