feat(admin): groups — working, affinity, regional
Nobody has claimed this yet.
- Dominant language
- HTML
- Stars
- 33
- Forks
- 104
- Avg merge
- 12h 3m
- Merged PRs (30d)
- 10
Description
Summary
Lifecycle management for the three group flavors (working / affinity / regional). Group chairs get a scoped admin surface: they can edit only the group(s) they chair; staff sees the global list.
Requirements
- Brainstorming → spec under
docs/superpowers/specs/. -
/admin/groups— global list (staff+); chairs see only their groups. -
/admin/groups/:id— group page editor (description, charter, links), chair / co-chair assignment UI, member roster with role display, archive / reopen action. - Chair assignment: add / remove
group_membershipsrows withrole: chair | co_chair. Adding makes the assigned user an admin (per the actor-context recompute on next request). - Public surface: existing
/about/groups/*pages should render edited content once published.
Context
Foundation must ship first (#1956). Schema: groups, group_memberships, group_membership_role enum already in place from earlier work.
Implementation Notes
- Policy:
canEditGroup(actor, { groupId })— staff+ ORchairedGroupIds.has(groupId). - This is the first subsystem where the distributed-admin pattern gets exercised; it'll be the proving ground for
requirePolicywith scoped checks.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Begin with Foundation (#1956), then read the existing groups schema, group_memberships role enum, and the policy entry points named in the issue. Draft the design under docs/superpowers/specs/ before tracing /admin/groups and /admin/groups/:id. Done means the listed staff/chair controls work and the /about/groups/* pages render published edits.
Written by the indexing model from the issue text.
Assessment
- Domain
- authorization, backend, database, web-dev
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100