Posts are the core entity in Project Feed. They’re how your team shares progress updates, design iterations, builds, ideas, and anything else worth documenting. Each post supports rich text, media attachments, embeds, mentions, reactions, and threaded comments.
A post starts with a title and rich text body written in the Plate.js editor. You can attach media files, embed external content, and mention teammates. Every post belongs to a project (or the “General” category if no project is selected). Posts appear in the feed in reverse chronological order, with pinned posts always at the top.
Posts can be saved as drafts before publishing, edited after publishing with full version history, and soft-deleted with the ability to restore. The feed updates in real time via Convex subscriptions — when a teammate publishes a post, it appears instantly without a page refresh.
Click the post composer at the top of the feed to start writing. The composer is a full-featured rich text editor powered by Plate.js, supporting formatting, media, and inline elements.
Give your post a descriptive title. Titles are displayed prominently in the feed and are searchable across the workspace. Keep them concise but informative — “Week 12 character animation progress” is better than “Update.”
The body editor supports rich text formatting: headings, bold, italic, strikethrough, inline code, code blocks, blockquotes, bullet lists, numbered lists, links, and horizontal rules. Write as much or as little as you need — some posts are a single sentence, others are detailed writeups with embedded media.
Select the project this post belongs to, or leave it as “General” for updates that aren’t project-specific. If you’re composing from within a project’s feed tab, the project is pre-selected automatically.
Drag and drop files onto the composer, or click the attachment button to browse. You can also add embeds for external content. See the Media Attachments and Embeds sections below for details.
Click Publish to share the post with your team immediately, or click Save Draft to save it privately. Drafts are only visible to you until published.
The post editor is built on Plate.js and provides a block-based editing experience similar to Notion or Linear. The formatting toolbar appears when you select text, and slash commands let you insert blocks without leaving the keyboard.
Bold, italic, strikethrough, inline code, and links. Select text and use the floating toolbar or keyboard shortcuts (Ctrl/Cmd + B, I, etc.).
Headings (H1–H3), blockquotes, bullet lists, numbered lists, code blocks with syntax highlighting, and horizontal rules.
Type / at the start of a line to open the command menu. Insert headings, lists, code blocks, quotes, and dividers without touching the mouse.
The editor supports Markdown shortcuts. Type ## for a heading, - for a bullet list, > for a blockquote, and so on.
Posts can include any number of media attachments. Drag and drop files onto the composer, or click the attachment button to browse your file system. Files are uploaded to Cloudflare R2 storage and served through the media proxy for fast, secure delivery.
Once attached, files appear in a grid below the post body. You can reorder attachments by dragging them, rename files inline, or remove them before publishing. After publishing, attachments can be viewed in a lightbox viewer and are available in the project’s Files tab.
PNG, JPG, GIF, WebP, HEIC
Uploaded images are optimized automatically. HEIC files from iOS devices are converted to JPEG on upload.
MP4, WebM
Videos play inline with a custom player. Large files are chunked during upload for reliability.
MP3, WAV, OGG, FLAC
Audio files display with a waveform player. Useful for sharing music, sound effects, or voice memos.
GLB, FBX, OBJ, STL, USDZ
3D files render in an interactive Three.js viewer with orbit controls, zoom, and lighting adjustments.
Rive (.riv)
Rive animations play interactively in the post. Great for sharing motion design and UI animations.
PNG with metadata
Sprite sheets animate frame-by-frame with configurable playback speed and looping controls.
PDF, DOC, DOCX
Documents are available for download. PDFs render a preview thumbnail in the attachment grid.
Media attached to posts can be reviewed and annotated by teammates using the review and annotation tools. Click any attachment to open it in the full-screen viewer, where you can leave pinned annotations directly on images, video frames, and 3D model views.
In addition to file attachments, posts can embed external content. Embeds render as interactive iframes within the post, letting teammates view external videos, prototypes, documents, and other web content without leaving Project Feed.
Add an embed by clicking the embed button in the composer toolbar and pasting a URL. Embeds can be reordered alongside attachments and removed at any time. Each post can have multiple embeds.
Paste a YouTube, Vimeo, or Loom URL to embed a video player directly in the post.
Embed Figma frames, Framer prototypes, or other design tool previews for inline review.
Any embeddable URL can be added. The iframe renders at a configurable aspect ratio within the post.
Drag and drop to reorder embeds relative to each other and to file attachments. Remove any embed with a single click.
Type @ anywhere in the post body to open the mention picker. Start typing a teammate’s name to filter the list, then press Enter or click to insert the mention. Mentioned users appear as highlighted inline chips in the published post.
When you mention someone, they receive a notification linking them directly to the post. Mentions work in both the post body and in comments, making it easy to loop people into a conversation.
Not ready to share yet? Save your post as a draft. Drafts are private — only you can see them. They appear in a dedicated “Drafts” section so you can come back and finish them later.
Drafts support the full editing experience: rich text, media attachments, embeds, and project assignment. When you’re ready, click Publish to share the draft with your team. You can also delete a draft if you decide not to publish it.
A draft is completely private and does not appear in the feed, search results, or project file listings. Once published, the post becomes visible to all members with access to its project. The publish timestamp is set to the moment you click Publish, not when the draft was originally created.
Posts can be edited after publishing. Click the three-dot menu on any post you authored and select Edit to reopen the composer with the existing content loaded. Make your changes and click Save to update the post in place.
Every edit creates a new version in the post’s version history. You can view previous versions to see what changed over time — this creates a transparent revision trail so your team always knows what was updated and when. An “edited” indicator appears on posts that have been modified after publishing.
Title, body text, media attachments (add, remove, reorder, rename), embeds, and project assignment. Every field is editable after publishing.
Each save creates a timestamped version. The version history shows who made the edit and when, giving your team a full audit trail of changes.
Every post supports emoji reactions and threaded comments, giving your team lightweight ways to acknowledge updates and dive deeper into discussions.
Click the reaction button below any post to open the emoji picker. Choose from the standard emoji set or your workspace’s custom reactions. Your most frequently used reactions appear in a quick-access bar below each post for one-click reacting.
Reactions are displayed as pills below the post content, showing the emoji and the count of users who reacted. Click an existing reaction pill to add your reaction (or remove it if you already reacted). Hover over a reaction to see who reacted.
Click the comment button or the comment count on a post to open the comment thread. Comments support rich text formatting and @mentions, just like post bodies. Type your comment, then press Enter or click Send to post it.
Comments are threaded — you can reply to any comment to start a nested conversation. This keeps discussions organized when multiple topics arise on the same post. Comment authors can edit or delete their own comments.
Pin important posts to keep them at the top of the feed, regardless of when they were published. Pinned posts display a pin icon and appear in a dedicated section above the chronological feed.
To pin a post, open the three-dot menu and select Pin to top. To unpin, open the same menu and select Unpin. Multiple posts can be pinned at the same time. Pinning and unpinning is available to workspace admins, owners, and the post author.
Use pinning for announcements, onboarding guides, weekly summaries, or any post your team should see first when they open the feed. Unpin posts once they’re no longer time-sensitive.
The three-dot menu on each post provides quick access to all available actions. The actions you see depend on your role — authors can manage their own posts, while admins and owners have additional controls.
Reopen the composer with the post’s content loaded. Available to the post author. Creates a new version on save.
Soft-deletes the post. The post is removed from the feed but can be restored. Available to the post author and workspace admins.
Restores a previously deleted post back to the feed. Available to the post author and workspace admins.
Toggles the pinned state. Pinned posts appear at the top of the feed. Available to the post author, admins, and owners.
Copies a direct link to the post to your clipboard. Share it in chat, email, or anywhere else to give teammates a shortcut to the post.
The feed is the primary view for browsing posts. It displays published posts in reverse chronological order, grouped by date, with pinned posts always at the top. The feed updates in real time — when a teammate publishes or edits a post, the change appears instantly via Convex live subscriptions.
The feed loads posts in batches as you scroll. Older posts are fetched automatically when you reach the bottom, keeping the initial page load fast.
Filter the feed by project to see only posts from a specific initiative. The project filter is available in the feed toolbar. You can also view a project-scoped feed from the project page.
New posts, edits, reactions, and comments appear instantly without refreshing. Convex subscriptions keep the feed in sync across all connected clients.
Each post card shows the author avatar, name, timestamp, project color dot, project name, title, a body preview, attachment thumbnails, reaction counts, and comment count.
Posts can be linked to tasks to create a two-way connection between what needs to be done and the update that documents the work. When viewing a post, linked tasks appear in a dedicated section. Click any linked task to navigate directly to its detail page.
This connection builds a paper trail — from a task, you can see all the posts that reference it, and from a post, you can see which tasks it addresses. Linking is managed from the task detail panel; see the Tasks documentation for details on linking.
A good title tells teammates what the update is about at a glance. “Lighting pass on forest environment — before & after” is far more useful than “Update” or “WIP.”
Attach screenshots, screen recordings, or 3D model files to make your progress tangible. Visual updates are easier to review and generate more useful feedback than text alone.
If you need feedback from a specific person, mention them in the post body or a comment. They’ll receive a notification and can respond directly in the thread.
For longer updates, save as a draft while you’re still working. Add media and refine the text over the course of the day, then publish when everything is ready.
When your post documents work related to a task, link them together. This creates a traceable connection from “what needs to be done” to “what was done.”
Instead of describing issues in text, open an attachment in the review viewer and pin annotations directly on the image, video frame, or 3D model. It’s faster and eliminates ambiguity.
Pin posts that contain critical information your team should see first — weekly summaries, milestone announcements, or onboarding guides. Unpin them once they’re no longer relevant to keep the pinned section clean.
Always assign your post to the relevant project. This keeps project feeds focused, makes filtering useful, and ensures media appears in the correct project’s Files tab.
Frequent, smaller updates are more valuable than infrequent large ones. They keep the team informed, create a richer history, and make it easier to spot issues early. Aim for at least one post per project per week.