Skip to content

Groups

Community repair group management and membership

36 stories across 6 personas | Coverage: 36/36 (100%)

Overview

Groups

Repair groups are the organisational unit of Restarters. Each group represents a local community of repair volunteers who come together to run events. Groups have a name, location, description, and can belong to one or more networks.

What Hosts can do

Hosts manage their group's details, settings, and membership. They edit group information, upload images, send email invitations to join, manage volunteer roles (promoting members to Host or demoting them), and remove volunteers. Hosts can also update their group via the API.

What NetworkCoordinators can do

NetworkCoordinators oversee groups within their networks. They can list all groups in their networks, view groups pending moderation, approve groups, and manage group-network associations. They can also remove volunteers and change roles for groups in their network.

What Admins can do

Admins can view all groups pending moderation across the platform, delete groups (only if they have no device records), and list group audit changes for Zapier integration.

What Restarters can do

Restarters can browse all groups, view groups they belong to, discover nearby groups, browse groups within a network, and join or leave groups. Creating a new group automatically promotes a Restarter to Host. Restarters can also accept group invitations and list groups via the API.

What Guests can do

Guests can view group details, repair statistics, volunteer lists, events, and tags via the public API. They can also join groups using shareable invite codes.

What ThirdParties can do

External organisations can retrieve group names, tags, details, events, and volunteer data via the public API to display on their own platforms.

Admin & integrations

PersonaStoryMethodTests
AdminAs an Admin, I can list group audit changes for Zapier integrationGroupController::getGroupChanges✅ Covered
AdminAs an Admin, I can list group membership changes for Zapier integrationUserGroupsController::changes✅ Covered

Create & manage groups

PersonaStoryMethodTests
AdminAs an Admin, I can delete a group that has no device recordsGroupController::delete✅ Covered
AdminAs an Admin, I can view all groups pending moderationGroupController::moderateGroupsv2✅ Covered
HostAs a Host, I can edit my group's details and settingsGroupController::edit✅ Covered
HostAs a Host, I can update my group via the APIGroupController::updateGroupv2✅ Covered
NetworkCoordinatorAs a NetworkCoordinator, I can view groups pending moderation in my networksGroupController::moderateGroupsv2✅ Covered
RestarterAs a Restarter, I can create a new repair group and become its HostGroupController::create✅ Covered
RestarterAs a Restarter, I can create a new group via the APIGroupController::createGroupv2✅ Covered

Events for group

PersonaStoryMethodTests
GuestAs a Guest, I can list events for a group via the APIGroupController::getEventsForGroupv2✅ Covered
ThirdPartyAs a ThirdParty, I can retrieve events for a group to display on my platformGroupController::getEventsForGroupv2✅ Covered

Find & browse groups

PersonaStoryMethodTests
GuestAs a Guest, I can view group details via the APIGroupController::getGroupv2✅ Covered
GuestAs a Guest, I can get a list of group names via the APIGroupController::listNamesv2✅ Covered
GuestAs a Guest, I can get a list of group tags via the APIGroupController::listTagsv2✅ Covered
RestarterAs a Restarter, I can browse all repair groups on the platformGroupController::all✅ Covered
RestarterAs a Restarter, I can list all groups via the APIGroupController::getGroupList✅ Covered
RestarterAs a Restarter, I can view the groups I belong toGroupController::mine✅ Covered
RestarterAs a Restarter, I can discover repair groups near my locationGroupController::nearby✅ Covered
RestarterAs a Restarter, I can browse groups within a specific networkGroupController::network✅ Covered
RestarterAs a Restarter, I can view a group's details, events, and membersGroupController::view✅ Covered
ThirdPartyAs a ThirdParty, I can retrieve group details to display on my platformGroupController::getGroupv2✅ Covered
ThirdPartyAs a ThirdParty, I can retrieve group names to display on my own platformGroupController::listNamesv2✅ Covered
ThirdPartyAs a ThirdParty, I can retrieve group tags to categorise groups on my platformGroupController::listTagsv2✅ Covered

Group invitations

PersonaStoryMethodTests
GuestAs a Guest, I can join a group using a shareable invite codeGroupController::confirmCodeInvite✅ Covered
HostAs a Host, I can send email invitations to join my groupGroupController::postSendInvite✅ Covered
RestarterAs a Restarter, I can accept a group invitationGroupController::confirmInvite✅ Covered

Manage volunteers

PersonaStoryMethodTests
GuestAs a Guest, I can view a group's volunteers via the APIGroupController::getVolunteersForGroupv2✅ Covered
HostAs a Host, I can remove a volunteer from my groupGroupController::deleteVolunteerForGroupv2✅ Covered
HostAs a Host, I can change a volunteer's role in my groupGroupController::patchVolunteerForGroupv2✅ Covered
RestarterAs a Restarter, I can join a repair groupGroupController::getJoinGroup✅ Covered
RestarterAs a Restarter, I can leave a group I belong toUserGroupsController::leave✅ Covered
ThirdPartyAs a ThirdParty, I can retrieve volunteer data for a group via the APIGroupController::getVolunteersForGroupv2✅ Covered

Network membership

PersonaStoryMethodTests
NetworkCoordinatorAs a NetworkCoordinator, I can list all groups in my networks via the APIGroupController::getGroupsByUsersNetworks✅ Covered

Photos & branding

PersonaStoryMethodTests
HostAs a Host, I can remove my group's imageGroupController::ajaxDeleteImage✅ Covered
HostAs a Host, I can upload an image for my groupGroupController::imageUpload✅ Covered

Stats & data

PersonaStoryMethodTests
GuestAs a Guest, I can view a group's repair impact statisticsGroupController::stats✅ Covered

Source Files