1bd843a05a
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.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
Determine your own did for publishing
cargo run --bin who_am_i
Publish the feed
cargo run --bin publish_feed -- --help