🎨 Guided Platform Redesign — UX & Architecture¶
Started: 24 April 2026
Status: ✅ Complete — all page types redesigned and live
Completed: 24 April 2026 (evening session)
Why this redesign exists¶
Guided grew from a Microsoft-only platform (21 certs, all with study guides) to a multi-vendor platform (126 certs, 13 vendors) over ~2 weeks in April 2026. The UX didn't keep up:
- Homepage title said "Interactive Microsoft Certification Prep"
- Explore page had 5 Microsoft-only category filters
categoryfield was broken — AWS Solutions Architect was categorised as "ai"- 92 non-Microsoft certs had no landing page at all
- PathLayout assumed every cert had a study guide
- Pricing section showed 3 tiers even for practice-only certs
This redesign fixes the information architecture, makes the platform genuinely multi-vendor, and creates a design system that scales to 200+ certs without manual page edits.
Information Architecture Decision¶
Options evaluated¶
| Option | Description | Verdict |
|---|---|---|
| A — Flat | Homepage → Cert landing → Study/Practice | ❌ 126 cards overwhelming, no vendor SEO |
| B — Vendor hierarchy | Homepage → Vendor page → Cert landing → Study/Practice | ❌ Extra click, sparse vendor pages |
| C — Hybrid ⭐ | Homepage (search + filters) → Cert landing → Study/Practice, plus vendor pages as SEO side-doors | ✅ Approved |
Option C detail¶
Main flow (no extra clicks):
Homepage → Cert landing → Study / Practice
Side-door flow (SEO entry):
Google "aws practice exams" → /guided/aws/ → Cert landing → Practice
Filter axes on homepage:
Vendor (13) × Topic (8) × Level (4) × Content tier (2)
Vendor pages are auto-generated from TOML data — zero maintenance.
Data Architecture¶
Category taxonomy (cross-vendor)¶
The old category field mixed vendor identifiers with technology domains. The new taxonomy separates them:
| Field | Purpose | Values |
|---|---|---|
vendor (required) |
Who issues the cert | microsoft, aws, cisco, comptia, gcp, isc2, isaca, cncf, hashicorp, juniper, paloalto, eccouncil, fortinet |
category (required) |
Technology domain | cloud, security, networking, ai, data, devops, admin, business |
| Content tier (derived) | Full course vs practice only | modules > 0 ? 'full' : 'practice' — not stored |
Category mapping reference¶
| Category | Label | Example certs |
|---|---|---|
cloud |
Cloud | AZ-900, AZ-104, AWS SAA, GCP Architect, CompTIA Cloud+ |
security |
Security | SC-900, CompTIA Sec+, CISSP, CEH, CKS |
networking |
Networking | CCNA, JNCIA, Network+, Fortinet NSE, Palo Alto NetSec |
ai |
AI & Copilot | AB-900, AI-901, AWS MLA, GCP ML Engineer, CompTIA DataAI |
data |
Data & Analytics | DP-600, AWS DBS, GCP Data Engineer, CompTIA Data+ |
devops |
DevOps | AZ-400, AWS DevOps, Terraform, CKA, Cisco DevNet |
admin |
IT Admin | MS-102, MD-102, MS-700, GCP Workspace Admin, CompTIA A+ |
business |
Business Apps | PL-900, PL-400, MB-800, CompTIA Project+ |
Content tiers¶
| Tier | What's included | Count | Vendors |
|---|---|---|---|
| Full course | Study guide (MDX modules) + practice exam (JSON) | 35 | Microsoft only |
| Practice only | Practice exam (JSON) only | 89 | AWS, Cisco, CompTIA, GCP, ISC², ISACA, CNCF, HashiCorp, Juniper, Palo Alto, EC-Council, Fortinet |
| Placeholder | TOML registered, no content | 2 | AI-200 (coming soon), SC-500 (coming soon) |
Zod schema (content.config.ts)¶
const certs = defineCollection({
schema: z.object({
code: z.string(),
name: z.string(),
vendor: z.enum([/* 13 vendors */]), // REQUIRED (was optional)
category: z.enum([/* 8 categories */]), // NEW taxonomy
level: z.enum([/* 12 levels */]),
status: z.enum(['live', 'coming-soon', 'planned', 'retired']),
modules: z.number().int().nonnegative(),
questions: z.number().int().nonnegative(),
// ... rest unchanged
}),
});
Five Page Types (Exemplar Designs)¶
1. Homepage — Multi-vendor front door¶
Changes from current:
- Title: ~~"Interactive Microsoft Certification Prep"~~ → "Cert prep that's actually interactive"
- Stats: "126 certs · 13 vendors · Free to start"
- New: Search bar in hero (client-side fuzzy, Cmd-K)
- New: Vendor ribbon — scrollable pills linking to vendor pages
- New: 4 "Not sure?" recommender cards (cross-vendor career paths)
- New: Multi-axis filter bar: vendor + topic + level + content tier
- Card redesign: Vendor badge, content tier indicator, level pill
Key components:
SearchBar.tsx— React island, fuzzy search across certsVendorRibbon.astro— Scrollable vendor pills with countsCertCard.astro— Redesigned card with vendor + tier badgesFilterBar.astro/FilterBar.tsx— Multi-axis filtering with URL paramsJourneyCard.astro— Career path recommender cards
2. Vendor Pages — SEO side-doors¶
URL: /guided/{vendor}/ (e.g., /guided/microsoft/, /guided/aws/)
Template: Single [vendor]/index.astro auto-generating 13 pages from:
getCollection('certs').filter(vendor === slug)- Vendor metadata from
src/data/vendors.toml
Layout:
- Vendor hero (name, description, cert count, official link)
- Certs grouped by level (Fundamentals → Associate → Expert)
- "Explore other vendors" cross-links at bottom
Metadata file: src/data/vendors.toml — 13 entries with slug, name, description, accent, official URL.
3. Cert Landing Page (PathLayout v2)¶
The big change: PathLayout becomes content-tier-aware.
| Section | Full Course (AZ-104) | Practice Only (Sec+) |
|---|---|---|
| Breadcrumbs | ✅ Guided > Microsoft > AZ-104 | ✅ Guided > CompTIA > Security+ |
| Hero | Study Guide + Practice cards | Single Practice card |
| What You'll Learn | Standardised 4 highlights | Hidden |
| Curriculum | Domain accordions + module lists | Hidden |
| Practice Lab | Full section | Main content |
| Pricing | 3 tiers (Practice / Guide / Bundle) | 1 centered tier |
| About Exam | Vendor-agnostic official link | Same |
| FAQ | From [[faq]] in TOML |
Same |
| Bottom CTA | "Ready to study?" | "Ready to practice?" |
Dynamic route: Single [cert]/index.astro replaces 34 static pages.
New TOML fields (added per cert for dynamic landing pages):
# Exam details (required for landing page)
[exam]
duration = "120 minutes"
passing_score = "700/1000"
question_types = "Multiple choice, drag-and-drop"
cost = "$165 USD"
official_link = "https://..."
# Domain details
[[domain]]
number = 1
name = "Manage Azure Identities and Governance"
weight = "20-25%"
description = "Microsoft Entra ID, RBAC..."
is_free = true
# FAQs
[[faq]]
q = "Is AZ-104 hard?"
a = "It's the hardest associate-level Azure cert..."
Derived at build time (not stored in TOML):
- Module list per domain → content collection query
- Question count per domain → JSON file scan
- Difficulty breakdown → question JSON parsing
- Sample question → first free domain question
4. Study Module (refinements only)¶
- Breadcrumbs: Guided > Vendor > Cert > Domain > Module
- "🧪 Test yourself" CTA at end → links to
/practice/?domain=N - Practice link in sidebar nav
- Domain progress ring
5. Practice Quiz (refinements only)¶
- URL param
?domain=Npre-filter (deep links from modules) - Breadcrumbs
- Question bookmarking (localStorage)
- Enhanced results: domain breakdown + "Retest weak areas"
Deploy Plan (7 deploys, reviewed individually)¶
| Deploy | What | Visual Change | Status |
|---|---|---|---|
| 1 | TOML category fix + Zod schema + explore labels | Explore filters update | ✅ Done |
| 2 | vendors.toml metadata file |
None (data only) | ✅ Done |
| 3 | Homepage redesign | Major — new hero, search, filters, cards | ✅ Done |
| 4 | Vendor pages ([vendor]/index.astro) |
13 new pages | ✅ Done |
| 5 | PathLayout v2 + dynamic [cert]/index.astro |
Major — 92 new landing pages | ✅ Done |
| 6 | Module page refinements | Free tier standardised, video removed, test CTA | ✅ Done |
| 7 | Practice page refinements | Readability, bookmarks, retest, URL params | ✅ Done |
Each deploy = git push → Cloudflare auto-builds → verify on live → review on phone → proceed.
"Add a new cert" workflow (post-redesign)¶
Practice-only cert (any vendor)¶
- Create
src/content/certs/{code}.tomlwith all fields including[exam],[[domain]],[[faq]] - Drop question JSONs in
src/data/questions/{code}-domain-N.json - Done. Homepage, explore, vendor page, cert landing, and practice page all auto-update.
Full-course cert (with study guide)¶
- All of the above
- Create MDX modules in
src/content/{cert}/domain-N/*.mdx - Done. Study module pages auto-generate from content collection.
Zero page edits in either case.
Key Files Reference¶
| File | Purpose |
|---|---|
src/content/certs/*.toml |
126 cert registry files (single source of truth) |
src/content.config.ts |
Zod schemas for certs + modules collections |
src/data/vendors.toml |
Vendor metadata (name, accent, official URL) — NEW |
src/pages/index.astro |
Homepage |
src/pages/explore/index.astro |
Explore/catalog page |
src/pages/[cert]/index.astro |
Dynamic cert landing (replaces 34 static pages) — NEW |
src/pages/[vendor]/index.astro |
Dynamic vendor page (13 pages) — NEW |
src/pages/[cert]/practice.astro |
Dynamic practice route |
src/pages/[...slug].astro |
Dynamic study module route (MDX) |
src/layouts/PathLayout.astro |
Cert landing page template (enhanced for content tiers) |
src/layouts/ModuleLayout.astro |
Study module template |
src/layouts/BaseLayout.astro |
Site shell |
src/styles/global.css |
Design tokens |
Design Principles¶
- Dark mode default. Light mode equally polished.
- Mobile-first. Most study happens on phones.
- Astro islands. Don't add client-side frameworks for static content.
- WCAG AA. Focus rings, screen reader, prefers-reduced-motion.
- Base path. Site runs at
/guided/— useimport.meta.env.BASE_URL. - Content is sacred. Never edit MDX or question JSON files during redesign.
- PathLayout is the template. Enhance it, don't replace it.
- One deploy per change. Small pushes, reviewed on phone.
- Data-driven everything. New cert = drop TOML + content files. Zero page edits.
Business Model (locked — do not change)¶
| Item | Detail |
|---|---|
| Payments | Lemon Squeezy (Merchant of Record) |
| Auth | Licence keys → Cloudflare Worker → JWT in localStorage. No accounts. |
| Pricing | Fundamentals $29 / Associate $49 / Expert $69 / All-Access $149/yr |
| Launch pricing | $19 / $29 / $39 / $79 |
| Free tier | 1 full domain of study guide + 20 practice questions. No account needed. |
| Access | 1 year + updates. 50% off renewal. |
Session Log¶
Session 1 — 24 April 2026¶
What was done:
- Full site audit (supplementary to Phase 1 audit from 21 April)
- IA decision: Option C (Hybrid) approved
- Designed all 5 exemplar page types
- All 7 deploys shipped:
- TOML category taxonomy (126 files fixed) + Zod schema
- vendors.toml metadata (13 vendors)
- Homepage redesign (search, filters, vendor ribbon, card redesign)
- Vendor pages (13 auto-generated SEO pages)
- Cert landing pages (92 new SEO pages via dynamic [slug] route)
- Module refinements (free tier standardised: Domain 1 + 5 lessons, video placeholders removed, test-yourself CTA)
- Practice quiz UX overhaul (readability, bookmarks, retest, URL params)
- Post-deploy QA pass with Playwright (8 visual test flows):
- Fixed hardcoded "200 questions" text
- Fixed remaining "Microsoft Learn" reference
- Unified scenario + question into single readable block
- Added question navigation grid (like MeasureUp/Whizlabs/Kaplan)
- Added multi-select "Select ALL that apply" indicator
- Added streak counter (🔥 3 streak)
- Added "Retest Wrong Questions" button (separate from weak areas)
- Fixed score display ("0 of 10" instead of "0/0 correct")
- Fixed header overflow (capped featured certs at 3)
- Fixed mobile button layout (flex-col on mobile, flex-row on desktop)
- Added scroll-mt-20 to prevent sticky header overlap
- Timer pacing feedback in results
- Widened quiz container (max-w-3xl → max-w-4xl)
- Created this documentation + learn portal docs
- Playwright + Chromium installed for visual testing
Total: 1,210 pages (was 1,105 at start — +105 new pages)
Key decisions:
- Category taxonomy: 8 cross-vendor categories
- Vendor field: Required enum with 13 values
- Content tier: Derived from
modules > 0, not stored - Vendor pages: Auto-generated, not in main nav flow
- PathLayout: Content-tier-aware (conditional sections)
- Free tier: Domain 1 + first 5 modules only (override at route level)
- Practice quiz: Nav grid + bookmarks + retest = competitive with MeasureUp/Whizlabs
What's still missing in practice quiz (Round 2):
- Historical progress tracking (attempt history, improvement trends over time)
- Confidence rating per answer (Kaplan-style: sure/unsure/guessing)
- Answer change tracking (did user change their answer? did it help?)
- Matching question review rendering (currently basic)
- Bookmarked questions filter mode on setup screen ("Practice only bookmarked")
- Community discussion links per question (GitHub Discussions)
- Floating accessibility widget investigation (overlapping content in screenshots)
- Per-domain score history ("You improved D2 from 45% to 78%")
- Custom quiz builder (pick specific questions by ID/topic)
- Exam readiness score ("Based on 3 attempts, you're 72% ready")
Pick up here:
- Practice quiz Round 2 — use starter prompt below
- Also pending: design/layout tweaking for homepage, vendor pages, cert landing pages
- Also pending: enrich TOMLs with [exam], [[domain]], [[faq]] data for richer cert landing pages
- Also pending: migrate 34 static Microsoft landing pages to dynamic route