HomeRoom
Location: src/components/HomeRoom.jsx
Overview
HomeRoom is the personal space for each user, accessible at /room/:username. It replaces the traditional profile page with a modular, customizable room. The room owner can add, remove, and reorder modules (about, photos, links, featured posts, MeBook, guestbook, posts, friends, Spotify, custom), and apply room-level styling (colors, fonts, backgrounds).
Visitors who are blocked see a ProfileBlockedState. The owner sees editing controls. Non-owners see a read-only view with friend, message, and report actions.
Relevant Invariants
- Invariant #10: "Expressive Freedom Is Spatially Contained" -- Deep customization is confined to the user own HomeRoom.
- Invariant #7: "Human-Scale Social Contexts" -- The friends module and guestbook keep interactions personal.
- Invariant #14: "Privacy Is Infrastructure" -- Block state is checked before any content renders.
Props
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
session | object | Yes | -- | Supabase auth session |
URL Parameters
| Parameter | Description |
|---|---|
:username | The username of the room owner, resolved from the profiles table |
Module Types
| Module | Component | Description |
|---|---|---|
about | AboutModule | Bio and personal info |
photos | PhotosModule | Photo gallery |
links | LinksModule | External links collection |
featured_posts | FeaturedPostsModule | Pinned/featured posts |
mebook | MeBookModule | Personal Q&A / journal |
guestbook | GuestbookModule | Visitor messages |
posts | PostsModule | User recent posts |
friends | FriendsModule | Friends list display |
spotify | SpotifyModule | Spotify embed |
custom | CustomModule | User-defined custom content |