Skip to content

Latest commit

 

History

566 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🐝 BookHive

GitHub license Build workflow status GitHub commit activity GitHub contributors


Goodreads, but better, built on Bluesky.

  • OAuth with Bluesky with session storage, and persistence
  • Defined Lexicons for books (with reviews, ratings, etc)
  • Displaying a feed of new books & reviews from the firehose
  • Works without JavaScript, but has some dynamic features
  • All data is stored in your PDS, and can be used by other apps
  • Personal library — upload your ebooks (EPUB, MOBI, AZW3, FB2, CBZ) and serve them to your e-reader via an OPDS catalog
  • E-reader sync — built-in KOSync server syncs reading progress from KOReader back to your BookHive books automatically
  • iOS app — native iPhone app for managing your library on the go

I'll be posting updates on this Bluesky thread to share my progress, but this is usable right now on https://bookhive.buzz.

📚 Vision

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:

  • Manage your read & want to read books
  • Have a much nicer UI/UX than Goodreads
  • "Buzz" about the books with friends with Bluesky comments
  • Be decentralized, take your books to other apps if you want to!
  • Host your personal ebook library and serve it to your e-reader over OPDS
  • Sync reading progress from KOReader (and other KOSync-compatible readers) back to your BookHive books

Have a feature request? Open an issue!

🧑‍💻 Development

To install dependencies:

bun install

Copy .env.template to .env and fill in the values.

To run:

bun run dev

Running Tests

# Run all tests
bun run test

# Run tests
bun run test:run

🏗️ Architecture

  • Backend: Hono with AT Proto for OAuth
  • Frontend: Mostly static HTML, with some Hono JSX for dynamic content (Fast as possible)
  • Database: SQLite, with Kysely as the ORM

🗄️ Weekly database export (GitHub Actions artifact)

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).

  • Server endpoint: GET /admin/export
    • Requires EXPORT_SHARED_SECRET to be set
    • Request header: Authorization: Bearer <EXPORT_SHARED_SECRET>
    • Returns a .tgz containing db.sqlite, kv.sqlite (with auth tables excluded), and manifest.json
  • Workflow: .github/workflows/database-export.yml
    • Configure GitHub repo secrets:
      • BOOKHIVE_EXPORT_URL (e.g. https://bookhive.example.com/admin/export)
      • BOOKHIVE_EXPORT_SHARED_SECRET

About

Track your books, share your shelves, see what others are reading

Topics

Resources

Stars

156 stars

Watchers

3 watching

Forks

Sponsor this project

Packages

Used by

Contributors

Languages