A collection of Custom Bluesky Feeds, including Fresh Feeds, all under one roof
1# Rinds
2A collection of feeds under one roof.
3including Fresh Feeds
4
5## Running
6Install go, setup postgres, and then generate the required feed definitions under your user account. You can use https://pdsls.dev to generate a `app.bsky.feed.generator` record.
7Set the `rkey` to the desired short url value. Itll look like:
8```
9https://bsky.app/profile/{you}/feed/{rkey}
10```
11for the contents you can use the example below
12```
13{
14 "did": "did:web:${your service endpoint}",
15 "$type": "app.bsky.feed.generator",
16 "createdAt": "2025-01-21T11:33:02.396Z",
17 "description": "wowww very descriptive",
18 "displayName": "Cool Feed Name",
19}
20```
21
22If you are specifically trying to run any of the preexisting feeds, make sure to use the rkey as defined in the /pkg/feeds/*/feed.go and main.go files
23
24## Env
25You can check out `.env.example` for an example
26The port is for your feedgen serve, not your postgres port
27
28## Postgres
29Be sure to set up `.env` correctly
30
31All relevant tables should be created automatically when needed.
32
33## Index
34You should start Postgres first
35Then go run the firehose indexder inside
36```
37cd ./indexer
38```
39And then go compile it
40```
41go build -o indexer ./indexer.go && export $(grep -v '^#' ./../.env | xargs) && ./indexer
42```
43Once compiled, you can use `rerun.sh` to ensure it will automatically recover after failure
44
45## Serve
46Make sure the indexer (or at least Postgres) is running first:
47```
48go build -o feedgen cmd/main.go && export $(grep -v '^#' ./.env | xargs) && ./feedgen
49```
50Logs are pretty verbose, just FYI.
51
52## Todo
53- [ ] Faster Indexing
54- [x] Proper Up-to-Date Following Indexing
55- [x] Repost Indicators
56- [x] Cache Timeouts
57 - [x] Likes
58 - [x] Posts
59 - [x] Feed Caches
60- [ ] More Fresh Feed Variants
61 - [ ] unFresh
62 - [x] +9 hrs
63 - [ ] Glimpse
64 - [ ] Media
65 - [ ] Fresh: Gram
66 - [ ] Fresh: Tube
67 - [ ] Fresh: Media Only
68 - [ ] Fresh: Text Only
69
70## Architecture
71Based on [go-bsky-feed-generator](https://github.com/ericvolp12/go-bsky-feed-generator). Read the README in the linked repo for more info about how it all works. This repository differs from the template by not using the docker system at all.
72
73### /pkg/feeds/static
74Basic example feed from the template. Kept as a sanity check if all else seems to fail.
75
76### /pkg/feeds/fresh
77Fresh feeds, all built around a shared Following feed builder and logic to set posts as viewed. May contain some remnant old references to the old name "rinds".
78