Julien Calixte c84b4c5f97 robustness: split jetstream into own container, add cursor persistence
Jetstream was running backgrounded in the same container as the API server,
so crashes went undetected and Docker never restarted it. Now each process
runs as a separate docker-compose service with independent restart policies.

Also adds cursor persistence to SQLite (saved every 5s) so restarts resume
from where they left off, moves event destructuring inside try/catch blocks,
and adds global unhandled error/rejection handlers for crash visibility.
2026-02-17 01:17:42 +01:00
2026-02-08 23:35:57 +01:00
2026-02-09 22:34:20 +01:00
2026-02-09 22:01:32 +01:00
2026-02-09 10:28:12 +01:00

litenote-jetstream

Backend for Remanso, a blogging platform on the AT Protocol. Listens to the Jetstream firehose for space.remanso.note records and serves them via a REST API.

Prerequisites

Setup

# Initialize the SQLite database
deno task migrate

Development

# Run the Jetstream listener (with watch)
deno task jetstream

# Run the API server (with watch)
deno task server

Production

# Run both processes
deno task jetstream:prod & deno task server:prod

Docker

docker build -t litenote-jetstream .
docker run -p 8080:8080 -v litenote-data:/data litenote-jetstream

API

Endpoint Description
GET /notes?cursor=&limit= Paginated notes from all users
GET /:did/notes?cursor=&limit= Paginated notes for a specific DID

Environment Variables

Variable Default Description
SQLITE_PATH notes.db Path to the SQLite database file
Description
No description provided
Readme 89 KiB
Languages
TypeScript 98.3%
Dockerfile 1.7%