The Cloud Resume Challenge - DigitalOcean

Challenge nameCloud(s)Challenge goalContributor
The Cloud Resume ChallengeDigitalOcean“Create a portfolio site that shows off your cloud and DevOps skills.”amycodes

View or contribute to this challenge on GitHub!

1. Source Control

You do not want to be updating either your back-end API or your front-end website by making calls from your laptop. You want them to update automatically whenever you make a change to the code. (This is called continuous integration and deployment, or CI/CD.) Create a GitHub repository for your backend code.

2. HTML

Your resume needs to be written in HTML. Not a Word doc, not a PDF. Here is an example of what I mean.

3. CSS

Your resume needs to be styled with CSS. No worries if you’re not a designer – neither am I. It doesn’t have to be fancy. But we need to see something other than raw HTML when we open the webpage.

4. Static Website

Your HTML resume should be deployed online using DigitalOcean AppPlatform.

5. DNS

Point a custom DNS domain name to the AppPlatform Application, so your resume can be accessed at something like my-c00l-resume-website.com. You can use Custom Domains on DigitalOcean or any other DNS provider for this. A domain name usually costs about ten bucks to register.

6. Javascript

Your resume webpage should let people submit their e-mail address into a form for further communication. You will need to write a bit of HTML & Javascript to make this happen. Here is a helpful tutorial to get you started in the right direction.

7. Database

The contact form should be able to store the addresses in a database. We suggest you use MongoDB, a Managed NoSQL Database option on DigitalOcean. Here is a great tutorial on how to connect to MongoDB with Python.

8. API

Do not communicate directly with MongoDB from your Javascript code. Instead, you will need to create an API that accepts requests from your web app and communicates with the database. I suggest using AppPlatform and DigitalOcean Functions services for this. They will be free or close to free for what we are doing.

9. Python

You will need to write a bit of code in the DigitalOcean Function; you could use more Javascript, but it would be better for our purposes to explore Python – a common language used in back-end programs and scripts. Here is a good, free Python tutorial.

10. Tests

You should also include some tests for your Python code. Here are some resources on writing good Python tests.

11. Infrastructure as Code

You should not be configuring your API resources – the MongoDB table, the AppPlatform Static Site, the Function – manually, by clicking around in the DigitalOcean console. Instead, define them in an AppPlatform App Specification template and deploy them using the DigitalOcean Command Line Tool. This is called “infrastructure as code” or IaC. It saves you time in the long run.

12. CI/CD

Set up GitHub Actions such that when you push an update to your App Specification template or Python code, your Python tests get run. If the tests pass, the AppPlatform application should get packaged and deployed to DigitalOcean.

13. Blog post

Finally, in the text of your resume, you should link a short blog post describing some things you learned while working on this project. Dev.to or Hashnode are great places to publish if you don’t have your own blog.

Congratulations! Through the challenge, you have managed to touch many different cloud services. There are still places where your resume project could be improved, including adding analytics, automation, and external integrations. Also consider building the function with different languages such as NodeJS, PHP, or Go or using different database types. The more services you touch, the better you understand the pros and cons of each one. Happy programming!