Skip to content

πŸ“œ Cert Study Guides (Cert Tracker)

Live at: aguidetocloud.com/cert-tracker/ Repo: susanthgit/cert-tracker (pipeline) Built: April 2026 Cost: $0/month (GitHub Actions Free + Azure SWA Free)


What It Does

A weekly-updated certification tracker covering 52 Microsoft exams across 7 categories β€” with study progress tracking, skill breakdowns, study plan generation, and automated change detection when Microsoft updates exam content.

Think of it like a personal exam prep dashboard β€” track your study progress, see what skills are tested, and get notified when exam content changes.


Architecture Overview

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚              GitHub Actions (weekly)                       β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                           β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚fetch_exams.pyβ”‚  β”‚diff_engine.pyβ”‚  β”‚generate_data.py β”‚ β”‚
β”‚  β”‚ MS Learn API β”‚  β”‚ change detectβ”‚  β”‚ index + RSS     β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                           β”‚                               β”‚
β”‚                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                   β”‚
β”‚                    β”‚generate_enhanced β”‚                   β”‚
β”‚                    β”‚  _pages.py       β”‚                   β”‚
β”‚                    β”‚ rich MD pages    β”‚                   β”‚
β”‚                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                   β”‚
β”‚                           β”‚                               β”‚
β”‚  Output: latest.json, exams/*.json, rss.xml,             β”‚
β”‚          changelog.json, content pages                    β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚    Copy data to main site β†’ hugo build β†’ swa deploy       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚
         β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚          aguidetocloud.com/cert-tracker/                   β”‚
β”‚                                                           β”‚
β”‚  List Page: search + filters + category chips + cards     β”‚
β”‚  Detail Page: study checklist + skill sections + planner  β”‚
β”‚                                                           β”‚
β”‚  52 exam pages with study resources + skills measured     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Current Exam Coverage

Category Exams
AI Various
Azure Various
Data Various
Dynamics 365 Various
Microsoft 365 Various
Power Platform Various
Security Various
Total 52 exams

Exam Statuses

Status Count
Active 30
Retiring 10
Beta 9
Retired 3

Pipeline Scripts

1. fetch_exams.py (~220 lines)

Feature Detail
Data source Microsoft Learn API (exam metadata)
Output site/current_state.json, site/previous_state.json

2. diff_engine.py (~208 lines)

Feature Detail
Change detection Compares current vs previous state
Tracks New exams, retired exams, content changes, status changes
Output site/changelog.json

3. generate_data.py (~233 lines)

Feature Detail
Index site/latest.json with exam_count, categories, statuses, change info
Per-exam detail site/exams/{code}.json
RSS feed site/rss.xml

4. generate_enhanced_pages.py (~384 lines)

Feature Detail
Rich markdown pages Auto-generates content for each exam
Sections generated Quick Facts, Study Resources, Skills at a Glance, Audience, Skills Measured, What to Study Next, Quick Links
Skip list SKIP_EXAMS array β€” skips manually enhanced pages to preserve hand-crafted content

GitHub Actions Workflow

File: .github/workflows/weekly-cert-tracker.yml (~108 lines)

Schedule: Weekly
Triggers: cron + manual dispatch

Steps:
1. Checkout
2. Setup Python
3. Fetch exam data
4. Run diff engine
5. Generate data files
6. Generate enhanced pages
7. Copy to aguidetocloud-revamp/static/data/cert-tracker/
8. Hugo build + swa deploy

Frontend Implementation

List Page β€” list.html (~64 lines)

Feature Detail
Data source Fetches /data/cert-tracker/latest.json
sessionStorage Caches for 30 minutes
Search Text search across exam titles and codes
Level filter Filter by certification level
Status filter Active / Retiring / Beta / Retired
Category chips Filter by category (AI, Azure, Data, etc.)
Stats Total exams, freshness indicator
RSS link Links to /data/cert-tracker/rss.xml
Cards Grouped by category with status badges

Detail Page β€” single.html (~355 lines)

Feature Detail
Breadcrumbs Back to cert tracker list
Status banner Active / Retiring / Beta with colour coding
Prep-time estimate Suggested study duration
Print button Printer-friendly view
Study progress checklist Checkbox per skill area β€” saved in localStorage
Study plan generator Creates a timeline based on exam date
Auto TOC Generated from page headings
Collapsible skill sections Expand/collapse per skill area
Related exams Loaded from /data/cert-tracker/exams/{code}.json

JavaScript β€” cert-tracker.js (~260 lines)

Feature Detail
sessionStorage cache 30-minute freshness
Category chip filtering Dynamic chips with counts
Search + level + status filters Combined filtering
Card rendering Grouped by category
Stats display Exam count, active/retiring/beta counts

CSS β€” cert-tracker.css (~854 lines)

Element Detail
Accent Green #10B981
CSS namespace .cert-* classes
Status badges Green (active), yellow (retiring), blue (beta), grey (retired)
Progress bar Study completion indicator
TOC Sticky sidebar on desktop
Checklist Custom checkbox styling with localStorage persistence
Print styles Clean print layout
Mobile Responsive cards, stacked layout

Content Pages

Front Matter

type: "cert-tracker"
layout: "single"
exam_code: "AZ-900"
exam_title: "Microsoft Azure Fundamentals"
exam_level: "Fundamentals"
exam_status: "active"
exam_category: "Azure"

Page Content (Auto-generated + Manual)

Each exam page includes:

  1. Exam Quick Facts β€” code, level, cost, languages
  2. Study Resources β€” MS Learn paths, practice assessments
  3. Skills at a Glance β€” high-level domain summary
  4. Who is this exam for? β€” target audience
  5. Skills Measured β€” detailed skill breakdown with weights
  6. What to Study Next β€” recommended follow-up exams
  7. Quick Links β€” exam page, practice test, schedule

Key Design Decisions

Decision Rationale
Weekly cadence Exam content doesn't change daily β€” weekly is sufficient
localStorage study progress Users can track their study without authentication
Skip list for manual pages Preserves hand-crafted content while auto-generating the rest
Per-exam JSON files Detail data loaded on-demand, not bundled in index
Change detection Alerts users when exam content is updated by Microsoft
Enhanced page generation Bootstraps rich content automatically, then allows manual refinement

Maintenance

Task How
Force a refresh Trigger weekly-cert-tracker.yml manually
Add manual exam content Edit content/cert-tracker/<slug>.md + add to SKIP_EXAMS in generate_enhanced_pages.py
Check for changes Review site/changelog.json or RSS feed

Last updated: 11 April 2026