apps/web has two coexisting systems for data fetching. Before adding a fetch, check which one
the slice already uses and don't mix them without a reason.
TanStack Query, wrapped by @normy/react-query's QueryNormalizerProvider, provides normalized
cache updates (one entity updates everywhere it appears across queries).
@languages-learner/data-source exposes a shared dataManager (Gravity UI DataSource) through
DataManagerContext.
- If a slice is already wired to one system, continue with it.
- Data coming from the backend via the generated SDK is described in
api-contract.md:
createSdk(supabase, options)attaches the caller's access token to every request. SSR callers must pass an absolutebaseUrl(the relative/apionly resolves in the browser).