---
# System prepended metadata

title: My Smile Buddy Systems architecture

---

# My Smile Buddy Systems architecture



## General anaysis for My Smile buddy project

MySmileBuddy is a web application that helps families and children to have a healthy dental care habit and have enhanced caries counseling from health care workers and dentists.

We will implement our application for user testing for our initial stage and scale up step by step. Therefore, we assume that our initial traffic would be low with the potential of growing. Specifically, we might be looking at ~100 at first, growing to thousands of customers as in a year.

## Device compatibility
As our users will use our app in website, tablet and mobile as well, we will make application all device compatible. 

## Data structure

![](https://i.imgur.com/bSOuhNV.jpg)



## Technical stack


![](https://i.imgur.com/O6dP0Td.png)

You can change the design here->Link: https://whimsical.com/js-6gWnzssiTZZuF4pEGE7mGd


### AWS S3
Amazon S3 or Amazon Simple Storage Service is a service offered by Amazon Web Services that provides object storage through a web service interface. In AWS S3, we will host our static resources such as HTML file, css, images and educational videos.


### Route53
Route 53 is a scalable cloud Domain Name System (DNS) web service. It is reliable and cost effective way to route end users to the internet applications, and work well with other services such as Cloud Front and AWS Certification Managers.


### Front End
- HTML 
- CSS
- JS

### Reactjs with Typescript
Typescript enables faster dev cycles and improves overall quality of the code base. Typescript is a powerful type system, including generics & JS features for large size project whereas JavaScript is an ideal option for small size
Apollo
https://www.iqt.org/from-redux-to-apollo-cache-what-to-consider-when-making-the-switch/


### Testing library
Jest
Jest is typically what you might refer to as Unit Testing and Integration Testing libraries, whereas Cypress is typically used for End-To-End (e2e) testing. It has nice approval ratings, it’s very fast, clear and has many features in case you need to cover complex scenarios. If you want to “just get started”, go with Jest.

### Runtime environment
Node.js

### Express 
Although we use AWS-lambda-apollo which is already built in Express under the hood, Express has a great middleare we can implement in our code. Hence, we use Express in our backend for flexible middleware usage.

### AWS RDS MYSQL
Our app would read and query the data more than write or edit the data. As it less transaction of data, Aurora serverless is a great choice for us.

### Sendgrid or Twillo
https://steelkiwi.com/blog/twilio-vs-nexmo/
Among many of email and sms services, we dSendgrid or Twillio is more aPopular, has great customer service and community. 

### Docker(If possible)
Migration: There is a possibility that we want to migrate our app to another account/platform in the future. We are planning to implement docker image in the EC2 instance.

### Potential implemenation

#### Github action: Auto deployment for maintainability
Github action is a tool provided by Github, it made CI/CD process easier with users who uses github as a collaboration tool. 













