Skip to content

Profile / social identity (avatar, username, bio, social links, follow) #29

Description

@DLSS5ONECLICK

Goal

A lightweight but real social profile system — persistent identity, avatar, unique @username, display name, short bio, social links, and a follow relationship between registered users — with a public profile page other viewers can open from the live room. Explicitly not a full social network: no feed, no posts, no DMs, no notifications, no gamification (win rate/XP/levels/badges/leaderboards), no recommendation algorithms.

Critical constraint

Profiles must never gate the core experience. Guests keep watching/commenting/reacting/voting/requesting the mic/speaking with zero account, per the progressive-authentication model (AGENTS.md). Only the Follow action itself may prompt signup, and only with a benefit-framed inline prompt — never a redirect.

Scope (first pass)

  • Data model: username (unique, case-insensitive, reserved-name list), avatar_url, bio (≤160 chars, plain text), social_links (jsonb, extensible platform map).
  • /profile/[username] public profile page (avatar, display name, @username, bio, social icons, follower/following counts, join date, stage-appearance count).
  • /profile/edit — avatar upload/remove, display name, username, bio, social links, explicit Save/Cancel.
  • Avatar storage: new Supabase Storage avatars bucket, owner-scoped RLS, client-side resize/compression, fallback initials avatar.
  • Social links: Instagram/TikTok/YouTube/X/Twitch/website, handle-or-URL input normalized to one canonical stored value, unsafe-scheme rejection (javascript:/data:/etc.), extensible to future platforms without a schema change.
  • Follow system: follow/unfollow, follower/following counts visible to guests, no self-follow, no duplicates, authoritative DB constraints + RLS.
  • Live-room identity integration: avatar/name becomes tappable into the profile in speaker tiles and expanded comments for registered users; guests and no-username accounts stay non-navigable (no fake guest profile pages); tap never triggers the underlying vote/like/comment/speaker control (proper event-boundary handling).
  • "My Profile" entry point added to the existing room account menu (RoomInfoOverlay) — no revived site-wide header inside the room.

Explicitly out of scope this pass

Follower/following lists (counts only, unless small scope allows lists — flag as deferred if not), posts/feeds, DMs, private accounts, verified badges, payments, themes, OAuth verification, full notifications, blocking, ads.

See DECISIONS.md and SESSION_LOG.md for the actual implementation record.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions