rebranding to Remanso
This commit is contained in:
@@ -4,9 +4,9 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
|
|||||||
|
|
||||||
## Project Overview
|
## Project Overview
|
||||||
|
|
||||||
litenote-jetstream is the backend for Litenote, a blogging platform built on the AT Protocol (Bluesky ecosystem). It has two processes:
|
litenote-jetstream is the backend for Remanso, a blogging platform built on the AT Protocol (Bluesky ecosystem). It has two processes:
|
||||||
|
|
||||||
1. **Jetstream listener** (`jetstream.ts`) — Subscribes to the AT Protocol firehose via `@skyware/jetstream`, filtering for `space.litenote.note` records. On create/update events, it upserts notes into a local SQLite database.
|
1. **Jetstream listener** (`jetstream.ts`) — Subscribes to the AT Protocol firehose via `@skyware/jetstream`, filtering for `space.remanso.note` records. On create/update events, it upserts notes into a local SQLite database.
|
||||||
2. **HTTP API server** (`server.ts`) — An Oak (Deno HTTP framework) server on port 8080 that exposes read-only endpoints to query stored notes.
|
2. **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`).
|
Both processes share the same SQLite database (`src/data/db.ts`).
|
||||||
@@ -37,7 +37,7 @@ deno fmt
|
|||||||
|
|
||||||
- **Runtime**: Deno (not Bun, despite the README). Uses `deno.json` for task definitions and import maps.
|
- **Runtime**: Deno (not Bun, despite the README). Uses `deno.json` for task definitions and import maps.
|
||||||
- **Database**: SQLite via `https://deno.land/x/sqlite/mod.ts`. DB path is configurable via `SQLITE_PATH` env var, defaults to `notes.db`.
|
- **Database**: SQLite via `https://deno.land/x/sqlite/mod.ts`. DB path is configurable via `SQLITE_PATH` env var, defaults to `notes.db`.
|
||||||
- **Note schema**: Defined as an AT Protocol lexicon in `lexicons/space/litenote/note.json`. Notes have `title`, optional `images` (blob refs), `publishedAt`, and `createdAt`. Primary key is `(did, rkey)`.
|
- **Note schema**: Defined as an AT Protocol lexicon in `lexicons/space/remanso/note.json`. Notes have `title`, optional `images` (blob refs), `publishedAt`, and `createdAt`. Primary key is `(did, rkey)`.
|
||||||
- **API endpoints**:
|
- **API endpoints**:
|
||||||
- `GET /notes?cursor=&limit=` — paginated notes (all users)
|
- `GET /notes?cursor=&limit=` — paginated notes (all users)
|
||||||
- `GET /:did/notes?cursor=&limit=` — paginated notes for a specific DID
|
- `GET /:did/notes?cursor=&limit=` — paginated notes for a specific DID
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# litenote-jetstream
|
# litenote-jetstream
|
||||||
|
|
||||||
Backend for [Litenote](https://litenote.space), a blogging platform on the AT Protocol. Listens to the Jetstream firehose for `space.litenote.note` records and serves them via a REST API.
|
Backend for [Remanso](https://remanso.space), 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
|
## Prerequisites
|
||||||
|
|
||||||
|
|||||||
@@ -3,10 +3,10 @@ import { deleteNote, upsertNote } from "./src/data/db.ts";
|
|||||||
import { Note } from "./src/data/note.ts";
|
import { Note } from "./src/data/note.ts";
|
||||||
|
|
||||||
const jetstream = new Jetstream({
|
const jetstream = new Jetstream({
|
||||||
wantedCollections: ["space.litenote.note"],
|
wantedCollections: ["space.remanso.note"],
|
||||||
});
|
});
|
||||||
|
|
||||||
jetstream.onCreate("space.litenote.note", (event) => {
|
jetstream.onCreate("space.remanso.note", (event) => {
|
||||||
const { did, commit: { rkey, record } } = event;
|
const { did, commit: { rkey, record } } = event;
|
||||||
const note = record as unknown as Omit<Note, "did" | "rkey">
|
const note = record as unknown as Omit<Note, "did" | "rkey">
|
||||||
console.log(`[jetstream] create ${did}/${rkey}: ${note.title}`);
|
console.log(`[jetstream] create ${did}/${rkey}: ${note.title}`);
|
||||||
@@ -18,7 +18,7 @@ jetstream.onCreate("space.litenote.note", (event) => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
jetstream.onUpdate("space.litenote.note", (event) => {
|
jetstream.onUpdate("space.remanso.note", (event) => {
|
||||||
const { did, commit: { rkey, record } } = event;
|
const { did, commit: { rkey, record } } = event;
|
||||||
const note = record as unknown as Omit<Note, "did" | "rkey">
|
const note = record as unknown as Omit<Note, "did" | "rkey">
|
||||||
console.log(`[jetstream] update ${did}/${rkey}: ${note.title}`);
|
console.log(`[jetstream] update ${did}/${rkey}: ${note.title}`);
|
||||||
@@ -30,7 +30,7 @@ jetstream.onUpdate("space.litenote.note", (event) => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
jetstream.onDelete("space.litenote.note", (event) => {
|
jetstream.onDelete("space.remanso.note", (event) => {
|
||||||
const { did, commit: { rkey } } = event;
|
const { did, commit: { rkey } } = event;
|
||||||
console.log(`[jetstream] delete ${did}/${rkey}`);
|
console.log(`[jetstream] delete ${did}/${rkey}`);
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"lexicon": 1,
|
"lexicon": 1,
|
||||||
"id": "space.litenote.note",
|
"id": "space.remanso.note",
|
||||||
"defs": {
|
"defs": {
|
||||||
"main": {
|
"main": {
|
||||||
"type": "record",
|
"type": "record",
|
||||||
Reference in New Issue
Block a user