A modern web application for managing, exploring, and reading books for free. Built with React.js for the frontend and Strapi as a headless CMS backend, deployed on Firebase.
- 📱 Responsive design for all devices
- 📖 Free book reading with built-in e-reader
- 📑 Bookmark and resume reading functionality
- 📊 Book categories and tags
- 📖 Detailed book information pages
- 📝 CRUD operations for books
- 📱 Progressive Web App (PWA) support for offline reading
-
Frontend:
- React.js
- React Router for navigation
- Redux for state management
- Tailwind CSS for styling
- Axios for API requests
- React-PDF for PDF rendering
- EPUB.js for EPUB format support
-
Backend:
- Strapi Headless CMS
- PostgreSQL database
- REST API endpoints
- Cloud storage for book files
-
Deployment:
- Firebase Hosting
- Firebase Authentication
- Cloud Storage for books and images
- Node.js (v14 or higher)
- npm or yarn
- Firebase account
- Strapi setup
- Clone the repository:
git clone https://github.com/yourusername/book-library.git
cd book-library
- Install frontend dependencies:
cd frontend
npm install
- Install Strapi dependencies:
cd backend
npm install
- Configure environment variables:
# Frontend .env
REACT_APP_API_URL=your_strapi_url
REACT_APP_FIREBASE_CONFIG=your_firebase_config
# Backend .env
DATABASE_URL=your_database_url
JWT_SECRET=your_jwt_secret
- Run the development servers:
# Frontend
npm start
# Backend
npm run develop
- EPUB
- Text files
- HTML
- Download books for offline access
- Sync reading progress when online
- Automatic bookmarking
- Create a new Firebase project
- Enable Authentication and Hosting
- Set up Cloud Storage for books
- Configure Firebase configuration in your React app
- Deploy using Firebase CLI
- Configure database connection
- Set up content types for books and user progress
- Configure permissions
- Set up file upload providers
- Deploy Strapi backend
Create .env
files in both frontend and backend directories:
# Frontend
REACT_APP_API_URL=
REACT_APP_FIREBASE_CONFIG=
REACT_APP_STORAGE_BUCKET=
# Backend
DATABASE_URL=
JWT_SECRET=
ADMIN_JWT_SECRET=
CLOUDINARY_NAME=
CLOUDINARY_KEY=
CLOUDINARY_SECRET=
npm run build
firebase deploy
- Strapi team for the amazing headless CMS
- Firebase team for the hosting and authentication services
- EPUB.js and React-PDF for reader functionality
- All contributors who helped with the project