Goal
Edit profile page UI, covering biography, profile links, role, avatar, badges, visibility toggles, account details, email preferences, account connections, and account deletion.
Figma
Scope
Edit User Profile UI
Acceptance Criteria
1. Tagline
- The tagline field is simple text editor. Doesnt need to supporting: bold, italic, underline, ordered list, and hyperlinks . No full markdown support.
- Maximum character limit: 70 characters. A live character counter displays remaining characters (e.g. "XXK left").
- When the limit is reached, an error state is shown and further input is blocked.
- Content is auto-saved as the user types.
- Auto-save indicator states:
- Saving — displayed while the request is in progress.
- Saved — displayed once the request completes successfully.
2. Biography
- The biography field is a rich text editor supporting: bold, italic, underline, ordered list, and hyperlinks only. No full markdown support.
- Maximum character limit: 20K characters. A live character counter displays remaining characters (e.g. "20K left").
- When the limit is reached, an error state is shown and further input is blocked.
- Content is auto-saved as the user types.
- Auto-save indicator states:
- Saving — displayed while the request is in progress.
- Saved — displayed once the request completes successfully.
- Dev Note (@julhoang ): We need to add a regex to strip out markdown link – all URLs should be shown in full
3. Profile links
- Supported link labels: GitHub, Website, Email, Slack.
- Only HTTPS URLs are accepted. An inline error "Please add a secure link" is shown if a non-HTTPS URL is entered.
- Links are saved only when the user clicks "Save changes" for the Profile section.
- The "Add Another" link functionality is implemented but hidden behind a feature flag and disabled by default.
4. Your role
- The role dropdown is populated from a predefined list of member roles tied to contribution activity.
- The dropdown is disabled if the user has not made any contributions.
- The selected role is displayed on:
- The user's public profile header
- The user profile card on the posts feed
5. Avatar
- The user can upload, replace, or delete their avatar.
- Accepted formats: PNG and JPEG. Maximum file size: 5MB.
- Empty state: a default placeholder is shown when no avatar has been uploaded (see screenshot 4).
- Avatar is saved when the user clicks "Save changes" for the Profile section.
6. Badges
- Badges are earned through contributions to the Boost community and are fetched from the database.
- Empty state: badges are displayed horizontally when no badges have been earned, showing locked badge placeholders. A tooltip on hover displays the badge name.
- Earned state: badges are displayed vertically once the user starts earning badges.
- Select Title: users can select a display title tied to a badge.
- If a user has only one badge, the badge's achievement name is used as the title by default with no dropdown shown.
- If a user has multiple badges, a title dropdown is shown. The dropdown options are responsive to the selected badge — selecting a badge updates the available titles.
- The selected badge title is what is displayed on the badges in hover state
- Badges and title selection are saved when the user clicks "Save changes" for the Profile section.
7. Visibility toggles
- Hide your GitHub activity from your profile — hides GitHub activity from the public profile when checked.
- Hide your mailing list activity from your profile — hides mailing list activity from the public profile when checked.
- Hide achievements & badges on your profile — hides the badges section from the public profile when checked.
- All toggles are saved when the user clicks "Save changes" for the Profile section.
8. Profile section — Save changes
Clicking "Save changes" in the Profile section saves all of the following in a single request:
- Profile links
- Role selection
- Avatar
- Badge title selection
- Visibility toggle states
Note: Biography is excluded — it is auto-saved independently.
9. Update details
- Username: Editable. Validated by the backend only on clicking "Save changes". If the username is already taken, display an inline error: "This username is already taken."
- Email: Displayed but disabled. Cannot be changed from this field.
- Country: Searchable dropdown populated with all countries. The selected country determines the country flag displayed on the user's public profile header and post feed card.
- Indicate last login method: When checked, the login page indicates the last authentication method used by this user.
- Override commit author name: When checked, globally replaces the user's git commit author name with their username.
- Clicking "Save changes" in this section saves only the Update details fields.
Question for the team: What is the purpose of the "Indicate last login method" toggle — is this displayed to the user themselves, or visible to others? Confirm expected behaviour before implementation.
10. Commit email address
- A field to add a commit email address is displayed.
- The full commit email address flow is covered in a separate ticket.
11. Email preferences
Users can opt in or out of email notifications via checkboxes. All preferences are saved when the user clicks "Save changes" in this section.
Notify me via email when my news is approved after moderation:
- Blog posts
- Links
- News
- Video
Notify me via email when other users publish their news:
- Blog posts
- Links
- News
- Video
Other:
- The site's terms of use or privacy policy are changed
12. Account connections
- Connected accounts display the provider name (GitHub, Google), a "Connected" status, and a "Manage" button.
- Disconnected accounts display a "Connect" button that initiates the relevant OAuth flow.
13. Delete account
- A "Delete account" button is displayed with the warning: "Remove your account from our system. This action will permanently erase all your information and account from Boost, and it cannot be undone."
- The full delete account flow is covered in a separate ticket.
FE/BE Actions
| Description |
URL |
| Fetch user profile data |
|
| Auto-save biography |
|
| Save profile section (links, role, avatar, badges, toggles) |
|
| Fetch available roles |
|
| Upload avatar |
|
| Delete avatar |
|
| Fetch badges for user |
|
| Save update details (username, country, toggles) |
|
| Save email preferences |
|
| Connect OAuth account |
|
| Disconnect OAuth account |
|
Out of Scope
- Commit email address flow (covered in a separate ticket)
- Delete account flow (covered in a separate ticket)
- Badge earning logic
- "Add Another" profile links (behind feature flag, deferred)
Goal
Edit profile page UI, covering biography, profile links, role, avatar, badges, visibility toggles, account details, email preferences, account connections, and account deletion.
Figma
Scope
Edit User Profile UI
Acceptance Criteria
1. Tagline
2. Biography
3. Profile links
4. Your role
5. Avatar
6. Badges
7. Visibility toggles
8. Profile section — Save changes
Clicking "Save changes" in the Profile section saves all of the following in a single request:
9. Update details
10. Commit email address
11. Email preferences
Users can opt in or out of email notifications via checkboxes. All preferences are saved when the user clicks "Save changes" in this section.
Notify me via email when my news is approved after moderation:
Notify me via email when other users publish their news:
Other:
12. Account connections
13. Delete account
FE/BE Actions
Out of Scope