nhhung1810 / CS426-final-SaoOke

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CS426-final-SaoOke

From past to present, charity fundraising has always been an expression of the solidarity spirit of Vietnamese. A lot of people take part in the charity wave, and as a consequence, there are many cases where celebrities use their popularity and influence to call for a fundraising and take all or part of the money for personal uses. And those are just a little part of the inadequacy of the problem of charity fundraising.

One of the ways to authenticate donations or fund use is checking bank statement of the fundraising. However, when it comes to a large fundraising campaign, the number of donations and fund uses can be very huge, which leads to the making of the statement can be very hard and time-consuming.

Because of the disadvantages of bank statements, we came up with an idea of a charity management app in which every donation, every use of the fund can be absolutely trusted. SaoOke is a charity management project where users can either create fundraising campaigns, donate to some or even send help requests. We provide not only a “sao kê” (bank statement), but a “sao oke”. In this project, we’ve tried using blockchain to create a decentralized app (dApp), which provides better security and authentication, so that each activity like fundraising, donating or fund using can be guaranteed.

So, let’s jump into the details.

“Sao? Oke?"

(What? Oke?)

Feel free to check out our demo video and detailed report!

Key Technologies

Java, Android Studio, Retrofit, Node.js, Blockchain, REST API, Cryptocurrency, Docker, Golang

Project Structure

Please note that this project is still in development. The blockchain is partially implemented, there are no P2P or distributed system. Because of limited resources, we simulate the "P2P" by pushing the Blockchain to a server, and build API for everyone to connect. However, we still implement some basic features, including the signature verification, blockchain validation, and the API is well fitted for our purpose. If you find this useful, you can reimplement the API to fit your purpose.

The structure:

  1. Server: contains the Blockchain, encapsulate the user (username and public key in PEM format), the campaign (specially defined for our purpose), and provides API for our mobile clients to interact with; built with Node.js.
  2. Mobile Client: built with Java for Android users; served as the main interface to interact with the server.
  3. Bots: As we want to simulate the multiple-users scenarios, we built bots in Golang.

Server Deployment

Prerequisite: Operating System: Windows 10

  1. Install docker-compose: https://docs.docker.com/compose/install/
  2. cd to the directory, run command:
docker-compose build
docker-compose up
  1. Open project 'Client' in Android Studio and build
  2. Run

Error may occurs in deployment

  • In runtime, the server may run with missing dependency/lib error, you can cd to server/node and run the following command to fix this
npm install <missing-lib>
  • If Docker Desktop (in Windows 10) doesn't start properly, there may be a virtualization service conflict between Docker and Virtual Device (VD). This problem has occured when I install Nox Player as an alternative virtual device to Android Virtual Device (AVD). If you did install Nox or any alternative VDs, go to start menu and search for vitrualization features and turn it on (as Nox turn it off) and restart 1-2 times an check Docker Desktop again. It should functions properly by now.

App Flow

SaoOke's App Flow 1 SaoOke's App Flow 2

Screenshots

Screenshot 1 Screenshot 2 Screenshot 3 Screenshot 4 Screenshot 5 Screenshot 6 Screenshot 7 Screenshot 8 Screenshot 9 Screenshot 10 Screenshot 11 Screenshot 12

Team Members (LinkedIn Profiles)

About

License:MIT License


Languages

Language:Java 73.9%Language:JavaScript 21.3%Language:Go 4.7%Language:Dockerfile 0.1%