Overview:
The Cloud Resume Challenge is an industry-recognized project that bridges the gap between cloud certification and real-world cloud engineering. Rather than demonstrating knowledge through a multiple-choice exam, it demands a working, production-grade cloud application — architected, debugged, and deployed entirely by the builder.
This project is the foundation of kardigitaltechnologies.com — a fully custom resume site that doubles as a live demonstration of cloud architecture skills.
What I Built:
A cloud-native resume site with a serverless visitor counter, automated deployment pipeline, custom domain, and production security configuration — built entirely with Azure services and deployed via GitHub Actions.
Frontend: A hand-coded HTML/CSS/JavaScript resume site with a Harry Potter theme, hosted on Azure Static Web Apps and delivered globally through Azure CDN: no templates, no frameworks — every element written from scratch.
Backend: A serverless Azure Function (Node.js) that fires on every page visit, increments a counter stored in Azure Table Storage, and returns the updated count to the frontend. The function uses the `@azure/data-tables` SDK for persistent NoSQL storage with no server management required.
CI/CD Pipeline: A GitHub Actions workflow that automatically deploys both the frontend and the Azure Function on every push to the main branch, with a post-deploy verification step that confirms the visitor counter endpoint is live and returns a 200 response.
Security: HTTP security headers configured at the CDN level via `staticwebapp.config.json`, including HSTS, X-Frame-Options, X-Content-Type-Options, and XSS Protection.
Challenges & Solutions:
Real cloud projects don't go smoothly — and this one was no exception.
The visitor counter initially returned a 500 Internal Server Error. Tracing the issue through Azure Function logs revealed the `@azure/data-tables` npm package had not been installed in the cloud runtime environment. After installing the dependency and redeploying, a second bug surfaced: a JavaScript `getElementById` case-sensitivity error (`getElementByID` vs `getElementById`) was silently preventing the counter from updating the DOM.
The CI/CD pipeline introduced its own challenge. Azure's Oryx build engine detected a `package.json` at the repository root — intended for the Azure Function — and attempted to run a Node.js build on the entire project, then failed when it couldn't find a compiled output folder. The fix was removing the `package.json` from the root and scoping it correctly to the `api/GetVisitorCount/` directory, allowing Oryx to recognize the frontend as a plain static site requiring no build step.
DNS configuration for the custom domain required adding a TXT verification record and a CNAME through Squarespace (formerly Google Domains), then validating ownership in the Azure Portal before SSL was provisioned automatically.
Outcome:
- Live production site at kardigitaltechnologies.com
- Fully automated deployment — zero manual steps to ship updates
- Serverless backend with persistent visitor tracking
- End-to-end cloud architecture: CDN → Static Hosting → Function → NoSQL Storage
- Source code publicly available at github.com/deehump7/Cloud-Resume