moxie/multi-site-shared

Multi-site & shared APIs

Site prefixes

Prefix Brand Notes
fn Fox News Largest route surface (mobile, CMS, RSS)
fb Fox Business Business mobile + content
fw Fox Weather Heavy mobile.spark.tab usage
ok Outkick
fs Fox Sports

First URL segment selects identity; remaining path matches routes for that site (or shared rules where configured).

Shared routes (src/settings/routes/shared.js)

  • Map to src/apis/shared/... handlers.
  • Use for Spark content, Brightcove, Delta, search, liveblogs, sitemap, swagger, and other cross-brand capabilities.
  • Keeps one implementation instead of duplicating per foxnews, foxbusiness, etc., when behavior is truly identical.

When to fork per site

  • Different partner contracts (RSS field requirements).
  • Different upstream URLs or auth per brand.
  • Product-specific orchestration (e.g. Fox News mobile home vs Fox Weather Spark layout).

Fork into src/apis/{site}/ and adjust only the differing layers — still reuse shared helpers where possible.

Route + handler alignment

  • Shared route: ensure apis/shared/... path matches group + route key conventions.
  • Site route: ensure apis/{site}/... mirrors the same pattern.

Testing matrix

For shared endpoints, smoke test at least two site prefixes if both expose the same path pattern:

/fn/articles/123
/fb/articles/123

Use ?debugga=setup:identity to confirm site resolution.