Threadr
Threadr is a small (#workinprogress) web application that helps users of micro-blogging platforms to write great threads and allows them to crosspost in one click their content to Bluesky, Mastodon and Twitter/X.
Installation
For now, Threadr only works in localhost.
1/ Get the project sources
$ git clone [email protected]:jbuget/threadr-app.git && cd threadr-app
2/ Copy the .env.sample
file into a new .env
file
You previously must generate, get and report your access keys for Twitter/X (new developer project), Mastodon (new app) and Bluesky (your user credentials).
3/ Run the Docker compose service minio
(required to upload media files into platforms)
$ docker compose -d minio
4/ Configure your MinIO instance
MinIO console is accessible on localhost:9001 (credentials in .env
file, cf. MINIO_ROOT_USER
and MINIO_ROOT_PASSWORD
)
Create a bucket (ex: “threadr-app” in .env.sample
).
In the settings, configure MinIO region (ex: “eu-fr-1” in .env.sample
).
⚠️ It is recommanded to declare a custom policy with dedicacted path in
readonly
acces for anonymous visitors
5/ Run Threadr locally
$ npm install
$ npm run dev -- -o
6/ ? Enjoy Threadr at localhost:3000!
Configuration
All configuration option are set in the .env
file.
Editing threads, messages and media
DISPLAYING_NAME
: string
The name displayed on the header of each message in the Editor.
Publishing on Bluesky
BLUESKY_ENABLED
: boolean
Activate or deactivate posting on Bluesky platform.
BLUESKY_URL
: URL
Bluesky is based on the Authenticated Transfer Protocol.
Today, Bluesky API endpoint URL is https://bsky.social
but maybe one day it will be a different one.
BLUESKY_IDENTIFIER
: string
The username of the Bluesky publisher account.
BLUESKY_PASSWORD
: string
The password of the Bluesky publisher account.
Publishing on Mastodon
MASTODON_ENABLED
: boolean
Activate or deactivate posting on Mastodon platform.
MASTODON_URL
: URL
The Mastodon instance URL.Check that the instance allows API.
MASTODON_ACCESS_TOKEN
: string
The token of the Mastodon publisher app.
Publishing on Twitter
TWITTER_ENABLED
: boolean
Activate or deactivate posting on Twitter platform.
cf. the official Twitter documentation about how to generate tokens.
TWITTER_CONSUMER_KEY
: string
The Twitter app Consumer Key.
TWITTER_CONSUMER_SECRET
: string
The Twitter app Consumer Secret.
TWITTER_ACCESS_TOKEN
: string
Twitter app’s authentication access token.
cf. OAuth 2.0 Authorization Code
TWITTER_ACCESS_SECRET
: string
Twitter app’s authentication access secret.
Uploading media files
MINIO_ENDPOINT
: URL
The endpoint URL of MinIO/S3 server on which temporarily upload media files.
MINIO_REGION
: string
The region of the MinIO/S3 server.
MINIO_BUCKET_NAME
: string
The bucket where the media files will be upload before being sent to platforms.
MINIO_MEDIA_PATH
: string
The folder path inside the bucket.
MINIO_ACCESS_KEY
: string
The MinIO access key to access the bucket in order to deposit media files.
MINIO_SECRET_KEY
: string
The MinIO access secret key to access the bucket in order to deposit media files.
MINIO_ROOT_USER
: string
The MinIO administration account username (used for docker-compose MinIO container).
MINIO_ROOT_PASSWORD
: string
The MinIO administration account password (used for docker-compose MinIO container).
Persisting data
DATABASE_URL
: (PostgreSQL) URL
The PostgreSQL database URL
POSTGRES_USER
: string
The PostgreSQL administration account username (used for docker-compose postgres container).
POSTGRES_PASSWORD
: string
The PostgreSQL administration account password (used for docker-compose postgres container).
POSTGRES_DB
: string
The PostgreSQL database.