This Application can be used for Non-Profit Organization as a platform where People suffering from Personal Cause or Medical Cause or Victims of Natural Calamities can be provided with a helping hand. Cause can be created by Admin once after confirming the cause from the victim personally and then people can contribute by donating money for the cause.
Ashish Chouhan (11010876) Hitesh Chaudhari (11011760) Nikhil Gaikwad (11010865) Paneesh Prabhuraj (11010866) Sanket Nipane (11010856)
The project is divided into following stages as shown in Figure 1:
- Client: VueJs
- Server: Springboot
- Database: PostgreSQL
- Authentication: Amazon Web Service IAM
- Server Monitoring: Prometheus (In memory DB), Grafana (Data visualization)
Figure 1. Fund Raiser Architecture Diagram
- Browse All the Cause created by Admin => Accessible to Admin, Registered User and Unregistered User.
- Details about the Cause => Accessible to Admin, Registered and Unregistered User.
- Register a User => Using AWS IAM. (AWS IAM provide the user credential management where loginId and password is stored at AWS server and when the user login into the system, the credentials are verified at AWS side. We are not storing the password of the user in postgres)
- Login into the application => Using AWS IAM (After Login JWT Token is generated by AWS and provided to the application, this token is saved during login in Postgres in front of the user id till the time user is logged in and all communication here after is handled by JWT token. Once User Logged Out, the token is deleted from the Postgres table. In this way user can logged in to the system with different devices.)
- Create a Cause => Accessible to Admin.
- Update a Cause => Accessible to Admin.
- Donate for the Cause => Accessible to Admin and Registered User.
- Deactivate the Cause:
- Scenario 1: When targeted amount is reached. (Handled at Run Time, when user is transferring the amount)
- Scenario 2: When Expiration Date is reached. (Handled with a Spring boot schedular job)
Important: Clone the GitHub repository sad_2019_3_team_10
-
Client Setup:
- Install Node Js
- Navigate inside the Client directory:
cd sad_2019_3_team-10/Client
- Execute command:
npm install
-
Server Setup:
- Install Java 8.0
- Setup Environment variable for JAVA_HOME.
-
Database Setup:
- Install Postgres:10 (With user Id =
postgres
and password =postgres
, If ID and password are different, Please update them in application.properties file in the Server folder). - Create a Database by Name “fundraiser” in the database
- Right Click on the Database and import the tar provided by name fundraiser.
- Install Postgres:10 (With user Id =
-
Monitoring system:
-
Prometheus:
- Install Prometheus.
- Replace existing Prometheus.yml file with this. (attach a file here Prometheus.yml)
- Execute the application with Prometheus.exe.
-
Grafana:
- Install Grafana.
- Replace the file in /data/Grafana.db with the file present in the root folder by name Grafana.db
- Execute the application with Grafana-server.exe and login with username: admin and password: admin.
- Open dashboard with name ‘JVM (micrometer)’.
-
Note: We tried with deploying the application on Docker. Docker file for Client is present in Client folder, docker file for Server is present in Server folder and docker-compose file is present in the root folder. But we were able to spin up the Postgres image and Server image through docker-compose but Client image is having issue. Therefore, only docker files are provided and steps are not mentioned to spin up the docker containers.
- Start Postgres and Connect to the fundraiser database.
- Start the Server:
- Navigate to the target folder present in Server folder:
cd sad_2019_3_team-10/Server/target
- Execute command:
java -jar fundraiser.jar
- Server will start at http://localhost:8085
- Navigate to the target folder present in Server folder:
- Start the Client:
- Navigate to the Client directory:
cd sad_2019_3_team-10/Client
- Execute command:
npm run dev
- Client will start at http://localhost:8080
- Navigate to the Client directory:
Kindly refer Figure 2 and Figure 3 for screenshots showing the Server-side monitoring with the help of Grafana and Prometheus:
Figure 2. Grafana Monitor Dashboard
Figure 3. Grafana Monitor Dashboard