Aspect ratios for images and carousels: 16/9, 1/1, or 3/4.Paste detection: The post editor automatically detects pasted images, YouTube URLs, and generic links, converting them into the appropriate attachment type.
Post Slugs
Slugs are auto-generated from the title by a database trigger:
Title is lowercased and stripped of accents via unaccent
Non-alphanumeric characters are replaced with dashes
A 7-character hash suffix (derived from the post UUID) is appended
Collision detection with automatic suffix extension
Example: "My First Post" → my-first-post-a3b4c5dSlugs are case-insensitively unique across all posts.
Post Statuses
Status
Visibility
Who can set it
visible
Everyone
Default
hidden
Author + space mods + global mods
Space mods, global mods
suspended
Global mods only
Global mods only
deleted
Global mods only
Author, space mods, global mods
Moderation Actions
Pin/Unpin — Pinned posts appear at the top of the space feed. Space mods and global mods only.
Hide/Unhide — Hidden posts are removed from feeds but accessible by direct URL to authorized users.
Suspend — Global moderators only. Removes from all feeds.
Delete — Soft-delete. Post remains in the database but is hidden from all non-admin views.
Open Graph Images
Posts automatically generate Open Graph images for social sharing:
Image posts — Uses the attached image
YouTube posts — Uses the YouTube thumbnail
Carousel posts — Uses the first image
Link posts — Uses the link's favicon
Text-only posts — Generates a dynamic OG image via /api/og/post showing the title, space name, and author
Views
Post views are tracked via POST /api/hub/views. The view count is stored directly on the hub_posts.views column. View milestones (50, 100, 250, 500, 1000+) trigger notifications to the post author.
Reactions
Users can react to posts with emoji reactions. Each user can pick one reaction per post from a configurable set of emojis (default: 👍 ❤️ 😂 😮 😢). Clicking a different emoji switches the reaction; clicking the same one removes it. Admins can customize the available emojis via Admin → Site Configuration → Post reactions. Reaction milestones (5, 25, 50, 100+) trigger author notifications.
Follower Notifications
When a user creates a new post, all of their followers are automatically notified via a database trigger (hub_follower_post_notify). The notification includes the post title and links directly to the post.