Up until now, we have spent our time setting up the API project to provide a confident testing pipeline (with types) and Amazon Cognito authentication. We will now move on to implementing the first real API endpoint, that being the Bootstrap response. Along the way we will configure Serverless Offline, allowing us to locally interact with the API, without having to provision any online resources.
In a recent Software Engineering Daily podcast Henry Zhu discussed the Babel project, and shed some light into how the transpiler works under-the-hood. He touched upon how Plugins can be created to alter the resulting compiled code. I was very interested in experimenting with this capability. In this post I wish to highlight the process in which Babel transforms your code, developing several interesting plugins along the way.
We have now settled on how our application will perform user authentication. I now wish to take a step back and help improve upon our code confidence, by-way of adding the static type checker Flow. In this article I will document the process of configuring Flow with Babel and Webpack, expanding upon our previous example by adding sufficient typing.
Now that we have setup the Serverless Framework, we can go about investigating how Authentication and Authorisation will be handled within the application. For this we will be using Amazon Cognito, a fully-managed web service which handles the user sign-up, sign-in and management processes.
Now that we are aware of what needs to be done, we can go about designing the RESTful API that will be used to process and persist those vital mince pies.
Since moving our infrastructure over to the AWS stack I have keen to explore how we can take advantage of the large number of services at our disposal, along with the Serverless methodology. In this blog-series I wish to document my experience building a complete Serverless application which harnesses as many of the AWS offerings as possible. We will explore building both a RESTful API and a React Client, all hosted without any Servers to maintain!