Post Detail Screen
Location: apps/mobile/src/app/(main)/content/
The post detail screen renders the full post with threaded replies, tagged comments, co-author attribution, emoji reactions (EmojiPay), boosts, and series navigation.
Structure
PostDetailScreen
├─ PostHeader (author, persona, interest, depth, journalism badge)
├─ PostBody (title + body markdown or media)
├─ PostMeta (created_at, visibility, boost indicator)
├─ CoAuthorStrip (accepted co-authors with split percentages)
├─ EmojiPayBar (emotion breakdown for this post)
├─ ActionBar (react, reply, bookmark, share, boost, emoji-pay)
├─ SeriesNav (prev/next if post belongs to a series)
└─ ReplySection
├─ ReplyTab[All | Reactions | Criticisms | Contributions]
└─ ReplyList (threaded, kind-filtered)API Calls
| Data | Endpoint |
|---|---|
| Post detail | GET /posts/:id |
| Replies | GET /posts/:id/replies?kind=<kind>&cursor=<id> |
| EmojiPay breakdown | GET /economy/posts/:id/breakdown |
| Series items | GET /series/:seriesId/items |
| React | POST /posts/:id/react { kind } |
| Bookmark | POST /posts/:id/bookmark |
| Reply | POST /posts/:id/replies { body, kind } |
| Send EmojiPay | POST /economy/pay { receiverId, postId, emotion, tier } |
| Boost | POST /economy/posts/:id/boost { tier } |
Tagged Comments (Reply Kinds)
| Kind | Rep Reward | Description |
|---|---|---|
reply | +1 | Plain reply |
reaction | 0 | Short emotional response |
criticism | +2 | Counter-argument (50–300 chars enforced) |
contribution | +5 | Substantive addition (≥ 100 chars) |
The reply composer shows kind selector chips. criticism requires 50+ chars and shows a counter.
Co-Author Attribution
If the post has accepted PostCoAuthor rows, a strip shows each co-author with their splitShare %. When EmojiPay is sent to this post, mana is split atomically at send time:
- Primary author:
amount - sum(coAuthorAmounts) - Each co-author:
floor(amount * splitShare / 100)
EmojiPay Bar
Displays the breakdown of all payments on this post:
Love: 45 mana | Awe: 12 mana | Insight: 8 mana | ...Tap an emotion opens the EmojiPay wheel with 6 tier options.
EmojiPay Wheel
A circular animated picker (Reanimated):
- 8 emotion segments (Love/Awe/Joy/Curiosity/Gratitude/Insight/Calm/Courage)
- Drag to select emotion
- 6 tier buttons appear after selection (Spark=1/Wave=3/Storm=10/Surge=25/Tempest=50/Nova=100)
- Tiers ≥ 2 (Storm+) require minimum reputation in post's interest
- Confirm →
POST /economy/pay
Boost UI
Available to post author only when emoji-pay feature flag is on:
- Tier 1: 10 mana → ×1.5 boost for 24h
- Tier 2: 25 mana → ×2.0 boost for 48h
- Shows active boost timer and score multiplier
Series Navigation
If the post belongs to a PostSeries, a prev/next nav bar appears at the bottom:
← Part 2: Previous title Part 4: Next title →Also shows series title + current position (e.g., "Part 3 of 7").
Tap "Follow series" → POST /series/:id/follow.
Post Actions (ActionBar)
| Action | Icon | Notes |
|---|---|---|
| React (heart) | ❤️ | POST /posts/:id/react { kind: 'heart' } |
| Reply | 💬 | Opens reply composer bottom sheet |
| Bookmark | 🔖 | POST /posts/:id/bookmark |
| Share | ↗️ | System share sheet + POST /posts/:id/repost |
| Boost | ⚡ | Author only; opens boost tier picker |
| EmojiPay | ✨ | Opens emotion wheel |
| Mute | 🔇 | POST /posts/:id/mute |
| Report | 🚩 | Opens report form |