A Bluesky feed generator written in Rust, serving posts written in Russian by people living in Netherlands
Go to file
Aleksei Voronov 25373561b4
Update README.md
Add some details about dependencies used
2023-10-09 09:31:26 +02:00
sql Fix SQL syntax 2023-10-05 20:38:22 +02:00
src Formatting 2023-10-07 18:54:43 +02: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 Fix publishing feeds 2023-10-07 18:26:20 +02:00
Cargo.toml Fix publishing feeds 2023-10-07 18:26:20 +02:00
Cross.toml Make it able to run in production 2023-10-06 20:24:58 +02:00
README.md Update README.md 2023-10-09 09:31:26 +02: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/01_create_tables.sql].

  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