1.7 KiB
1.7 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Project Overview
litenote-jetstream is the backend for Litenote, a blogging platform built on the AT Protocol (Bluesky ecosystem). It has two processes:
- Jetstream listener (
jetstream.ts) — Subscribes to the AT Protocol firehose via@skyware/jetstream, filtering forspace.litenote.noterecords. On create/update events, it upserts notes into a local SQLite database. - HTTP API server (
server.ts) — An Oak (Deno HTTP framework) server on port 8080 that exposes read-only endpoints to query stored notes.
Both processes share the same SQLite database (src/data/db.ts).
Commands
# Run jetstream listener (dev, with watch)
deno task jetstream
# Run API server (dev, with watch)
deno task server
# Run both for production (as in Docker)
deno task jetstream:prod & deno task server:prod
# Run database migration
deno task migrate
# Lint
deno lint
# Format
deno fmt
Architecture
- Runtime: Deno (not Bun, despite the README). Uses
deno.jsonfor task definitions and import maps. - Database: SQLite via
https://deno.land/x/sqlite/mod.ts. DB path is configurable viaSQLITE_PATHenv var, defaults tonotes.db. - Note schema: Defined as an AT Protocol lexicon in
lexicons/space/litenote/note.json. Notes havetitle, optionalimages(blob refs),publishedAt, andcreatedAt. Primary key is(did, rkey). - API endpoints:
GET /notes?cursor=&limit=— paginated notes (all users)GET /:did/notes?cursor=&limit=— paginated notes for a specific DID
- Pagination: cursor-based using
rkey, descending order.