Recipes

What you can build on GozWire

GozWire supplies membership, messages, threads, reactions, media, and moderation. Discovery feeds, votes, ranking, account authentication, and product UI remain host application concerns. These recipes match the public engine API.

direct

One-to-one messaging

createDirect is idempotent for a pair. Direct chats do not accept a retention policy write. Senders can use persistent, after-duration, or after-read when the type policy allows it. See conversations and messages.

group

Private groups

createGroup assigns owner to the creator. Additional users are members unless you add them as admin or moderator. Only owners and admins can add participants. Direct conversations cannot add participants. See groups.

channel

Slack-style or Discord-style channels

createChannel uses the same membership model. Access is membership-based. Workspace directories and channel browsers belong in your application. Default retention is persistent only until staff expand policy. See community.

forum

Reddit-style topics with nested comments

createForum plus messages.history with rootsOnly lists posts. messages.thread pages a reply tree. Upvotes, ranking, and subreddit discovery are not engine features. See channels, forums, and threads.

media

Images, files, audio, and video

Clients upload directly to S3-compatible storage after media.createUpload. messages.send stores object keys, not bytes. Audio and video skip the moderation pipeline. SVG is not allowed. See storage.

moderation

Held text and images

Send still commits in PostgreSQL first. Text and images can be held until the sidecar returns scores. textPolicy and imagePolicy in engine config decide allow, review, or block. See moderation.

push

Wake the client when the socket is gone

Optional Web Push, FCM HTTP v1, and APNs HTTP/2. Default push.enabled is false. A provider 2xx is acceptance, not device display. Missed events recover with messages.sync. See push.

retention

Disappearing messages

Expiration is a field on every message: persistent, after_duration, or after_read. Channel and forum default to persistent only. Integrators own who may change modes. See retention.