Repository navigation
feat(teams): teams page and team workspace - #551
Merged
Merged
Conversation
Add /manage/teams with a card per team, split into communities and teams. Opening a team turns the sidebar into a team workspace with Details, Team Members, Community Submissions (communities only) and More. get_my_teams now returns is_a_community, short_description and the number of upcoming events per team, counted in one query. The name and logo form and the role guide move out of ManageTeamPanel into their own components so the settings panel and the new pages share them. The sidebar header takes a generic workspace instead of event props.
Drop the Details, Members, Submissions and More pages from the team workspace. Its one page is Events, the same timeline as /manage/events filtered to the team through get_my_events' team filter. A non-member opening a team URL gets the not-found page. Opening a team makes it the current team, so Create Event files the event under it.
Add People beside Events in the team workspace: the role guide and the member roster, with Add member on the search row for owners and admins. A search with no matches shows the shared empty state. Team pages share a breadcrumb header (team / section), so the team's Events page now names the team it belongs to.
The home sidebar keeps Events, Talk Proposals and Sponsorship together and sets Teams apart below a divider. A nav item flagged startsGroup gets the divider on desktop. The team's People page is now Members, at /manage/teams/:teamId/members, with the same icon and title heading as the Events page.
Add Settings to the team workspace, with vertical tabs: - Display: logo, name and short description, an Access card (visibility as a dropdown and an editable public URL), and the team's links. - Options: community submissions, which only a public team can turn on. Save appears once the form changes, Cmd+S saves, and leaving the site with unsaved edits warns. The Team Page button opens the saved page. update_public_page now takes a slug: it is cleaned like a generated one, refused when another team has it, and the route follows it even while the team is private. BuzzTeam refuses community submissions on a private team. Team page links are built from the current origin, as event links are, and the dev proxy forwards /community to the bench. A vertical tab list keeps frappe-ui's own gap instead of the global horizontal one.
Contributor
Backend test coverage: 91%Commit c1e6423. Test modules are excluded. Coverage by file
89 empty files skipped. |
Payments sits between Members and Settings in the team sidebar and edits the legal name, tax ID and billing address kept on Buzz Team Settings. Owners and admins can change them; everyone else on the team sees them read-only. The event ticket flow now saves through the same team service. Team pages drop their big icon-and-title block: the breadcrumb header names the page, and the Team Page link moves up into it. On phones, team Events uses the same floating Create Event button as the main Events page.
harshtandiya
marked this pull request as ready for review
October 8, 2026 11:56
Contributor
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
Contributor
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
The team's public URL is checked as it is typed, as an event route is: a "Checking availability" line from the first keystroke, then whether the URL is free. Save is disabled while it is taken. One slug check serves both the new check_team_slug endpoint and the save, so the two always agree. On a phone, Settings lists its sections and opens each on its own screen without the bottom nav, titled "Team · Section", with back returning to the list. Discard takes the back button's place while edits are unsaved. The header links to the public page on every team screen on a phone and on Settings on desktop, and steps aside while there are unsaved edits. get_my_teams now returns slug and is_published for that link.
Contributor
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
A failed URL check no longer leaves "Checking availability" up, and a URL that cleans down to nothing asks for letters, numbers and hyphens instead of reporting it taken. Plainer names for the selected tab and the phone slide classes, and comments that only restated the code are gone.
Contributor
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
Teams get their own place in the dashboard:
/manage/teamslists the user's teams and communities, and opening one turns the sidebar into a team workspace.Server side:
get_my_teamsaddsslug,is_published,is_a_community,short_descriptionand an upcoming event count;update_public_pagetakes an editable slug; newcheck_team_slugshares one slug check with the save; newupdate_tax_details, which the event ticket flow now shares;BuzzTeamrefuses community submissions on a private team. Non-members get the not-found page on any team URL.Demo
On a phone:
Testing
test_teams,test_buzz_teamandtest_taxespass; dashboard typecheck, nav unit tests, production build and pre-commit are clean. Checked in the browser on desktop and phone: team list, filtered events, member search, payments, settings save and discard, Cmd+S, the live URL check, and the phone settings flow.