Key Concepts
Before diving into the codebase, familiarize yourself with these core concepts.
Intent System
Unlike traditional social media where users just "post," CommonPlace requires users to declare their intent before sharing. This creates mindful posting rather than impulse sharing.
Available Intents (defined in src/lib/constants/intents.js):
| Key | Label | Description |
|---|---|---|
thinking_out_loud | Thinking Aloud | Processing thoughts out loud. Not necessarily looking for solutions. |
open_to_discussion | Invite to Discuss | The author welcomes different perspectives on this. |
sharing_personal | Personal Share | Something personal. Handle with care. |
asking_for_help | Asking for Help | Looking for advice, support, or practical help. |
just_for_fun | Just for Fun | Lighthearted -- just sharing for the joy of it. |
sharing_information | Offering Resource | Sharing something useful -- an article, tool, idea, or recommendation. |
The intent affects post styling and helps friends understand the poster's context before responding.
HomeRoom
Each user has a HomeRoom — their personal space in CommonPlace. Think of it as a profile page that feels more like a room you're visiting than a profile you're viewing.
HomeRooms can be customized with:
- Color themes
- Modules (customizable content blocks)
- Featured content
Circles
Circles are friend groupings that allow selective sharing. Instead of sharing with all friends or making content public, users can share with specific circles.
- Work Friends
- Close Friends
- Family
- etc.
MeBook
The MeBook is a personal narrative feature where users can share deeper information about themselves through guided prompts. It's designed for genuine self-expression rather than performance.
Relationship Types
CommonPlace allows nuanced relationship types beyond simple "friend" status:
- Friend (default)
- Close Friend
- Family
- Acquaintance
- Custom types
These affect visibility and sharing defaults.
Voice Narration
Posts can include voice narration — audio recordings that accompany written content. This adds a personal touch without the performance pressure of video.
Block = Disappear
When users block each other, they completely disappear from each other's experience. No "you've been blocked" messages — just 404 errors as if they don't exist.
Rate Limiting
To prevent spam and encourage thoughtful posting, CommonPlace implements rate limiting on various actions. Users have daily/hourly limits based on their account tier.
Row Level Security (RLS)
All database access is controlled by RLS policies in PostgreSQL. This means security is enforced at the database level, not just the application level.
Last updated: 2026-02-07