Project Overview

This was more than just a resume site. It was a full-stack, cloud-native flex with a little extra sauce.

  • Frontend: Static HTML/CSS resume hosted on Azure Storage.
  • Backend: Python Azure Function + CosmosDB Table API to track visitors.
  • CI/CD: GitHub Actions automating backend and frontend deployments.
  • CDN & DNS: Started with Azure Front Door. Ended up with Cloudflare.
  • Bonus: A goofy secret “THE BUTTON” feature with music and animations… because why not?

Technical Breakdown

Infrastructure as Code:

  • Provisioned Azure resources using ARM templates:
    • Storage Account (with static website hosting)
    • CosmosDB (Table API)
    • Function App
    • Front Door (RIP, we’ll get to that…)

Frontend Deployment:

  • HTML, CSS, and JS dropped into the $web container.
  • CI/CD with GitHub Actions for hands-free deployment.

Backend Deployment:

  • Python Azure Function connected to CosmosDB to count visitors.
  • Separate GitHub Actions workflow deployed the backend.

DNS + HTTPS:

  • Originally routed everything through Azure Front Door to handle HTTPS and custom domains.
  • Front Door was linked to the static site origin and DNS was handled via Cloudflare.

Visitor Counter:

  • JavaScript calls the Azure Function and updates the counter live on page load.

Obstacles & Fixes

CI/CD Confusion:

At first, I thought one GitHub Actions workflow would cover everything. Nope. Needed two—one for the frontend and one for the backend.

404 Error Woes:

Azure Static Sites don’t show anything unless you enable static website hosting and upload to the $web container.

Permission Denied (Literally):

Ran into Azure permissions issues. Had to scope the service principal carefully just to avoid total chaos.

Azure Front Door Shenanigans:

Routing wasn’t working because I mistakenly used the storage account root instead of the static website endpoint. Fixed that.

DNS Propagation Patience:

DNS changes took forever to show. Sometimes you just have to wait it out and keep checking nslookup.


Bonus Features

  • 🎉 “THE BUTTON”: Click it and you get a flash of confetti, sound, and a ridiculous AI-generated jingle. Because a resume site doesn’t have to be boring.
  • 💼 Portfolio Button: Links to my professional portfolio (coming soon).
  • 🔥 Styling & Branding: Personalized everything with my Grey Key Studios brand in mind.

What I Learned

  • The power of CI/CD: Once it’s set up, pushing changes is butter-smooth.
  • Azure’s ecosystem can be a tangled mess, but it’s powerful once you get it.
  • Debugging cloud infra feels like a boss fight.
  • It’s okay to add fun—tech projects are still personal projects.

Addendum 1: “Turn That Shit Off, I’m Poor”

Real talk: After getting everything working, I checked my Azure bill and saw Front Door was eating up my (nonexistent) cloud budget. As cool as global CDN and enterprise-grade routing are, I’m unemployed and not about to pay $7+ a month for a resume site.

So I turned that shit off. Here’s what I did:

  • 💸 Deleted Azure Front Door
  • 💡 Pointed my custom domain to the Azure static website endpoint using Cloudflare
  • 🛡️ Free HTTPS, free CDN, and much less drama
  • 🔔 Set a $1/month budget alert in Azure because no surprises please

The site still works, it’s still secure, and now it costs literal pennies a month. If you’re doing the Cloud Resume Challenge and you’re broke like me—don’t be afraid to learn, then pivot.


Addendum 2: “How I Got My Custom Domain + HTTPS Working (The Cloudflare Worker Saga)”

After wrestling with Azure Front Door, DNS records, and Cloudflare’s orange cloud, I hit the classic wall: Azure Storage static websites don’t natively support HTTPS for custom domains—unless you pay for extra services.

Enter the Cloudflare Worker.

I set up a Worker to proxy all requests from my custom domain to my Azure static website endpoint. Here’s how:

  • 🧪 Created a dummy A record pointing to 192.0.2.1 and marked it Proxied
  • 🛠️ Wrote a simple Worker that fetches the content from Azure and returns it from resume.greykeystudios.com
  • 🎉 Boom. Now I get HTTPS + custom domain for free (or close to it)

If you’re stuck with the same Azure + Cloudflare + custom domain headache, try a Worker. It’s a little hacky, but it works beautifully.

#BrokeButCloudy #CloudResumeChallenge #CloudflareWorker


More blog posts coming soon—including:

  • A deep dive into “THE BUTTON” and the goofy tech behind it
  • My birthday post 🎂
  • Security projects and portfolio launch

Stay tuned at blog.greykeystudios.com