|  | ||
|---|---|---|
| .github/workflows | ||
| dkr | ||
| sql | ||
| src | ||
| .env.example | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| Cross.toml | ||
| README.md | ||
| docker-compose.yaml | ||
		
			
				
				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 sqlxandscooby
- 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 sqldirectory.
- 
Copy .env.exampleinto.envand set up the environment variables within:- PUBLISHER_BLUESKY_HANDLEto your Bluesky handle
- PUBLISHER_BLUESKY_PASSWORDto Bluesky app password that you created in settings
- CHAT_GPT_API_KEYfor your ChatGPT key
- DATABASE_URLfor PostgreSQL credentials
- FEED_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
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
Cross-compiling on non-Linux machines to deploy on Linux
- 
Install crossby following their installation guide
- 
Build the binaries in release mode: 
cross build --release
- Deploy the binaries in target/x86_64-unknown-linux-gnu/release/as you see fit