* pseudocode for sending notification to user * add notification push token table * lexicon codegen * `pds` and `api` codegen * update lexicon * add simple function to `putNotificationPushToken` into `notification_push_token` table * reorgnaize imports * add unspecced `putNotificationPushToken` to pds * add `notification-push-tokens` table to PDS * check if token exists before adding it to db * add endpoint and appId to PDS table * setup notification server * fix logic for inserting token into db * fix NotificationServer methods by making them static * fix merge conflicts * add comments on how sending ntoifications work * remove dead code * move notifServer to AppContext * refactor code to handle notif sending in `Indexer` service * add additional data when sending notifs * clean up code * move notif logic to indexer * add `appId` and `endpoint` optional params to putNotificationPushToken * clone notification code to AppView * add endpoint to register push token with app view * disable pds and enable app view notification server * clean up code * simply logic to check if a token already exists * remove NotificationServer from PDS * remove notification-push-token table from PDS * remove `putNotificationPushToken` endpoint * clean up code * let `axios` throw error if `gorush` has an error * let `kysely` throw error if notif cannot be registered by client * rename `registerPushNotificationEndpoint` to `registerPushNotifications` * delete `putNotificationPushToken` from AppView * rename putPushNotificationToken to registerPushNotification * remove dead notification code from pds * remove sanitizeDisplayName from NotificationSever * move `pushNotificationEndpoint` to config * temp add `pushNotificationEndpoint` to dev-env setup * remove example test from feed-generation.test.ts * add test for registerPushNotification and clean up error handling * move notifications test to its own file * add test for NotificationServer to check if tokens are retrieved correctly * remove unused functions from NotificationServer * add additional tests for NotificationServer * add return type to getNotificationDisplayAttributes function * remove unnecessary comments * remove dead NotificationServer code from PDS * clean up code to prepareNotifsToSend * put sending notifications as part of the backgroundQueue * log instead of throwing error if notification attributes don't exist * remove logs * add more tests to `notification-server.test.ts` * show replied with text for reply notifs * better error handling when sending notifications via backgroundQueue * add rate limit and batching to sending notifications * add comments to NotificationServer * merge with main * use redis for rate limiting instead of normal rate limits * move `notificationBatchSize` into config * usePrimary db in test * hoist push notif migration to present, update model to remove endpoint * update push notif lexicon * pare down lex for unregistering push * helpers for working with service endpoints from did doc * service-authed register/unregister push notifs * add well-known endpoint to appview * update bsky notif service tests * fix to batching logic, misc tidy * batch display notifications * colocate all notification sending logic * tidy tests * remove unregister token for now * fix registerPush lexicon, make a procedure * fix registerPush impl, test pds proxy to notif service * fix tests, make notif server optional when not configured * fix notif server config for bsky app service * move notif server rate limiting in-mem for now, add sending retry * codegen tidy * only push notifs on commit * build * fix notif rate limiter check * send notifs from users w/o a profile * remove build --------- Co-authored-by: dholms <dtholmgren@gmail.com> Co-authored-by: Devin Ivy <devinivy@gmail.com>
AT Protocol (Authenticated Transfer Protocol)
This is a working repository for the AT Protocol, aka the Authenticated Transfer Protocol.
⚠️ This is not production-ready software. This project is in active development ⚠️
ℹ️ About this project
To learn more about atproto, see:
- Protocol Documentation
- Overview Guide 👈 Good place to start
- The Blogpost on self-authenticating data structures
Rules & Guidelines
While we do accept contributions, we prioritize high-quality issues and pull requests. Adhering to the below guidelines will ensure a more timely review.
Rules:
- We may not respond to your issue or PR.
- We may close an issue or PR without much feedback.
- We may lock discussions or contributions if our attention is getting DDOSed.
Guidelines:
- Check for existing issues before filing a new one, please.
- Open an issue and give some time for discussion before submitting a PR.
- If submitting a PR that includes a lexicon change, please get sign off on the lexicon change before doing the implementation.
- Issues are for bugs & feature requests related to the TypeScript implementation of atproto and related services. For high-level discussions, please you the Discussion Forum. For client issues, please use the relevant social-app repo
- Stay away from PRs that:
- Refactor large parts of the codebase
- Add entirely new features without prior discussion
- Change the tooling or frameworks used without prior discussion
- Introduce new unnecessary dependencies
Remember, we serve a wide community of users. Our day-to-day involves us constantly asking "which top priority is our top priority." If you submit well-written PRs that solve problems concisely, that's an awesome contribution. Otherwise, as much as we'd love to accept your ideas and contributions, we really don't have the bandwidth.
Are you a developer interested in building on atproto?
Bluesky is an open social network built on the AT Protocol, a flexible technology that will never lock developers out of the ecosystems that they help build. With atproto, third-party can be as seamless as first-party through custom feeds, federated services, clients, and more.
If you're a developer interested in building on atproto, we'd love to email you a Bluesky invite code. Simply share your GitHub (or similar) profile with us via this form.
Security disclosures
If you discover any security issues, please send an email to security@bsky.app. The email is automatically CCed to the entire team, and we'll respond promptly. See SECURITY.md for more info.
License
MIT License
Copyright (c) 2023 Bluesky PBLLC