A personal library tool built with Laravel, Inertia.js, and Vue 3 — designed to help you track, categorize, and review your books.
- Update profile information
- View all personal notes
- View all personal reviews
- View all books in your collection
- Filter by reading status (
plan_to_read,reading,read,on_hold,dropped) - Search and filter by title, author, category, or status
- Add new books via:
- Google Books API
- Barcode scanner (planned)
- Manual entry (optional)
- Remove books from your collection
- (Optional) Bulk actions (e.g. change status)
- (Optional) Sorting (e.g. by title, rating, date added)
- View complete book metadata
- Change your reading status
- Upload or update the book cover
- Add a personal note
- Add a personal review
- View other users’ reviews (optional)
- Books can have multiple categories
- Categories parsed from API (e.g.
"Fiction / Action"→["Fiction", "Action"]) - Categories are deduplicated and reusable
- Filter books by category
- Each book has one publisher (
publisher_id) - Publishers are deduplicated via
firstOrCreate - Visible on the book detail page
- Title
- Authors
- Page count
- Published date
- Description
- Cover image
- Publisher
- Categories
- Backend: Laravel 11
- Frontend: Vue 3 + TypeScript + Inertia.js
- Styling: Tailwind CSS
- Toasts:
vue-sonner - File Uploads: Spatie MediaLibrary
- API: Google Books API
git clone https://github.com/yourname/book-library.git
cd book-library
composer install
cp .env.example .env
php artisan key:generate
# Setup DB
php artisan migrate
# Install frontend dependencies and build assets
pnpm install && pnpm run dev
# (Optional) Seed with sample books
php artisan db:seed- Barcode scanning (mobile-friendly)
- Tagging system (e.g. “cozy”, “favourite”, “2024”)
- Public profile / shareable shelves
- Stats dashboard (pages read, authors, etc.)
- Dark mode preference
- Data export/import