A collection of Custom Bluesky Feeds, including Fresh Feeds, all under one roof
Go 98.6%
Dockerfile 0.6%
Makefile 0.4%
Shell 0.3%
7 1 0

Clone this repository

https://tangled.org/whey.party/rinds
git@tangled.org:whey.party/rinds

For self-hosted knots, clone URLs may differ based on your setup.

README.md

Rinds#

A collection of feeds under one roof.

I don't like Docker and I don't need to compile this, okay thanks!

Running#

aint that hard, go install go, setup postgres, and generate the required feed definitions under your user account. you can use https://pdsls.dev to generate a app.bsky.feed.generator record. Set the rkey to the desired short url value. itll look like:

https://bsky.app/profile/{you}/feed/{rkey}

for the contents you can use the example below

{
  "did": "did:web:${INSERT DID:WEB HERE}",
  "$type": "app.bsky.feed.generator",
  "createdAt": "2025-01-21T11:33:02.396Z",
  "description": "wowww very descriptive",
  "displayName": "Cool Feed Name",
}

Env#

You can check out .env.example for an example

Postgres#

Be sure to set up .env correctly

All relevant tables should be created automatically when needed.

Index#

You should start Postgres first Then go run the firehose ingester in

cd ./indexer

and go compile it

go build -o indexer ./indexer.go && export $(grep -v '^#' ./../.env | xargs) && ./indexer

after it has been compiled, you can use rerun.sh to ensure it will automatically recover after failure

Serve#

Make sure the indexer (or at least Postgres) is running first:

go build -o feedgen cmd/main.go && export $(grep -v '^#' ./.env | xargs) && ./feedgen

the logs are pretty verbose imo, fyi

Todo#

  • Faster Indexing
  • Proper Up-to-Date Following Indexing
  • Repost Indicators
  • Cache Timeouts
    • Likes
    • Posts
    • Feed Caches
  • More Fresh Feed Variants
    • unFresh
    • +9 hrs
    • Glimpse
    • Media
      • Fresh: Gram
      • Fresh: Tube
      • Fresh: Media Only
      • Fresh: Text Only

Architecture#

Based on go-bsky-feed-generator. Read the README in the linked repo for more info about how it all works.

/feeds/static#

Basic example feed from the template. Kept as a sanity check if all else seems to fail.

/feeds/fresh#

Fresh feeds, all based around a shared Following feed builder and logic to set posts as viewed. May contain some remnant old references to the old name "rinds".