Commit Graph

21 Commits

Author SHA1 Message Date
Julien Calixte
06ac3142a8 feat: add POST /notes/feed endpoint for multi-DID filtering 2026-03-10 15:51:10 +01:00
Julien Calixte
8ff1e4acaa feat: get language in server too 2026-03-01 18:49:43 +01:00
Julien Calixte
6374566316 feat: add language support 2026-03-01 18:34:17 +01:00
Julien Calixte
29e8a63cb3 refactor: rename listed → discoverable on note
Pure rename — no behavioral change. "discoverable" more clearly
communicates that the field controls whether a note can be found
by others in public listings.
2026-02-25 23:20:37 +01:00
Julien Calixte
f39f62f1c7 feat: add listed field to note for public listing visibility
Notes with listed=false are filtered out from all GET /notes queries.
The field defaults to true so existing and new notes without it remain visible.
Migration handles existing databases with ALTER TABLE ADD COLUMN.
2026-02-25 23:03:00 +01:00
Julien Calixte
62f981dd93 feat: fire webhooks on jetstream events, cap at 10 per DID
- db.ts: getWebhooksByDid returns the 10 most recent subscriptions (ORDER BY id DESC LIMIT 10)
- jetstream.ts: fireWebhooks fans out to registered URLs via Promise.allSettled after each create/update/delete event
2026-02-25 22:51:48 +01:00
Julien Calixte
373b7a6777 feat: add webhook_subscription table and CRUD endpoints
- Migration: CREATE TABLE webhook_subscription (id, did, method, url) with index on did
- db.ts: addWebhookSubscription and deleteWebhooksByDid helpers
- server.ts: POST /:did/webhooks (201) and DELETE /:did/webhooks (204)
2026-02-25 22:46:45 +01:00
Julien Calixte
c9edd63e76 refacto: use @db/sqlite for better usage 2026-02-17 15:32:05 +01:00
Julien Calixte
1c7a4d3a11 fix: remove db-journal from git 2026-02-17 14:07:09 +01:00
Julien Calixte
8e6ac4faa9 fix: add multiple access to db 2026-02-17 14:02:39 +01:00
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
Julien Calixte
d950d5cb48 logs: add log for upserts 2026-02-14 22:47:06 +01:00
Julien Calixte
a30c1ce43e fix: default dates to now 2026-02-13 20:26:15 +01:00
Julien Calixte
de92a554ee feat: handle note deletion from jetstream 2026-02-10 17:43:00 +01:00
Julien Calixte
59b3db29c3 fix: remove one value in upsert note 2026-02-09 23:02:16 +01:00
Julien Calixte
e46714230f prune: remove content prop 2026-02-09 22:12:58 +01:00
Julien Calixte
6e22fd2f56 feat: add endpoints to get notes 2026-02-09 14:07:17 +01:00
Julien Calixte
ed157cb4df lint: format and lint 2026-02-09 12:03:27 +01:00
Julien Calixte
ee8421c773 feat: add Dockerfile and GitLab CI/CD pipeline
Add Docker containerization with Deno and persistent SQLite volume.
Add GitLab CI pipeline with build and deploy stages.
Use SQLITE_PATH env var for configurable DB location.
2026-02-09 00:30:21 +01:00
Julien Calixte
6988450446 feat: upsert is easier 2026-02-09 00:17:38 +01:00
Julien Calixte
2312240d10 feat: init db 2026-02-08 23:26:52 +01:00