Discover Groups
A user browses public groups to find a community to join.
Who Can Do This
Any authenticated user.
Steps
- Open the Discover Groups screen.
- The app shows public groups near the user's current location by default.
- To find groups in a different area, search by city or neighbourhood name.
- Browse the list and tap a group to view its details.
Rules
- Only public, active groups appear in discovery. Private groups, archived groups, banned groups, and frozen (owner lapsed) groups are never shown. A reactivated group reappears in discovery once active again, and a read-only group reappears once a subscriber takes ownership or the owner re-subscribes. See Archive a Group and Frozen (owner lapsed).
- Groups the user is already a member of are excluded from results.
- Groups the user has a pending join request for still appear in results, shown with a "Request pending" state instead of a join button.
- Proximity-based results are limited to groups within a maximum radius configured as a global app setting (default: 50 km). See Settings. Results within that radius are ordered by distance from the user's current location.
- Text search matches on group name and base location. Results are ordered by relevance to the search term.
- Results are paginated. Users can load more as they scroll.
- The list card shows the group's name, base location (city), and member count. The city is always displayed — groups are not required to have unique names, so the city is essential for distinguishing groups with the same name.
- The group detail view shows the full description and whether approval is required to join, in addition to the list card fields.
- Both views are visible to any authenticated user regardless of join settings.
What Happens Next
The user can view group details and choose to join from the discovery screen.
Failure Cases
- User not authenticated: Discovery requires authentication. A logged-out user is shown the sign-in screen if they try to access the discovery feed.
- Location permission denied: If the user has not granted location access, the app falls back to text search only. Proximity results are unavailable.
- No groups found: If no public groups exist near the user's location, an empty state is shown with a prompt to search by city name.
- No search results: If a text search returns no matching groups, an empty state is shown with a prompt to broaden or adjust the search term.
- Pending request exists: The group appears in results with a "Request pending" indicator. The user cannot join again while the request is open.
Known Limitation
Discovery results are not personalised for blocked users. A user who has been blocked from a group will still see that group in discovery results. Their join attempt will fail with a generic error. The group is not hidden from their view.
Status: partially-live. Backend API is complete. The groups module has not yet been built in the frontend.