Entity: Teams — data-farm
Parent: Data Farm — Centralized Entity Data Layer · Pilot — sets the shared conventions the other entities reuse
Teams is the pilot entity — its realtime topics already exist (t/updated, u/<userId>/membership, published by app.comms.team.notify/notifyMembership), so it proves the full loop with no backend task required. Three PRs: store+first-consumer → subscriber → remaining-vue (see PR shape in 00 (overview)).
Current state
- Team data lives in two places that can diverge:
stores/context.js (single current team, teamMembership) and stores/account.js (teams[]).
- Fetched via
teamApi.getTeams(), getTeam(), getTeamUserMembership() across account-auth.js, account.js, and context.js refreshTeam().
team-channel.subscriber.ts already handles t/updated → context.refreshTeam() and membership → context.onTeamChannelMembership().
Entity: Teams — data-farm
Parent: Data Farm — Centralized Entity Data Layer · Pilot — sets the shared conventions the other entities reuse
Teams is the pilot entity — its realtime topics already exist (
t/updated,u/<userId>/membership, published byapp.comms.team.notify/notifyMembership), so it proves the full loop with no backend task required. Three PRs: store+first-consumer → subscriber → remaining-vue (see PR shape in 00 (overview)).Current state
stores/context.js(single currentteam,teamMembership) andstores/account.js(teams[]).teamApi.getTeams(),getTeam(),getTeamUserMembership()acrossaccount-auth.js,account.js, andcontext.jsrefreshTeam().team-channel.subscriber.tsalready handlest/updated→context.refreshTeam()and membership →context.onTeamChannelMembership().