51b5d6de71
I have much to learn about async Rust, but the gist of it is that running try_join on a bunch of futures makes it run them in one task which is not at all what I want because all the components here are separate from each other. Apparently to make it spawn separate tasks, you need to use tokio::spawn. You live and learn. Ideally of course these should be separate processes entirely, but for now I'm far too lazy to deal with that |
||
---|---|---|
.github/workflows | ||
sql | ||
src | ||
.env.example | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
Cross.toml | ||
README.md |
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
andscooby
- 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
-
Set up a PostgreSQL database
-
Create tables using SQL provided in
sql
directory. -
Copy
.env.example
into.env
and set up the environment variables within:PUBLISHER_BLUESKY_HANDLE
to your Bluesky handlePUBLISHER_BLUESKY_PASSWORD
to Bluesky app password that you created in settingsCHAT_GPT_API_KEY
for your ChatGPT keyDATABASE_URL
for PostgreSQL credentialsFEED_GENERATOR_HOSTNAME
to the hostname of where you intend to host the feed
-
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