π 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:
- Exam Quick Facts β code, level, cost, languages
- Study Resources β MS Learn paths, practice assessments
- Skills at a Glance β high-level domain summary
- Who is this exam for? β target audience
- Skills Measured β detailed skill breakdown with weights
- What to Study Next β recommended follow-up exams
- 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