A containerised service that provides real-time push notifications for Bluesky posts, officially hosted on skynotify.co and easily self-hostable.
- Install Docker and Docker Compose
- Clone or download the repository
- Create a Firebase project with Cloud Messaging turned on
- Copy
example.env
to.env
and fill in the empty values - Place Firebase Admin SDK credentials in
server/firebase.json
- Place Firebase Web SDK credentials in
app/firebase.ts
- Set a subscription limit in
app/config.ts
- Run
docker compose build
- Run
docker compose up -d
The service will now be running in the background. To make the service
accessible from the outside on port 80, the following can be added to app
in
docker-compose.yml
:
ports:
- "80:3000"
For monitoring and statistics, InfluxDB has been integrated into the Compose file and Go application. The amount and types of notifications sent and the amount of operations processed from the Bluesky firehose are stored for displaying in a graph. This latter is also used to keep track of the last processed commit, which allows for the application to be restarted without dropping notifications.
All contributions, issues and pull requests are welcome, but I can't guarantee that I'll have the time to keep up with everything. To start contributing, you'll need to install the following:
- Go
- Node.js
- Node.js 23 is currently not supported
- pnpm
Copyright (C) 2024 Jochem-W
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.