Preview BuildThis is a preview build. A 100× better version is coming soon.

BCLittle League
v2 roadmap
Feasibility study

What we could plug into for v2

A decision-grade look at what's possible if BCLL wants to wire this site into the league's existing infrastructure — GameChanger for live scores and schedules, Sports Connect (Stack Sports / Blue Sombrero) for registration and rosters.

Not yet implementedFindings as of May 2026All claims linked to sources

TL;DR. Both GameChanger and Sports Connect have no public developer API, no OAuth, and no webhooks. But three real GameChanger paths and four real Sports Connect paths exist today and would meaningfully improve the BCLL experience without migrating off either platform. The biggest win is GameChanger’s new (Dec 2025) scoreboard widget; the second-biggest is server-side ingest of Sports Connect’s public iCal feed once Cam is appointed webmaster.

Vendor 1

GameChanger

Owned by DICK'S Sporting Goods. BCLL uses it for live scoring, schedules, rosters, and stats.

What’s possible today

Embed the official Scoreboard Widget

Effort: LowRisk: Low

GameChanger publicly launched a free, supported scoreboard widget in December 2025. An organization-tier widget exists for leagues. The widget is delivered as a JS SDK from widgets.gc.com (which does NOT block iframing the way web.gc.com does), so embedding it on bcll.rossmoormeals.com is the sanctioned path.

Recommendation: Do this first. ~1-2 days of work. A team or organization admin generates a widget ID in GameChanger; we drop a 7-line snippet on the schedule and team pages.

Public iCalendar (.ics) feed per team

Effort: LowRisk: Medium

Every team in GameChanger exposes an .ics URL via Schedule Sync → Copy Calendar Link. Standard read-only iCal subscription that any calendar app understands.

Recommendation: Use as an "Add to Calendar" button per team — clearly inside their Terms. Server-side ingest into our DB to render natively is a gray zone under their ToS section 3.4(m); ask GameChanger for written permission before going that route.

Public deep links + mobile app Universal Links

Effort: LowRisk: Low

Team URLs of the form web.gc.com/teams/<id>/live and the org Share with Fans link are public and can be linked from BCLL pages. On iOS and Android, those https URLs open the GameChanger app directly when installed (Universal Links).

Recommendation: Maintain a routes.ts-style mapping of BCLL teams → GameChanger team URLs and link out. Zero-maintenance.

What’s NOT possible

  • Public REST/GraphQL API for teams, games, stats

    GameChanger has never published a public, partner, or OAuth API. No developer portal exists.

  • Webhooks (game start, score change, final)

    Explicitly absent. Notifications go only to in-app followers via push/email.

  • Iframing web.gc.com itself

    x-frame-options: DENY is set on web.gc.com (we curl-tested it). Only widgets.gc.com is iframe-friendly.

  • Server-side scraping of gc.com

    ToS section 3.4(m) explicitly prohibits "scraping, copying, republishing, licensing, or selling the data." This is not a gray zone.

  • Reverse-engineering the internal sync API

    GameChanger's tech blog describes their internal /persons/<id> and /games/<id> endpoints, but ToS section 3.4(a) prohibits reverse engineering and 3.4(c) prohibits retrieving data the platform doesn't expressly permit.

The exact widget snippet (so you can see what we’d ship)
<script src="https://widgets.gc.com/static/js/sdk.v1.js"></script>
<div id="gc-scoreboard-widget"></div>
<script>
  window.GC.scoreboard.init({
    target: "#gc-scoreboard-widget",
    widgetId: "<from gc.com Tools tab>",
    maxVerticalGamesVisible: 4,
  });
</script>

Lives on widgets.gc.com which (unlike web.gc.com) does not set x-frame-options: DENY. The SDK mounts a div, not an iframe.

Vendor 2

Sports Connect (Stack Sports / Blue Sombrero)

The platform behind srbaseball.com. Handles registration, payments, family accounts, volunteer hours, division placement, and team rosters. Portal ID 12768.

What’s possible today

SSO link-out (already in use)

Effort: LowRisk: Low

Sports Connect uses a shared OAuth client (client_id 612b0399b1854a002e427f78) and redirects through core-api.bluesombrero.com → login.stacksports.com. We can deep-link a user from BCLL into a specific srbaseball page after they sign in, but we cannot receive an auth callback back into BCLL — there is no third-party OAuth client provisioning documented.

Recommendation: Already shipped. The /login route on this prototype redirects through this chain. Treat as "signed in to Sports Connect" — not "signed in to BCLL."

Public iCal feed via calendar.bluesombrero.com

Effort: LowRisk: Low

Sports Connect exposes a webcal:// feed at calendar.bluesombrero.com/api/v1/Calendar?instancekey=<key>&portalId=<id>&id=<calId>&key=<token>. Confirmed live across multiple leagues; can be ingested with any standard iCal parser (ical.js, node-ical) and rendered natively in BCLL's design.

Recommendation: Cam, once appointed webmaster, can pull the Sync URL from each calendar in srbaseball admin (Schedules → Calendar → Sync). Ingest server-side and render. Note: WebFetch returns 403 against the URL, so the server fetcher needs a realistic User-Agent — calendar clients are clearly whitelisted, ad-hoc bots are not.

Admin-side CSV / Excel exports

Effort: MediumRisk: Low

Sports Connect admin reporting can export Enrollment Details, Volunteer Details, Team Roster, Billing, Shopping Cart and more to Excel. The league owns the data per the license agreement, so an authorized admin can pull these and feed them into BCLL.

Recommendation: Daily admin task: download CSV → drop into BCLL backend (S3 / GitHub Actions / cron). Not real-time, but enough for division placements, board roster, sponsor lists.

Outbound "Register on srbaseball.com" button

Effort: LowRisk: Low

Sports Connect documentation explicitly endorses "click on Register in the top right hand corner of your club's Sports Connect powered website" as the registration flow. A clear button on BCLL that sends users to the canonical registration page is the sanctioned path.

Recommendation: Trivial. Just a styled <a> linking to the existing srbaseball.com registration page.

What’s NOT possible

  • Public REST API for registrations / rosters / payments

    Not published. sportsconnect.com has zero developer/API/SDK pages — no Stack Sports developer portal exists.

  • OAuth client we control (BCLL → SSO callback to bcll.rossmoormeals.com)

    Not offered. The shared client_id is Stack Sports' own. There is no documented third-party client provisioning process.

  • Webhooks for registration / payment events

    No public webhook system. Internal partner integrations (GameChanger, Stack Team App) presumably use private webhooks.

  • Embeddable Sports Connect registration form

    Not advertised. Sports Connect "Websites Made Easy" describes their own builder; no embed/iframe widget for external sites.

  • Custom DotNetNuke modules / server-side code

    Stack Sports operates the DNN instance — the league cannot install custom modules or expose new endpoints.

License agreement note

The Stack Sports license explicitly forbids customers from sublicensing, distributing, modifying, reverse-engineering, or running the platform on a “service bureau” basis. However, the same agreement says BCLL owns its own data and content — so an authorized admin pulling exports and feeding them into a league-controlled site is sanctioned. The line is between admin-pull (fine) and unauthorized scraping (not fine).

Industry context

How this compares

GameChanger and Sports Connect are the laggards in this space. TeamSnap, SportsEngine, and LeagueApps all expose public APIs and embed widgets that BCLL would have access to if it ran on those platforms.

PlatformPublic APIWidgets / embeds
TeamSnapPublic REST API + JS / Ruby SDKsGame Schedule Widget for org sites
SportsEngine (NBC Sports / NGIN)Full developer portal at developer.sportsengine.com, OAuth2, REST + GraphQLDocumented widgets and iframes
LeagueAppsPublic REST API with API keys (v1 beta announced 2023)Widgets for schedules / standings / registration drop-in
GameChangerNone publicScoreboard widget (Dec 2025); nothing else
Sports ConnectNone publicNone for external sites
What we’d ship

Recommended next steps

Ranked by impact-per-effort. Every step below is sanctioned by the relevant vendor.

  1. 1

    Embed the GameChanger scoreboard widget on /fields, /programs, and a new /scores page

    Effort: LowRisk: Low

    Highest visible-impact integration we can ship today. Sanctioned by the vendor.

  2. 2

    Add "Add to Calendar" buttons (GameChanger .ics + Sports Connect .ics) on team / division pages

    Effort: LowRisk: Low

    Personal calendar sync is what the .ics feed is for — clearly inside both vendors' ToS.

  3. 3

    Once Cam is appointed webmaster: server-side ingest the Sports Connect iCal feeds for each division and render schedules natively on BCLL

    Effort: LowRisk: Low

    League-owned data, league-authorized. The cleanest schedule story possible without an API.

  4. 4

    Daily admin CSV pull from Sports Connect → BCLL backend (rosters, divisions, board roster)

    Effort: MediumRisk: Low

    Replaces the placeholder data in lib/config/* with real-time-ish data, sanctioned by the league.

  5. 5

    Replace lib/config/board.ts with the daily-pulled board roster

    Effort: LowRisk: Low

    Once #4 lands, the chatbot answers questions about board members from current data.

  6. 6

    Open a formal partnership inquiry with Stack Sports and GameChanger

    Effort: LowRisk: Low

    A single phone call to (866) 258-3303 asking "is there a partner API or developer key for portal 12768?" gives the board either a clean no or a real yes.

  7. 7

    AVOID: scraping web.gc.com or srbaseball.com without admin sanction; reverse-engineering internal endpoints; automating SSO of unrelated users

    Effort: Risk: High

    All three are explicit ToS violations and create legal exposure.

Next step for the board

Approve the integrations Cam should ship in v2.

Steps 1-3 above can ship in roughly a week of work and would meaningfully change what parents see when they land on bcll.org. Steps 4-5 are bigger but unlock a real schedule and roster experience without migrating off Sports Connect.

Talk to Cam