Architecture - WBot3000/choreward GitHub Wiki

Overview

Choreward is an interactive family-oriented application designed to manage to-do lists and host family contests with video submissions. The application will consist of a user-friendly client that is easy to navigate and fun to interact with. It will be hosted on AWS servers, and use AWS services for all of its features. It will use a comprehensive non-relational database that supports a variety of data types (e.g. text, images, and videos).

  • Type of Application: Web and Mobile Application
  • Hosting: AWS Cloud-based hosting platform
  • Types of Users: Admin, Parents, Children, Roommates

Technology Stack

Languages

JavaScript (React.js), GraphQL

Tools

AWS Amplify

  • Amazon Cognito
  • Dynamo DB
  • S3
  • Appsync
  • Cloud Watch (For Monitoring Development and Testing)
  • I AM (For Privileged access)

Infrastructure

AWS Services are the backbone of the infrastructure, providing a variety of solutions for hosting, computing, storage, and more.

Solution Design

High-Level Context View

Choreward Context View

Container View

ContainerViewUdated

GraphQL Schema

schema.json

Non-functional Requirements

  • Availability: The application contains a real-time component in the form of weekly tasks and family competitions, so the ability to access the site within a certain time period is a must. In order to achieve this, every time the data is changed, it will be re-fetched, so the user is always working with the latest available data.
  • Usability: The application will be used by younger children, so ease of use is a must. Every time a person creates a new UI component is created, another member of the team will review it to determine how intuitive it is.
  • Performance: The real-time components of this application and its use by children (who can often be impatient) mentioned above both contribute to the need for high performance. The team will aim for latency of at most 1-2 seconds for all of the application's features, continually testing this as more functionality is developed.
  • Security: The application will contain personal account and family data (usernames and password, family names, videos). Since creating security solutions can be very challenging, we will use the built-in security protections of AWS services, as well as only collecting what is necessary for the app to function.

Assumptions

  • User has access to the internet
  • User has basic operating knowledge of how to operate web applications
  • Application frontend design should be mobile-friendly
  • If application crashes, data will be backed up

Presentation Resources

The PPT Slides could be find here (https://docs.google.com/presentation/d/1N5axtHyf5kp1UWwgLGyzdPX78JBpNUwJQKqXr-HF0R0/edit?usp=sharing)