MVP ‐ Implementation - saayam-for-all/docs GitHub Wiki

MVP Delivery: Wed, September 30, 2024

Front End

Web app in React running from AWS S3

Backend

AWS API Gateway, Cognito, a few Lambda functions that support MVP operations, AWS EKS on Fargate hosting a few micro services and AWS Arora DB with Postgres flavor.

Use Cases

  • When a non-registered user comes to our site, SaayamForAll.org, show our main landing page explaining what we are and what we do.
  • Non-registered users should be able to click Donate button to donate money to our Saayam.org
  • If any user is willing to login/join our Saayam.org, they need to click Login button. A popup window allows users with basic authentication supported by Cognito. If this user has already registered with us, he will enter his userid (mostly an email id or WhatsApp phone number) and password. If this user is a new user, he/she will click on Signup button from this popup window. - Need to do custom UI (Need to find UI folks to assign this one)
  • Provide Role Based Access Controlled (RBAC) UI i.e. based on user's role - basic user, volunteer, Saayam employee/admin/super admin, we need to show/hide pages and controls. - Once user signs in, we need to show a "complete your user info" warning sign on user profile (Deepika Venkatesan, Rashmi Bilaskar, Vignesh Sridhar, Jason Felix, Sayali Oka)

New User Registration

  • Collect basic information - Email id, WhatsApp phone number, Name and Country/Timezone to start with. Refer to Use Cases doc for the complete use case. Set up optional multi factor authentication for every user.
  • Once user verifies his intent by confirming from his email or phone, then invoke a Lambda function to add this user to our DB.
  • Lambda function will invoke an API on the Volunteer micro service to add this user. (Sayali Oak, Lianwei Deng(Eliza)) ETA -
  • After successful addition of a new user to our DB, we should show a message on the user's dashboard page asking them to complete their profile before filing a new help request. It is better if we have all their preferences for finding volunteers. (TBD - Sayali Oak)
  • Based on users timezone - Europe or Non-Europe, we will add this user in the appropriate DB to support GDPR. We need to honor GDPR rules for storing PII data. All European users will be in Ireland region's DB and all other users will be in N.Virginia regions DB. (Sayali Oak)
  • Getting basic info immediately after login - Using the logged in email id, we need to get the user info (Deepika Venkatesan, Vignesh Sridhar, Sayali Oak, Sayali Oak)
  • Populate the user's dashboard - Populate the data for My Requests tab - (Rajesh Mahendran/Deepika Venkatesan, Rashmi Bilaskar, Ethan Han, Sayali Oak, Sayali Oak)
  • Profile page support to collect more info from the user (Deepika Venkatesan, Ashan Deen, Vignesh Sridhar, Meenakshi Vadivelu, Sayali Oak)
  • Volunteer promotion wizard to promote a basic user to a volunteer (API & DB - Rajesh Mahendran, Vamsi Bulusu, Revanth Tummala, Prakhar Seth, Parth Barot, Meenakshi Vadivelu, Meena Vadivelu)

Saayam Request

Once user logs in, the basic user can make a Saayam request for himself/herself or on behalf of another person.

  • API Gateway authenticates each request by checking with Cognito. Authenticated request will invoke a Lambda function.
  • Lambda function will invoke an API on Request micro service to process this request.
  • Request micro service checks with ML micro service to make sure that this is NOT a fraud request. If it is a genuine request, ML micro service does the necessary language translations. If it is a fraud request, ML micro service adds a record about this request on our AWS S3 for data analytics.
  • Request micro service adds an entry into our DB for the genuine request. For fraud case, it returns an error to the caller.
  • Request micro service asks Volunteer micro service for the matched volunteers.
  • Volunteer micro service sends a list of 0..N matched volunteers to the Request micro service.
  • Request micro service sends to notifications to all the matched volunteers and schedules a N hour reminder. Within this time, if there is NO acceptance from any one volunteer, Request micro service makes a call on AI micro service to generate a text response.
  • If we can't find a volunteer, we need to fallback on Generative AI to generate an automated response and show it to the requestor along with emergency contact info.
  • AI micro service generates a response and returns to the Request micro service. Request micro service returns this response to the requestor.
  • Based on the notifications, volunteers need to login and click on Accpet/Deny button to convey their willingness to lead a request.
  • When a volunteer accepts to become a lead volunteer, Request micro service sets this user as the lead volunteer for this request.
  • Request micro service sends OTP to both the requestor and the lead volunteer. They need to exchange the OTPs during their first handshake.
  • Requestor has the option to reject the lead volunteer if he/she is NOT satisfied. Requestor requests for another lead volunteer. Request micro service repeats the above process.
  • Lead volunteer tries to get more info from the requestor.
  • Lead volunteer requests for more ideas to solve the problem by making a request to Generative AI micro service.
  • If needed, lead volunteer requests for N helping volunteers. Helping volunteer selection process is similar to above volunteer matching process.
  • If lead volunteer decides to go with voluntary organizations, lead volunteer requests for top N voluntary organizations.
  • Voluntary Org micro service sends 0..N voluntary org info to the lead volunteer.
  • Lead volunteer gets the contact info for the selected voluntary org.
  • Lead volunteer hands over the requestor to the voluntary org and closes the case.
  • Lead volunteer can also request for more info using AI micro service.
  • Change of lead volunteer - when lead volunteer decides to drop off for any personal reason, we can promote the first helping volunteer as the lead volunteer and/or ask one of them to become the lead volunteer.
  • Support for add/delete of helping volunteers.
  • Lead volunteer, helping volunteers and requestor should be able to find the emergency contact info. This button should be available to all personas.

Donation Support

Need to take donors to a page where we collect money - one time or at a regular frequency. We need to set this up with our integrators.

Showing Ads

Need to show ads on the left, on the right and at the bottom our main landing page. We integrate with Google AdSense.