A Bluesky feed generator written in Rust, serving posts written in Russian by people living in Netherlands
Go to file
Aleksei Voronov 2bb88d69b3 Upgrade dependencies
- For new axum, use the new way to start the server. No other changes seem necessary.
- For new atrium, update the way agent is initialized. Also now we cannot get the
  session out of the agent, so resolve our own handle to the did with an extra request.
  This is a shame, but eh. That's what you get when using unstable libraries
2023-11-29 10:39:29 +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 Upgrade dependencies 2023-11-29 10:39:29 +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 Upgrade dependencies 2023-11-29 10:39:29 +01:00
Cargo.toml Upgrade dependencies 2023-11-29 10:39:29 +01:00
Cross.toml Make it able to run in production 2023-10-06 20:24:58 +02:00
README.md Acknowledge atrium-api in the README 2023-11-08 20:37:31 +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
  • Intefacing with Bluesky is implemented using atrium-api

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