USRSE / USRSE/usrse.github.io

feat(admin): groups — working, affinity, regional

Open
#1,960 0 comments 0 reactions 0 assignees View on GitHub

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_memberships rows with role: 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+ OR chairedGroupIds.has(groupId).
  • This is the first subsystem where the distributed-admin pattern gets exercised; it'll be the proving ground for requirePolicy with scoped checks.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.