MyReads is a modern, responsive bookshelf app that allows you to manage and organize books you are currently reading, want to read, or have already read. The app features Google Books API integration, user authentication, and detailed book information pages.
This project was originally built using React as part of the Udacity React Nanodegree program and has been enhanced with modern features.
✅ Google Books API Integration - Access to millions of books with rich metadata
✅ Firebase Authentication - Sign in with Google, GitHub, or Email/Password
✅ User Accounts - Each user has their own private bookshelf
✅ Book Details Page - View comprehensive information about any book
✅ Fully Responsive Design - Works beautifully on mobile, tablet, and desktop
✅ Firestore Integration - Cloud storage for user bookshelves
Make sure you have the following installed on your machine:
- Node.js (v14+ recommended)
- npm (comes with Node.js)
git clone https://github.com/chrisbraycodes/myreads.git
cd myreadsnpm installImportant: You need to configure Firebase for the app to work properly. See FIREBASE_SETUP.md for detailed instructions.
Quick steps:
- Create a Firebase project at Firebase Console
- Enable Authentication (Email/Password, Google, GitHub)
- Enable Firestore Database
- Copy your Firebase config to
src/firebase.js
npm startThis will launch the app in your browser at http://localhost:3000.
- Sign up or sign in using Email/Password, Google, or GitHub
- Your bookshelf is private and synced to your account
The main page displays three shelves:
- Currently Reading - Books you're actively reading
- Want to Read - Books on your reading list
- Read - Books you've completed
You can:
- Click on any book to view detailed information
- Move books between shelves using the dropdown menu
- Add new books via the search page
- Click the "+" button in the bottom-right corner to access search
- Search for books by title, author, or ISBN using Google Books API
- Click on any book in search results to view details
- Add books directly to your shelves from search results
- View comprehensive book information including:
- Full description
- Publication date, page count, language
- Categories/genres
- Ratings and reviews
- Links to preview and purchase
myreads/
├── public/
├── src/
│ ├── components/
│ │ ├── Auth.js # Authentication component
│ │ ├── Auth.css
│ │ ├── BookDetails.js # Book details page
│ │ └── BookDetails.css
│ ├── App.js # Main App component with routing
│ ├── MainPage.js # Main page showing bookshelves
│ ├── SearchPage.js # Search page for finding books
│ ├── Bookshelf.js # Bookshelf component
│ ├── BooksAPI.js # Google Books API integration
│ ├── firebase.js # Firebase configuration
│ ├── index.css # Global CSS styles
│ ├── App.css # Component-specific styles
│ └── index.js # React entry point
├── FIREBASE_SETUP.md # Firebase setup instructions
└── README.md
✅ Search millions of books using Google Books API
✅ User authentication with Firebase (Google, GitHub, Email)
✅ Per-user bookshelf storage in Firestore
✅ Book details page with comprehensive information
✅ Fully responsive design (mobile, tablet, desktop)
✅ Click books to view details
✅ Persistent bookshelf across devices
✅ Smooth navigation with React Router
- React 17+ - UI framework
- React Router - Navigation
- Firebase - Authentication & Firestore database
- Google Books API - Book search and metadata
- CSS3 - Responsive styling
- Custom shelves (beyond the 3 default ones)
- Reading progress tracking
- Reading statistics dashboard
- Book reviews and ratings
- Social features (see friends' bookshelves)
- Reading challenges and groups
- Book recommendations
- Notes and highlights
- Import/Export functionality Contributing Feel free to fork the repository and submit a pull request with any improvements or bug fixes.
License This project is licensed under the MIT License. See the LICENSE file for details.
Acknowledgments Udacity React Nanodegree React