Track your books, share your shelves, see what others are reading
158
stars
558
commits
TypeScript
primary language
Sep 9, 2026
updated
Goodreads, but better, built on Bluesky.
I'll be posting updates on this Bluesky thread to share my progress, but this is usable right now on https://bookhive.buzz.
Goodreads has held the market for a long time, without improving their user experience, and with actively hampering their API access. I wanted to make a decentralized, Bluesky-based alternative to Goodreads.
The goal is to:
Have a feature request? Open an issue!
To install dependencies:
bun install
Copy .env.template to .env and fill in the values.
To run:
bun run dev
# Run all tests
bun run test
# Run tests
bun run test:run
This repo includes a workflow that can fetch a sanitized SQLite export from your running BookHive instance and upload it as a GitHub Actions artifact (weekly cron + manual trigger).
GET /admin/export
EXPORT_SHARED_SECRET to be setAuthorization: Bearer <EXPORT_SHARED_SECRET>.tgz containing db.sqlite, kv.sqlite (with auth tables excluded), and manifest.json.github/workflows/database-export.yml
BOOKHIVE_EXPORT_URL (e.g. https://bookhive.example.com/admin/export)BOOKHIVE_EXPORT_SHARED_SECRETTypeScript
98.7%
Track your books, share your shelves, see what others are reading
158
stars
558
commits
TypeScript
primary language
Sep 9, 2026
updated
Goodreads, but better, built on Bluesky.
I'll be posting updates on this Bluesky thread to share my progress, but this is usable right now on https://bookhive.buzz.
Goodreads has held the market for a long time, without improving their user experience, and with actively hampering their API access. I wanted to make a decentralized, Bluesky-based alternative to Goodreads.
The goal is to:
Have a feature request? Open an issue!
To install dependencies:
bun install
Copy .env.template to .env and fill in the values.
To run:
bun run dev
# Run all tests
bun run test
# Run tests
bun run test:run
This repo includes a workflow that can fetch a sanitized SQLite export from your running BookHive instance and upload it as a GitHub Actions artifact (weekly cron + manual trigger).
GET /admin/export
EXPORT_SHARED_SECRET to be setAuthorization: Bearer <EXPORT_SHARED_SECRET>.tgz containing db.sqlite, kv.sqlite (with auth tables excluded), and manifest.json.github/workflows/database-export.yml
BOOKHIVE_EXPORT_URL (e.g. https://bookhive.example.com/admin/export)BOOKHIVE_EXPORT_SHARED_SECRETTypeScript
98.7%