US-2.1. As a user who already has a Hypermedia identity, I want to join a site from the browser so that I can participate in it without having to create a new account.

Acceptance Criteria

Entry & join trigger

  • A Join button is visible in the site top bar when the user is not yet a member

  • Tapping Join opens a modal within the site context.

  • When user tries to comment, follow or bookmark the same flow starts.

  • The modal shows the site name (Ethosfera), explains it is built with Seed Hypermedia, and offers two options: Create identity or Already have a Hypermedia identity

  • A third low-commitment option is visible: "I have an identity from another site"

  • Tapping "Already have a Hypermedia identity" takes the user to the sign-in flow

Sign in — email

  • The sign-in screen is branded as Seed Hypermedia — distinct from the site UI

  • The headline reads "Sign in to join [site name]" — the goal stays visible

  • Email field is required and validates correct format before submission

  • Submitting a valid email advances to the passkey screen

Sign in — passkey

  • The passkey screen shows the email the user is signing in as

  • Primary action is "Sign in with passkey" using device biometrics or PIN

  • A fallback "Use another email" option is available

  • Successful passkey confirmation advances to the join confirmation screen

Join confirmation

  • The join confirmation screen shows the user's name and email so they can verify which identity they are joining with

  • Primary CTA is "Start participating" — one tap, no further steps

  • A "Not now — keep reading" option is available

  • Tapping "Start participating" joins the site and returns the user to the site as a member

Joined state

  • The Join button disappears from the top bar

  • The user's avatar appears in the top bar

  • The comment and participation areas become active

  • A confirmation alert appears: "You've joined [site name] — you can now comment and participate" and auto-dismisses after ~3 seconds

This step is not necessary, user already did the other steps to confirm sign in. Remove!

Basic Flow

  1. User arrives at Ethosfera as a guest and sees the Join button

  2. User taps Join — modal opens within the site

  3. User taps "Already have a Hypermedia identity"

  4. User enters email linked to their Seed identity

  5. User taps Continue — advances to passkey screen

  6. User confirms with passkey (Face ID, Touch ID, or PIN)

  7. Join confirmation screen shows name and email

  8. User taps "Start participating" — joined

  9. Returns to site as member — Join button gone, avatar visible, comment area active

  10. Confirmation alert appears and auto-dismisses

Edge Cases

Email

  • ⚠️ Invalid email format → inline error: "That doesn't look like a valid email. Check for typos and try again." Button disabled until fixed

  • ⚠️ Email not linked to any Seed identity → error with option to create one instead: "No Seed identity found for this email. Want to create one?"

  • ⚠️User enters email from a different domain/site → redirect to "I have an identity from another site" path

Passkey

  • ⚠️ Passkey fails or is cancelled → returns to passkey screen with retry option and "Send a verification code instead" fallback

  • ⚠️Device doesn't support passkey → verification code fallback offered automatically

  • ⚠️User taps "Use another email" → returns to email screen, previous entry cleared

Navigation

  • ⚠️User closes the modal mid-flow → returns to site as guest, no partial state created

  • ⚠️User presses browser back mid-flow → returns to previous step without losing email entry

US-2.2. As a user who already has a remote Hypermedia identity , I want to join a site from the app so that I can participate in it without having to create a new account.

Acceptance Criteria

  • A Join button is visible in the site top bar.Tapping Join opens a modal within the app showing the site name and two options: Create identity in Hypermedia and Already have a Hypermedia identity, plus a quiet link "I have an identity from another site?"

  • The modal copy explains the site is built with Hypermedia and that creating an identity takes two minutes — no technical language

  • Tapping "Already have a Hypermedia identity" takes the user to the email screen inside the Hypermedia sign-in flow

  • Valid email advances to the passkey screen showing "Good to see you again" and the email address to remind

  • Passkey confirmation uses device biometrics or PIN

  • 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

  • Primary CTA is "Start participating" — one tap, no further steps

  • On joining, the site is added to Joined Sites in the sidebar immediately and the Join button disappears from the site top bar

  • A toast alert appears: "You've joined [site name] — you can now comment and participate" and auto-dismisses after ~3 seconds

  • No new identity is created — the user's existing remote identity is used throughout and user is as a full member with participation features

Basic Flow

  1. User is viewing a site in the app — Join button visible in top bar

  2. Taps Join — modal opens showing "Join [site name]"

  3. Taps "Already have a Hypermedia identity"

  4. Enters email linked to their Hypermedia identity

  5. Taps Continue — passkey screen appears

  6. Confirms with passkey

  7. "Join [site name]" screen shows available identities — primary identity pre-selected

  8. Taps "Start participating"

  9. Returns to site as member — Join button gone, site added to sidebar, toast appears

Edge Cases

  • ⚠️ Invalid email format → inline error: "That doesn't look like a valid email. Check for typos and try again." Button disabled until fixed

  • ⚠️ Email not linked to any Hypermedia identity → "No Hypermedia identity found for this email." with option to create one instead

  • Passkey

    • ⚠️ Device does not support passkeys → fallback method offered, user not blocked (password needs to be developed later)

    • ⚠️User cancels the biometric prompt → returns to passkey screen, can retry

    • ⚠️ Passkey creation fails due to device error → retry option shown

    • Clear error messages: avoid: "Failed to fletched" "Invalid Handoff token" _ review this one by one

  • ⚠️ User taps "Use another email" → returns to email screen, previous entry cleared

  • ⚠️ User is already a member of this site → join confirmation is skipped, user lands directly as a member with no duplicate entry created

  • ⚠️ User taps "I have an identity from another site?" → path TBD

  • ⚠️ User closes the modal mid-flow → returns to site as guest, no partial state created, Join button remains visible

Do you like what you are reading? Subscribe to receive updates.

Unsubscribe anytime