Bosca / Feeds

Bosca Feeds

RSS in,
for-you out.

Feeds pulls RSS, Atom, and JSON Feed sources into the platform on a schedule — deduplicated, normalized to rich text, and served back as each reader's Following and For-you feeds.

How it works

Fetch, ingest, serve.

01

Register a source

Point at an RSS, Atom, or JSON Feed endpoint, set a cron schedule and outbound auth, and enable it. Managed sources serve everyone; user sources belong to one profile.

02

Fetch & ingest

Each fetch is a conditional GET — an unchanged feed answers 304 and no-ops. New entries become content records deduplicated by GUID; bodies are normalized to rich text with the original HTML preserved.

03

Subscribe & serve

Readers subscribe to sources and get a chronological Following feed. The For-you feed is ranked by the Recommendations subsystem from the same ingested content.

What makes it powerful

A real ingester. And a serving surface.

Everything you expect from a feed reader's backend — formats, schedules, dedup — plus what you only get when ingested items are first-class platform content.

Three formats

RSS 2.0, Atom, and JSON Feed 1.1 — with content:encoded, dc:creator, and media extensions read when present.

Per-source scheduling

Every enabled source gets its own cron-scheduled fetch job; editing reschedules it, disabling removes it.

Conditional fetches

ETag and Last-Modified validators ride each request — an unchanged feed answers 304 Not Modified and the fetch no-ops.

Idempotent ingestion

Items dedupe by their external GUID: a known entry is updated in place, never duplicated, however often you re-fetch.

Normalized bodies

Raw HTML becomes the platform's rich-text document; the original source HTML is preserved as a supplementary attachment.

Featured images

The most prominent image — media tags, enclosures, or the first image in the body — is imported and linked to the item.

Authenticated origins

Outbound auth for protected feeds — basic, bearer, or API key — with the secret stored write-only.

A personalization seam

Items land as ordinary platform content, firing the standard lifecycle events Recommendations ranks the For-you feed from.

Content-native by design

Ingested items are real content

Feeds doesn't build a parallel item store. Every ingested entry is a content record in the same model your documents and media use — so everything the platform does for content, it does for feed items.

  • Each item is a content Metadata record carrying source attribution — the source id, the external GUID, and the article link.
  • Ingestion fires the standard content lifecycle events; the Recommendations subsystem reacts to those to rank the For-you feed — no feeds-specific wiring.
  • Sources reuse the content Source entity — the same one every Metadata record's attribution points at.
  • The serving surface is a plain GraphQL namespace — Following, For-you, and item-context recommendations — built to power reader clients.
connected
Item → Metadata · source Example News
Ready → standard lifecycle event → recommendable
image.featured → imported into storage
forYou → ranked per reader

Feeds ship with Bosca

The outside web, flowing into the same platform that stores, ranks, and serves your own content. The docs cover sources, ingestion, and serving end to end.