A week ago, I was looking for courses that were free or discounted due to the COVID-19. I thought that maybe others were doing the same, so I decided to compile resources and publish them online.
I started compiling the courses using Google Sheets and was planning on sharing the sheet after I had enough resources. However, something was bothering me. Opening sheets on a mobile suck and most people use their phones for browsing the internet. I thought I could do better.
The issue is that I'm a Data Scientist, not a Web Developer. I hardly have any experience building and deploying web pages on my own. So I decided to build a simple static site that met the following requirements:
- Look good on mobiles (or at least better than a Google Sheet)
- Should allow me to easily add or remove resources
- Use Python as much as possible (and as little as possible of HTML/CSS/JS)
- Should take me only a few hours to develop and launch
- Maintenance should be very very close to zero 😛
So here's what I did to solve these issues:
- Used Bootstrap to make it responsive and look good without a lot of effort from my side
- Used Google Sheets as a basic Content Management System. Got content into the site programmatically using the API
- Used Jinja2 as a templating engine
- Hosted the site on AWS S3 + Cloudfront (for SSL certificate). Bought the domain using Route 53.
- So far, I've only invested ~15€ on the site. I don't foresee that I will need to spend more than a few cents for its maintenance, given what AWS offers in its Free Tier.
Finally, after I had the first version, I published it on reddit and LinkedIn. It got some traction and was shared in different sites. During the first two days, it got over 3k visitors. The number of visitors has been steadily decreasing since then, totaling around 12.5k right now.
Building the site was an entertaining learning exercise for me and, based on how people reacted, it was useful for others. I was not really expecting to have more than a few visitors, so it was a positive surprise seeing how many people were interested.
I wanted to share the process and code in case others may find them useful.
Finally, here's the Github repository: https://github.com/dylanjcastillo/stayhomeandlearn.org
Also, here's the site: https://stayhomeandlearn.org
Top comments (2)
Great initiative!
Where did you host Jinja?
Did you interact with Google sheets API from the backend in python to fill the Jinja template before rendering or in the front-end using JavaScript?
Also, how long did it take you to get everything up and running?
Thanks Renato!
As it is only a static page, I don't really host Jinja anywhere. I have a local CLI tool that gets the data using the Google Sheets API, builds the new site, and deploys to AWS (upload data to S3, clear Cloudfront cache).
At some point, I was thinking on having a Lambda function that would check for changes in the sheet and automatically build and deploy the site if that was the case. However, I did not feel it was worth the time, in the end.
To get the first version, I would say between 2-4 hours I think.