Comments and reactions
Every share carries a comments section and a row of reaction buttons below the body. Both are off-by-default-ish: they are present, but only signed-in users can post or react. Anonymous visitors see them and are redirected to sign in if they try to interact.
Comments
Comments are flat. There is no threading. Each comment shows:
- The author's username, linking to their profile.
- A relative timestamp (e.g. "3 hours ago"), with the ISO timestamp on hover.
- The body, rendered as plain text (URLs are auto-linked; nothing else is parsed).
- A reaction bar under the comment.
Posting
To post a comment, scroll below the share body, type into the textarea, click Comment. You must be signed in. An anonymous visitor clicking Comment is sent to /auth/google; after sign-in they land back on the share with the textarea preserved.
What you can and can't do
- Plain text only. Markdown, HTML, and other formatting are not rendered. URLs are auto-linked.
- No edits. Posted comments are immutable.
- No deletes. A comment cannot be removed by its author or by the share owner. This is intentional for the first cohort — comment moderation is on the roadmap but not yet built.
- No replies / threads. The flat list is the whole model.
Length
Comments are capped at 4,000 characters per body. Submitting a longer one returns a 400 with the validation error.
Reactions
Reactions are six emoji buttons, available on:
- The share itself, in a bar between the body and the comments section.
- Each comment, immediately below the comment body.
The six emojis are: 👍 👎 😄 🎉 😕 ❤️.
How it works
Click a button to add your reaction; click it again to remove it. The count on each button is the total across all signed-in users. The button has a pressed state when you have reacted with that emoji.
Reactions are signed-in only. Clicking a button as an anonymous visitor sends you to /auth/google with a return URL back to the share. After sign-in, the page reloads with you authed; click the button again.
A single user can react to a target with multiple emojis (e.g. both 👍 and ❤️), but only once per emoji per target.
Where reactions appear
- Share-level reactions — between the share body and the comments section. One bar per share.
- Comment-level reactions — under each comment. One bar per comment.
The same client-side handler drives both bars.
Disabling comments or reactions
There is no per-share toggle to disable comments or reactions today. Every share has both. A per-share opt-out is on the roadmap but not yet built.
Next steps
- Web dashboard — where comments and reactions appear in the owner's view.
- REST API —
POST /api/v1/shares/:id/comments,POST /api/v1/reactions.