About
Hello! I'm @jola.dev and I made shelf.cafe after being inspired by bubbles.town. I wanted to see what the same thing would look like, built on top of atproto.
shelf.cafe aggregates content from a list of blogs, based on the bubbles.town list which in turn is a combination of many blog rings and directories, by polling their feeds. Whenever new content is detected, it's automatically added to new. It is now also possible to submit links directly.
atproto what?
shelf.cafe publishes items to atproto, under the cafe.shelf.item lexicon. What you see on the front page is the content rendered from the AppView. You can vote on items by logging in through your Bluesky account, or any other atproto account such as Eurosky, pckt.cafe, tangled.sh, and many others.
Note that currently the AppView does not discover content created outside the app, but that's coming. I also want to add features around auto-discovering content posted under the standard.site lexicon.
Themes
Don't like the colors? If you log in you can select from a set of different themes on the login page. This preference is recorded in local storage. You can also specifically opt into dark or light mode.
How shelf.cafe fetches content
The app polls feeds for new content on a regular basis, recording posts as seen as it goes, and publishes new items when discovered. It respects /robots.txt, as well as Last-Modified and ETag headers. If a blog disallows fetching the feed, or otherwise fails requests, the blog is marked as disabled and the app will stop polling it. Retries after failures use exponential backoff with jitter over ~24h.
If you wish to disallow shelf.cafe from fetching your feed, add
User-agent: shelfbot
Disallow: /rss.xml # or *
to your /robots.txt, or contact me at hello@shelf.cafe.
Moderation
shelf.cafe subscribes to four labelers at the time of writing this: Bluesky Moderation Service, Northsky Moderation, Blacksky Moderation, and Skywatch Blue. A subset of labels offered by these services are used to apply limits to the content on the website. This can change at any time. shelf.cafe can also apply local limitations where required.
Feedback
Please feel free to tag @shelf.cafe or @jola.dev on Bluesky, or send an email to hello@shelf.cafe, and share any feedback that you have!