A simple web app to schedule post to Bluesky
A web application to schedule posts on Bluesky. There are two versions of the app: Browser Mode and Self Hosted Mode.
Requirement: you need to create an app password in Bluesky.
The easiest way to use the app is by using the Browser Mode by clicking the link here.
You can also deploy the app to your own server and run it in self hosted mode.
Continue reading to learn about the different modes.
VITE_IMAGE_PROXY_URL
: https://allorigins.magic.coolify.nico.fyi/raw?url=
.VITE_METADATA_FETCHER_URL
: https://linkpreview.magic.coolify.nico.fyi/api/v1/preview?url=
.You can set different values for these variables. Read Website Card Embeds for more details.
POSTGRES_USER
: The username of the PostgreSQL database.POSTGRES_PASSWORD
: The password of the PostgreSQL database.POSTGRES_DB
: The name of the PostgreSQL database.DATABASE_URL
: The URL of the PostgreSQL database which will be used by the API server. This should be in the format postgresql://<username>:<password>@<host>:<port>/<database>
, where the <username>
, <password>
, and <database>
values must be the same as the ones used in the POSTGRES_USER
, POSTGRES_PASSWORD
, and POSTGRES_DB
environment variables.CRON_SECRET
: A secret key that is used to authenticate the cron endpoint.VITE_METADATA_FETCHER_URL
: The URL of the metadata fetcher service.VITE_IMAGE_PROXY_URL
: The URL of the image proxy service.VITE_API_URL
: The URL of the API server.The docker-compose-example.yml file sets default values for these environment variables. You must change them especially the POSTGRES_PASSWORD
and CRON_SECRET
if you want to use the app in production.
The app has the following components:
api
folder): This is the server that handles the scheduled posts and credentials. It connects to the PostgreSQL database and sends the scheduled posts to Bluesky.src
folder): This is the frontend of the app where user can schedule posts and view the scheduled posts. It connects to the API server to fetch the scheduled posts and credentials.A docker image of Bluesky Later is available on Docker Hub: nicnocquee/bluesky-later. You can create and run a container using the following command:
docker run --env-file .env -d -p 80:80 -p 3000:3000 nicnocquee/bluesky-later
Make sure you have the .env
file and set the environment variables accordingly.
You can also use the docker-compose-example.yml file provided in the repository to run the app in self hosted mode.
Bluesky unfortunately does not automatically generate a social card for the website when a user posts a link to a website via the API. The application needs to generate the social card manually. In this app, it uses the service specified in the VITE_METADATA_FETCHER_URL
environment variable to fetch the metadata of the website. And for the image of the card, it uses the service specified in the VITE_IMAGE_PROXY_URL
environment variable to fetch the image to work around the CORS issue. By default, the application uses
src
folder)api
folder)MIT
a collection of lightweight TypeScript packages for AT Protocol, the protocol powering Bluesky.
Use this repository to get started with your own Bluesky Labeler.
ATProto Feed Generator Starter Kit
AT Protocol Reference Implementation (TypeScript)
A dead simple client for subscribing to an ATProto Relay ("firehose").
A fully typed client for the Bluesky Jetstream (https://github.com/bluesky-social/jetstream) service.
Your Brand Here!
50K+ engaged viewers every month
Limited spots available!
📧 Contact us via email🦋 Contact us on Bluesky