This site is made entirely on AWS
Using many services like CloudFront, S3, and Route 53.
This is an ever-evolving site—as you can see at the top of the nav, this is version 3. The site also uses external services like GitHub and VS Code.
My GitHub Repo
To start with, I coded this site from scratch, learning HTML, CSS, and JavaScript. The first version of this site was actually made before the likes of ChatGPT were even commercially available, so all the code was written by hand. In the spirit of keeping this page 100% AI free, I have continued to only code this by hand. Even garnering help from a friend Loveleen on the JS side of things.
- 1) in the S3 bucket for the site, pushing out to CloudFront;
- 2) on my local device;
- 3) on GitHub so that I can access, edit, and save this from anywhere in the world.
This site is currently stored in three places:
I plan on using GitHub Actions to automatically upload this to the S3 bucket. I currently have a VS Code extension installed so I can upload from VS Code (AWS Toolkit) to S3.
To avoid large charges with S3, I've used a cache to cache the static content. CloudFront is the service used—it creates an endpoint that can be picked up by a route in Route 53. The cost of CloudFront is very little; in fact, it has an always-free Free Tier.
Using Route 53, I have attached my domain, buying it through AWS and enabling transfer lock and auto-renew. This is where a majority of my costs actually come from. I actually only really pay for the domain ($9/year) and the hosted zone containing the routes ($0.50/month), totaling $1.26 (including $0.01 of S3 storage), making this the cheapest way to display a static site. I have added some dynamic features using Lambda, DynamoDB, and API Gateway.
Finally, I have a quest for a hidden login page. If you can crack the cryptography and exploit some HTML, you can find a login page. It takes the supplied credentials and parses them to Lambda via the API. This polls the DynamoDB table and sends back an OK or error response. This will either redirect to a new page or throw up an error response.