Skip to content

MVP (Minimum Viable Product)

Rao Bhethanabotla edited this page Jun 18, 2024 · 11 revisions

MVP Delivery: Wed, July 31, 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 hosting a few micro services and AWS Arora DB with Postgres flavor.

Use Cases

  • When a non-registered user comes to our site, Saayam.org, show our main 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 Register button from this popup window.

New User Registration

Collect basic information - Email id, WhatsApp phone number, Name and Timezone to start with. Refer to Use Cases doc for the complete use case. Set up 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. * 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.

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 adds an entry into our DB for this request and spawns a new workflow/Step function for this request.

Request Handling

Each request goes through a workflow as mentioned in our Use Cases doc. At the high level, * We need to check if this is an authentic request or not (Optional for MVP) * Try to identify the volunteers (basic users have to be promoted to volunteers) who can work on this case and identify the first few (10 or 20) and send them notifications. Wait for a reasonable time (TBD) and send notifications to the next batch. * If we find a volunteer, assign this case to the volunteer and make him the case owner * If we CANNOT find a volunteer, try to find a volunteer org by checking with Volunteer Org micro service. Try to connect with this requestor with a volunteer org. * If we cannot find a volunteer org also, then try to do Google or use our AI micro service to show some generated text message (based on user's preference) and ask them to contact their local 911 type of service by providing the contact number (using our micro service). * Case owner will continue to work on the case until the case is closed.

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.