# Examples

The example apps show CalmLens in complete, small applications: what to submit for moderation, when content may be published and how later decisions take it down. Each one also runs in a demo mode without API keys.

## Calmgram live demo

Calmgram is a photo sharing app that moderates photos, captions, comments and bios with the [JavaScript SDK](/docs/sdk/javascript). Try it at [example.calmlens.com](https://example.calmlens.com).

- Photos stay private to their author while they are checked, then appear in the feed, resized and served by the CalmLens CDN.
- Captions, comments and bios are checked before they are saved. Rejected text is never shown, and the author sees why.
- Content your policy flags for review is published and added to a moderation queue for a person to check.

## More examples

Each of these apps shows a different use case, built with a different SDK.

### Calmboard: link sharing (Python)

A community link board built with the [Python SDK](/docs/sdk/python). Members share a link with a short note. The note is moderated straight away, and the link is submitted as a [remote URL](/docs/guides/uploading-assets#remote-url-upload): CalmLens fetches the page and moderates it, including the text and images it finds there. The link becomes clickable only once the page is approved. For a rejected or flagged page, the board explains the decision from the [moderation report](/docs/guides/moderation-reports) and the page's child assets, and members can delete a link's CalmLens record.

### Calmclips: voice notes and video clips (Go)

A voice note and video clip app built with the [Go SDK](/docs/sdk/go). Clips are uploaded privately, larger ones in [sequential parts](/docs/guides/multipart-uploads), and moderated in the background with [audio and video moderation](/docs/guides/audio-and-video). The app shows the report's timeline of clip segments and what was found in each, plays approved clips through short-lived signed URLs, and reads decisions by polling and from verified [webhooks](/docs/guides/webhooks). Failed clips can be retried, and owners can delete their clips.

### Calmthread: replies held for review (Ruby)

A pre-moderated discussion thread built with the [Ruby SDK](/docs/sdk/ruby). Each reply is submitted with a per-asset policy override that hides flagged content while keeping it, so clean replies publish at once and anything your [policy](/docs/guides/moderation-policies) flags is held, unseen, until a person approves or rejects it in the portal. The app follows those decisions through the [events feed](/docs/api/events) and verified webhooks, and removes the stored text of rejected replies while keeping their records and reports.

### Calmmarket: text inside listing photos (Java)

A marketplace built with the [Java SDK](/docs/sdk/java) for listings whose important text is often inside the photos. Photos are moderated with [OCR](/docs/guides/ocr), so text written on an image is extracted into a child asset and checked like any other text. The listing page shows whether the picture or the text in it led to a decision, and a listing goes live only when its title, description and every photo are approved. Withdrawn listings have their photos' content removed while their records and reports stay.

### Calmlibrary: private media library (Rust)

A private team media library built with the [Rust SDK](/docs/sdk/rust). Images are [organised](/docs/guides/organising-assets) into folders with metadata and external IDs, found with [natural-language search](/docs/guides/search), and delivered as thumbnails and downloads through [lenses](/docs/guides/lenses) and short-lived signed URLs once they are approved. Files can be removed while their records stay, or deleted entirely.
