A Bluesky feed generator written in Rust, serving posts written in Russian by people living in Netherlands
Go to file
Aleksei Voronov 642a3d57cc Remove ciborium in favor of custom deserialization logic
Unfortunately, looks like serde is not flexible enough to support everything CBOR does,
so a lot of messages cannot be deserialized properly. Other serde-based CBOR libraries
suffer from the same problem.

So now we have a bunch of boring deserialization logic supported by sk-cbor
2023-09-24 20:06:20 +02:00
sql Keep subscription state in order to not lose messages 2023-09-21 12:33:17 +02:00
src Remove ciborium in favor of custom deserialization logic 2023-09-24 20:06:20 +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 Remove ciborium in favor of custom deserialization logic 2023-09-24 20:06:20 +02:00
Cargo.toml Remove ciborium in favor of custom deserialization logic 2023-09-24 20:06:20 +02:00
README.md Update the roadmap a little bit to mention everything that's needed to get to v1 2023-09-23 20:42:35 +02:00

README.md

nederlandskie

Potentially, a Bluesky feed of people speaking some language while living in some other country (for example, Russian-speaking people living in Netherlands).

Heavily WIP. Doesn't work yet at all, but does read the stream of posts as they are created on Bluesky.

Roadmap

  • Read stream of posts from Bluesky
  • Store posts in the database
  • Store user profiles in the database
  • Detect the country of residence from profile information
  • Keep subscription state to not lose messages
  • Serve the feed
  • Handle deleting of posts
  • Handle errors in the web service gracefully
  • Handle missing profiles in the profile classifier
  • Add a way to mark a profile as being from a certain country manually
  • Handle reconnecting to websocket somehow
  • Publish the feed

Configuration

  1. 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
  2. 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

Determine your own did for publishing

cargo run --bin who_am_i

Publish the feed

cargo run --bin publish_feed -- --help