evbogue/apds
A personal data server for ANProto
{ "createdAt": "2024-11-30T19:39:23Z", "defaultBranch": "master", "description": "A personal data server for ANProto", "fullName": "evbogue/apds", "homepage": "https://apds.anproto.com", "language": "JavaScript", "name": "apds", "pushedAt": "2025-12-19T22:31:01Z", "stargazersCount": 5, "topics": [], "updatedAt": "2025-12-19T22:31:06Z", "url": "https://github.com/evbogue/apds"}A personal data server (pds) for ANProto https://anproto.com/
Try it at https://apds.anproto.com/
MIT
Web Push (server)
Section titled “Web Push (server)”This server exposes minimal Web Push subscription + notification plumbing:
GET /push/vapidPublicKeyreturns{ publicKey }(base64url) forpushManager.subscribe({ applicationServerKey }).POST /push/subscribestores a browser PushSubscription (JSON body).POST /push/testtriggers a test push to all stored subscriptions.
When a new ANProto message is added via WebSocket, the server sends a push with payload { type: "latest" } so the service worker can wake up and fetch /latest.
By default it sends { type: "anproto", sigs: ["...==", ...] } (batched + throttled), so the service worker can process specific messages and/or still fetch /latest as a fallback.
Notes:
- The server writes
subscriptions.jsonandvapid.jsonlocally. - Set
VAPID_SUBJECT(e.g.mailto:you@example.comorhttps://your.site) if you don’t want the default.