This basically required implementing authentication from ground up because atrium-api is horribly deficient when it comes to it, providing basically no real way to manage it, and what is provided is actually broken anyway requiring additional hacks to get around Ah well. This has been the story of using anything in Rust that's related to Bluesky. Everything is broken. |
||
|---|---|---|
| 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.
Not fully complete yet, see roadmap.
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
-
Copy
.env.exampleinto.envand set up the environment variables within:PUBLISHER_BLUESKY_HANDLEto your Bluesky handlePUBLISHER_BLUESKY_PASSWORDto Bluesky app password that you created in settingsCHAT_GPT_API_KEYfor your ChatGPT keyDATABASE_URLfor PostgreSQL credentialsFEED_GENERATOR_HOSTNAMEto the hostname of where you intend to host the feed
-
Determine your own DID and put it in
PUBLISHER_DIDenv 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