This weather app was inspired by the Cloud Resume Challenge. Although instead of implementing a personal website or resume, I created a simple weather app. My web app still achieves the goal of the cloud challenge by making use of many of Amazon's AWS services.
The static site is hosted in an AWS S3 Bucket and uses AWS CloudFront as a CDN and to serve content over HTTPS.
The frontend code is stored in a GitHub repository and uses a GitHub Actions pipeline to automate continuous deployment. The frontend pipeline updates the S3 Bucket with the latest files and invalidates the CloudFront cache.
The database, lambda function and REST API are all defined in an AWS Serverless Application Model (SAM) template file. This allowed me to modify and update my backend resources using an Infrastructure as Code approach.
All of the backend code is stored in a GitHub repository and has its own GitHub Actions pipeline. The backend pipeline first runs some unit tests against the lambda function using pytest to catch bugs. The pipeline then uses the AWS SAM CLI to build and deploy the AWS SAM template.