Standalone Sites Need Versioned Providers, Not a Shared Core

articlepatternarchitecturetypescriptgremlincourse-buildercontent-providerpackage-boundariesstandalone-sites

Maps Joel’s Gremlin site strategy to joelclaw’s ADR-0144 package-boundary pattern: standalone apps consuming versioned provider contracts.

The interesting bit isn’t just CodeTV. It’s the pressure CodeTV, Kent C. Dodds-style education sites, Code with Antonio, and whatever comes next put on Gremlin: every site wants to be its own thing, but nobody wants to rebuild the same content, database, commerce, email, and design plumbing from scratch forever.

Joel’s Slack note names the shape: standalone repos that depend on specific versions of shared resources. Not “one giant app with themes.” More like content providers, database adapters, commerce providers, marketing email providers, transactional email providers, and a shadcn registry for the design system. That is a cleaner seam than pretending everything belongs in core.

The current Gremlin packages already point this direction: @badass-courses/gremlin-sdk defines a ContentProvider<TFields> contract, @badass-courses/content-provider-course-builder adapts Course Builder content, and the CodeTV app consumes that through @gremlin/codetv. That’s basically ADR-0144’s package-boundary move applied to education sites: keep the app thin, move the reusable weird shit behind contracts, and version the contract instead of smearing coupling across every site.

Key Ideas

  • CodeTV is useful as a forcing function for Gremlin, because real sites reveal which boundaries are fake and which ones pay rent.
  • Standalone repos let CodeTV, Code with Antonio, and future Badass Courses sites own their app surface while depending on versioned shared packages.
  • core is overloaded; named providers like content, database, commerce, email, and shadcn registry describe the actual seam better.
  • The provider pattern from Course Builder and Gremlin maps cleanly to joelclaw’s hexagonal package boundary habit.
  • A provider contract gives agents a better editing target: change the adapter, prove the contract, leave the site repo the fuck alone unless the site actually needs to change.