A personal library management app built for book lovers. Track your books, write reviews, discover reading habits, and manage your collection โ in both Bengali and English.
- Add books manually, by ISBN lookup, or by title/author search
- Barcode scanner using device camera to scan ISBN barcodes
- Track 200+ books with full details โ title, author, publisher, year, edition, ISBN
- Support for Bengali (เฆฌเฆพเฆเฆฒเฆพ) and English books with proper font rendering
- Organize into custom shelves / collections
- Track reading progress page by page with a visual progress bar
- Log reading sessions โ "I read 30 pages today" โ with daily pace chart
- Set a yearly reading goal with a progress tracker on the dashboard
- Mark books as To Read / Reading / Finished / Paused / Dropped
- Write full-text reviews in Bengali or English
- 5-star rating system per book and per story
- Add free-form tags (e.g. favorite, gift, reread)
- Multiple genres per book
- Wishlist for books you want to buy or borrow
- Stories / Parts tracker for collected works and omnibus editions (e.g. Complete Sherlock Holmes)
- Reading habit charts โ genre breakdown, language split, rating distribution
- Book recommendations based on your reading history and top-rated genres
- Track reading pace over time with session charts
- Share a book review via public link โ no sign-in required for viewers
- Export library as CSV โ open in Excel or Google Sheets
- Export library as PDF โ formatted, printable document
- Print library list โ clean printable view with summary stats
- Dark mode โ toggleable, preference saved across sessions
- Progressive Web App (PWA) โ install on Android or iPhone like a native app
- Works on desktop, tablet, and mobile
- All data private and synced across devices via Firebase
| Library | Book Detail | Analytics |
|---|---|---|
| Book grid with real covers | Progress, reviews, sessions | Reading habit charts |
| Layer | Technology |
|---|---|
| Frontend | React 18 (Create React App) |
| Database | Firebase Firestore |
| Authentication | Firebase Auth (Google + Email/Password) |
| Hosting | Netlify |
| Barcode scanning | @zxing/library |
| PDF export | jsPDF |
| Book data | Open Library API (free, no key needed) |
| Fonts | Google Fonts โ Playfair Display, DM Sans, Noto Serif Bengali |
- Node.js 16+
- A free Firebase account
git clone https://github.com/JobayerFaisal/BookSphere.git
cd BookSpherenpm install- Go to Firebase Console โ Create a new project
- Enable Authentication โ Sign-in methods โ Enable Google and Email/Password
- Enable Firestore Database โ Start in production mode โ Region:
asia-south1 - Register a Web app โ copy the config values
Create a .env file in the project root:
REACT_APP_FIREBASE_API_KEY=your_api_key
REACT_APP_FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com
REACT_APP_FIREBASE_PROJECT_ID=your_project_id
REACT_APP_FIREBASE_STORAGE_BUCKET=your_project.appspot.com
REACT_APP_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
REACT_APP_FIREBASE_APP_ID=your_app_idIn Firebase Console โ Firestore โ Rules:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId}/{document=**} {
allow read, write: if request.auth != null && request.auth.uid == userId;
}
match /shares/{shareId} {
allow read: if true;
allow write: if request.auth != null && request.auth.uid == resource.data.uid;
allow create: if request.auth != null && request.auth.uid == request.resource.data.uid;
}
}
}
npm startOpen http://localhost:3000 in your browser.
npm run build- Push your code to GitHub
- Go to Netlify โ Import from GitHub โ Select this repo
- Build settings are auto-detected from
netlify.toml - Add your Firebase environment variables in Netlify โ Site configuration โ Environment variables
- Add your Netlify URL to Firebase Auth โ Authorized domains
See DEPLOY.md for detailed deployment instructions.
Android: Open the live URL in Chrome โ tap โฎ menu โ "Add to Home screen"
iPhone: Open the live URL in Safari โ tap Share โ "Add to Home Screen"
src/
โโโ components/
โ โโโ BookCard.js # Book grid card with cover image
โ โโโ ExportModal.js # CSV / PDF export
โ โโโ Layout.js # Sidebar navigation, dark mode toggle
โ โโโ PrintView.js # Printable library list
โ โโโ StoriesTracker.js # Sub-book tracker for series/omnibus
โโโ context/
โ โโโ ThemeContext.js # Dark mode state
โโโ pages/
โ โโโ AddBook.js # Add/edit form with ISBN & title search
โ โโโ Analytics.js # Reading habit charts
โ โโโ BookDetail.js # Full book page with sessions & stories
โ โโโ Library.js # Main book grid with goal tracker
โ โโโ Login.js # Auth โ Google + email/password
โ โโโ Recommendations.js # Personalized book suggestions
โ โโโ ShareView.js # Public share page (no login needed)
โ โโโ Shelves.js # Shelf browser
โ โโโ Wishlist.js # Wishlist page
โโโ services/
โ โโโ books.js # Firestore CRUD for books
โ โโโ export.js # CSV and PDF export logic
โ โโโ sessions.js # Reading session tracking
โ โโโ share.js # Public share link service
โ โโโ stories.js # Stories/parts tracker service
โโโ firebase.js # Firebase initialization
This is a personal project, but suggestions and improvements are welcome.
- Fork the repo
- Create a feature branch:
git checkout -b feature/my-feature - Commit your changes:
git commit -m 'Add my feature' - Push to the branch:
git push origin feature/my-feature - Open a Pull Request
Distributed under the Apache 2.0 License. See LICENSE for more information.
Built with โค๏ธ by Jobayer Faisal