A Bluesky feed generator written in Rust, serving posts written in Russian by people living in Netherlands
Go to file
Aleksei Voronov 87dfb24e1a Update setup instructions
Point to the entire sql directory, not just the first file,
now that there are multiple things there
2023-11-06 08:55:19 +01:00
.github/workflows Create rust.yml 2023-10-09 16:13:25 +02:00
sql Store Bluesky firehose host as part of subscription state 2023-11-05 19:01:20 +01:00
src Simplify Bluesky api usage 2023-11-06 08:53:23 +01:00
.env.example Add some untested version of publishing a feed 2023-09-22 13:33:13 +02:00
.gitignore Read chatgpt and postgresql credentials from .env 2023-09-07 19:20:38 +02:00
Cargo.lock Simplify Bluesky api usage 2023-11-06 08:53:23 +01:00
Cargo.toml Simplify Bluesky api usage 2023-11-06 08:53:23 +01:00
Cross.toml Make it able to run in production 2023-10-06 20:24:58 +02:00
README.md Update setup instructions 2023-11-06 08:55:19 +01:00

README.md

nederlandskie

A Bluesky feed generator written in Rust.

The specific algorithm indexes and serves posts written in Russian language, by people living in Netherlands.

  • Posts are stored in PostgreSQL via sqlx and scooby
  • Language of posts is determined via lingua-rs
  • Country of residence is inferred from profile information through ChatGPT via chat-gpt-lib-rs
  • Feed is served via axum

Deployed in production at https://nederlandskie.plansfortheday.org/

Published on Bluesky at https://bsky.app/profile/did:plc:376mcc6k4s5p7qbtyjrgph5k/feed/nederlandskie.

Setup

  1. Set up a PostgreSQL database

  2. Create tables using SQL provided in sql directory.

  3. Copy .env.example into .env and set up the environment variables within:

    • PUBLISHER_BLUESKY_HANDLE to your Bluesky handle
    • PUBLISHER_BLUESKY_PASSWORD to Bluesky app password that you created in settings
    • CHAT_GPT_API_KEY for your ChatGPT key
    • DATABASE_URL for PostgreSQL credentials
    • FEED_GENERATOR_HOSTNAME to the hostname of where you intend to host the feed
  4. Determine your own DID and put it in PUBLISHER_DID env variable in .env:

    cargo run --bin who_am_i
    

Running

Populate and serve the feed

cargo run

The feed will be available at http://localhost:3030/.

Determine your own did for publishing

cargo run --bin who_am_i

Publish the feed

cargo run --bin publish_feed -- --help

Force a profile to be in a certain country

cargo run --bin force_profile_country -- --help