Amazon AWS
During the early stages of our project we agreed that we want to run the application as cost-efficient, scalable and performant as possible. We therefore decided to build the system on a serverless architecture using Amazon AWS Lambda functions. The lambda functions only run when they are called through their individual endpoints and provide the latest prediction data generated by the machine learning model. At the end of each month we only have to pay for the computing powert that way required to run these functions. This results in on existent fix costs for running our application and allows to easily extend, scale and maintain our application in the future. The prediction data, as well as the entire frontend are stored on AWS S3 Buckets where it is only required to pay for the exact amount of bytes our files have. For user management we are using Amazon AWS Cognito. Here the final costs depend on the amount of users our system has. The AWS environment enables us to add more resources like databases or media storage as required and when required. It also makes all occuring costs variable and therefore completely avoids fix costs that otherwise would have come up using a traditional server based architecture.
Expressjs
For our backend API that runs on AWS Lambda we used Express to build the http endpoint for the lambda function.
React (Typescript) + Tailwind Css
Our frontend is built on React and Typescript which helped us to reduce bugs and runtime errors during development. Typescript also makes it easier for future developers working on the project to dive into and understand the code and how our components work. Using Tailwind Css and its utility first approach, we were able to build new components for our dashboard without having to spend too much time structuring our Css and thinking about methodlogies like BEM.