Skip to content

ThinAppViewCore

github-actions[bot] edited this page Aug 16, 2026 · 5 revisions

ThinAppViewCore

Shared Swift package for the Thin AppView read index — used by services/appview (read routes, sidebar projection) and Charybdis at services/appview-worker (Jetstream ingestion and durable-inbox projection, RSS polling, proactive backfill).

Package: packages/swift/ThinAppViewCore
Architecture: Thin-AppView

Responsibilities

Component Role
ThinAppViewIndexer Map firehose/repo commits → IndexedContentItem
RenderFieldExtractor Extract list-row fields from standard.site records
AppViewProjectionCacheStore Stale-first sidebar/unread/first-page snapshots, with SQLite, Postgres, or Redis implementations
SQLiteThinAppViewStore / PostgresThinAppViewStore Equivalent index stores; hosted services use Postgres, while SQLite remains useful in package tests
ThinAppViewWorkerRuntime Jetstream ingestion and durable-inbox projection, Skyreader RSS polling, proactive PDS backfill, and TTL cleanup
FirehoseSubscriber Jetstream WebSocket relay consumer and cursor recovery
RssFeedIdentity / RSS ingest helpers Normalize feed/article identities and avoid duplicate rows across polls

The package also owns unread filtering, publication-scope aliases, materialized counter updates, viewer-feed membership, historical Tap recovery state, and cache invalidation. Redis remains an optional disposable side-cache; durable index and recovery state stays in Postgres. See Redis for the current hosted selection and Development-first change discipline.

Tests

cd packages/swift/ThinAppViewCore
swift test

Runs explicitly in the CI charybdis job. Redis client behavior is tested separately in packages/swift/SocialWireRedis, including a live Redis service in CI.

Related

Clone this wiki locally