✅ As a User, I want to join a site from the app with my existing account
Behavior from source: Use the app site-top-bar Join entry, sign in with the email and native passkey of an existing remote identity, select from available identities, and Start participating. The app adds the site to Joined Sites and enables membership without creating another identity.
Original source · exact version bafyreidph2qodlq3enowjhmrupyggkx35v7dskj6umjmtzxt7do4eli5ym
Reviewed migration decision · Journey map · local task ID ut-0fc7a9f019744e1b.
Confidence: high; review status: needs-review. Similar source records are not merged. Source status icon is not a committed release or current product state.
Source acceptance and behavior
The site-top-bar Join button opens an in-app modal naming the site, explaining Hypermedia in nontechnical language, and offering new identity, existing identity and another-site identity options.
Existing identity opens the email sign-in screen; valid email leads to a passkey screen showing Good to see you again and the email.
Authenticate with native biometrics or PIN. Show available identities on Join [site name], with the active identity preselected (the basic flow instead calls it primary).
Start participating joins in one action without creating a new identity; reuse the existing remote identity throughout.
Add the joined site to the sidebar immediately, hide the Join button, enable participation, and show a confirmation toast for approximately three seconds.
Invalid email shows an inline error and disables continuation; unknown email shows an error with an option to create an identity.
Cancelled or failed passkey prompts permit retry with clear errors. Unsupported devices should have a fallback, but password fallback is marked for later development.
Use another email returns to email entry and clears the previous entry.
Already-members skip join confirmation and return as members without duplicate entries.
Closing the modal mid-flow returns to the site as a guest without partial state; Join remains visible.
Full original readable source and block backlinks
Heading Design source block
Heading Acceptance Criteria source block
Paragraph A Join button is visible in the site top bar. Tapping Join opens a modal within the app that shows the site name and two options: Create identity in Hypermedia and Already have a Hypermedia identity, plus a quick link labeled "I have an identity from another site?" source block
Paragraph The modal copy explains that the site is built with Hypermedia and that creating an identity takes two minutes — no technical language source block
Paragraph Tapping "Already have a Hypermedia identity" takes the user to the email screen inside the Hypermedia sign-in flow source block
Paragraph Valid email advances to the passkey screen showing "Good to see you again" and the email address to remind source block
Paragraph Passkey confirmation uses device biometrics or PIN source block
Paragraph On successful passkey confirmation, the user sees a "Join [site name]" screen showing all their available identities; the currently active identity is pre-selected with a checkmark source block
Paragraph Primary CTA is "Start participating" — one tap, no further steps source block
Paragraph On joining, the site is added to Joined Sites in the sidebar immediately and the Join button disappears from the site top bar source block
Paragraph A toast alert appears: "You've joined [site name] — you can now comment and participate" and auto-dismisses after ~3 seconds source block
Paragraph No new identity is created — the user's existing remote identity is used throughout and user is as a full member with participation features source block
Heading Basic Flow source block
Paragraph User is viewing a site in the app — Join button visible in top bar source block
Paragraph Taps Join — modal opens showing "Join [site name]" source block
Paragraph Taps "Already have a Hypermedia identity" source block
Paragraph Enters email linked to their Hypermedia identity source block
Paragraph Taps Continue — passkey screen appears source block
Paragraph Confirms with passkey source block
Paragraph "Join [site name]" screen shows available identities — primary identity pre-selected source block
Paragraph Taps "Start participating" source block
Paragraph Returns to site as member — Join button gone, site added to sidebar, toast appears source block
Heading Edge Cases source block
Paragraph ⚠️ Invalid email format → inline error: "That doesn't look like a valid email. Check for typos and try again." Button disabled until fixed source block
Paragraph ⚠️ Email not linked to any Hypermedia identity → "No Hypermedia identity found for this email." with option to create one instead source block
Paragraph Passkey source block
Paragraph ⚠️ Device does not support passkeys → fallback method offered, user not blocked (password needs to be developed later) source block
Paragraph ⚠️User cancels the biometric prompt → returns to passkey screen, can retry source block
Paragraph ⚠️ Passkey creation fails due to device error → retry option shown source block
Paragraph Clear error messages: avoid: "Failed to fletched" "Invalid Handoff token" review this one by one source block
Paragraph ⚠️ User taps "Use another email" → returns to email screen, previous entry cleared source block
Paragraph ⚠️ User is already a member of this site → join confirmation is skipped, user lands directly as a member with no duplicate entry created source block
Paragraph ⚠️ User taps "I have an identity from another site?" → path TBD source block
Paragraph ⚠️ User closes the modal mid-flow → returns to site as guest, no partial state created, Join button remains visible source block
Do you like what you are reading? Subscribe to receive updates.
Unsubscribe anytime