Provider-Agnostic Plugin Architecture

Provider-Agnostic Plugin Architecture

The Lesson

When a system needs to support multiple "providers" (vendors, brands, data sources) that share the same behavior but differ in branding and content, the architecture should make adding a new provider a data-only operation with minimal code changes. The code that distinguishes providers should be concentrated in one place, not scattered across the codebase.

Context

A certification quiz site started with a single provider (Azure) and grew to 10 providers (Azure, AWS, GCP, Anthropic, CompTIA, ISC2, GitHub, Databricks, NVIDIA, Cisco) over several months. Each provider has its own landing page, exam data files, and brand colors, but shares the same quiz engine, data loader, progress tracker, and results page.

How It Evolved

Key Insights

Applicability

This pattern works for any system where multiple "brands" or "vendors" share the same behavior but differ in branding and content: multi-tenant SaaS dashboards, multi-publisher content platforms, multi-vendor comparison tools. It breaks down when providers need fundamentally different behavior (different question types, different scoring rules, different UI layouts) — at that point you need a strategy pattern or plugin interface, not just prefix-based routing.

Related Lessons