You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Sub-issue of #99. Deliver the federated content sharing platform scenario as a paired example repository and fedify.dev tutorial, as set in #99 (comment).
Scenario
A federated image-sharing platform, Pixelfed-like in shape. Users sign up for accounts, upload images with short captions, follow remote accounts, and see an image-focused timeline. The didactic centerpiece is Announce (boost) semantics: how to model, emit, receive, and render boosted content in a Fedify-based service.
Image posts are represented as Create(Note) with attachment: [Image, ...], matching the convention that Mastodon and Pixelfed already use for interoperability. The example focuses on images; short video is noted as a viable extension but is not implemented here, since transcoding and adaptive-bitrate concerns quickly dominate the federation-learning value.
Stack
Framework: Nuxt (Nitro server routes for ActivityPub)
Integration package: @fedify/nuxt
Runtime: Node.js
ORM: Drizzle ORM
Database: PostgreSQL
Media storage: local filesystem for the first pass. The tutorial notes how to swap in S3-compatible object storage for production use.
Per-user actor (Person) with avatar (icon) and optional header (image). WebFinger, persisted key pair per user, followers and following collections.
Image upload and post: accepts one or more image files, optional caption, persists files to local storage, and federates to followers as Create(Note) with attachment: [Image]. Image objects carry url, mediaType, and width / height.
Edit / delete own posts: Update(Note) and Delete(Note) with Tombstone.
Boost (Announce) and unboost (Undo(Announce)) of any visible post.
Likes (Like / Undo(Like)) on any visible post.
Follow / unfollow remote or local actors.
Inbox handlers: Follow (auto-accept), Undo(Follow), Create(Note) (including attached media from remote servers), Announce, Undo(Announce), Like, Undo(Like), Delete(Note), Update(Note).
Home timeline: own posts, followed accounts' posts, and boosts from followed accounts (boosted posts clearly attributed to the original author).
Local timeline: public posts authored on this instance.
Deliverables
Create fedify-dev/nuxt-content-sharing under the fedify-dev org. Full runnable Nuxt app implementing the feature checklist above.
Write docs/tutorial/content-sharing.md on fedify.dev as a step-by-step walkthrough of building the example from scratch. The tutorial should cover @fedify/nuxt setup in Nitro, attaching images to Create(Note), Announce emission and inbox handling, and rendering boosted content in a timeline.
Add the new tutorial to TUTORIAL.items in docs/.vitepress/config.mts.
README of fedify-dev/nuxt-content-sharing links back to the tutorial.
Sub-issue of #99. Deliver the federated content sharing platform scenario as a paired example repository and fedify.dev tutorial, as set in #99 (comment).
Scenario
A federated image-sharing platform, Pixelfed-like in shape. Users sign up for accounts, upload images with short captions, follow remote accounts, and see an image-focused timeline. The didactic centerpiece is
Announce(boost) semantics: how to model, emit, receive, and render boosted content in a Fedify-based service.Image posts are represented as
Create(Note)withattachment: [Image, ...], matching the convention that Mastodon and Pixelfed already use for interoperability. The example focuses on images; short video is noted as a viable extension but is not implemented here, since transcoding and adaptive-bitrate concerns quickly dominate the federation-learning value.Stack
@fedify/nuxtFeature checklist
Person) with avatar (icon) and optional header (image). WebFinger, persisted key pair per user, followers and following collections.Create(Note)withattachment: [Image]. Image objects carryurl,mediaType, andwidth/height.Update(Note)andDelete(Note)withTombstone.Announce) and unboost (Undo(Announce)) of any visible post.Like/Undo(Like)) on any visible post.Follow(auto-accept),Undo(Follow),Create(Note)(including attached media from remote servers),Announce,Undo(Announce),Like,Undo(Like),Delete(Note),Update(Note).Deliverables
fedify-dev/nuxt-content-sharingunder thefedify-devorg. Full runnable Nuxt app implementing the feature checklist above.@fedify/nuxtsetup in Nitro, attaching images toCreate(Note),Announceemission and inbox handling, and rendering boosted content in a timeline.TUTORIAL.itemsin docs/.vitepress/config.mts.fedify-dev/nuxt-content-sharinglinks back to the tutorial.@fedify/nuxtintegration docs.Out of scope
inReplyTois accepted from remote servers and rendered, but nested threads are not a focus.