⚠️ This project is in active beta development. This means the API is unstable, features may be added or removed, and breaking changes are likely to occur frequently and without notice as the design is refined.
A local-first, self-hosted application to catalog things (Currently, focused on books but future work will tackle movies, cds, board games...).
See a demo of the static, immutable version here.
- Add books by ISBN, barcode scanner, manual search, and much more
- Search through the catalog
- Hide thumbnails and covers to truly not judge a book by its cover
- Pick a random book for your next read
- Deploy a public variant of the site that is static, immutable, and optionally void of any personal activity information
-
The much more of the import options
-
Upload custom thumbnail images for covers or use the default
-
Track your reading progress, leave ratings and reviews
-
View fun statistics about your library and activity
-
Sync across multiple devices
-
Cross platform and device
-
CI/CD
-
Documentation
npm install # Install all workspace deps
npm run build # Production build: server, web
npm run dev # Open up http://localhost:5173Other commands:
npm run typecheck # Typecheck every workspace
npm run db:generate # Regenerate Drizzle migrations after a schema change
npm run db:migrate # Apply migrations standalone (also runs on server boot)Trying things out against a throwaway catalog instead of your real one,
npm run build:sandbox # (Re)builds a fake catalog of ~12 well-known books at .openlib-sandbox/, looked up live from Open Library
npm run dev:sandbox # Runs the app pointed at .openlib-sandbox/ instead of the default data dirExporting static non-editable version,
npm run build:public # Build
npm run dev:public # RunBuilding the public demo (sandbox catalog, personal data stripped) that powers the GitHub Pages deploy,
npm run build:demo # Rebuilds the sandbox, then exports it to .openlib-sandbox/exports/public/Coming soon.
-
Actual Budget - although not library-related, a lot of the same features and concepts