PageTurner is a React-based web application designed to help you discover and explore books using the Open Library API. It also integrates with a Node.js backend to provide direct download links for books via Libgen.
- Book Search: Search for books by title or author using the Open Library API.
- Book Details: View comprehensive details for individual books, including synopsis, authors, publication information, and ratings.
- Libgen Download Integration: Attempt to find and download books directly from Libgen via a custom backend proxy.
- Responsive Design: Optimized for various screen sizes, from mobile to desktop.
- Modern UI: Built with React and Material-UI for a clean and intuitive user experience.
PageTurner/
├── index.html
├── public/
│ └── favicon/
├── server/
│ └── index.js
└──src/
├── App.jsx
├── main.jsx
├── ThemeContext.jsx
├── api/
│ ├── jikanApi.js
│ └── openLibraryApi.js
├── components/
│ ├── BookCard.jsx
│ ├── MangaCard.jsx
│ ├── ReviewList.jsx
│ ├── StarRating.jsx
│ └── UserReview.jsx
└── pages/
├── BookDetailPage.jsx
├── BrowseBooksPage.jsx
├── Homepage.jsx
├── MangaDetailPage.jsx
└── MangaPage.jsx
Follow these instructions to get a copy of the project up and running on your local machine for development and testing purposes.
- Node.js (LTS recommended)
- npm or Yarn (or Bun)
-
Clone the repository:
git clone [https://github.com/your-username/PageTurner.git](https://github.com/your-username/PageTurner.git) cd PageTurner -
Install Frontend Dependencies:
npm install # or yarn install or bun install -
Install Backend Dependencies:
cd server npm install # or yarn install or bun install cd .. # Go back to the project root
For a streamlined local development experience that mimics the production setup, run the Node.js server which will also serve the React frontend.
-
Build the React Frontend:
npm run build
This will create a
distfolder in the project root. -
Start the Unified Server:
cd server npm startThe server will typically run on
http://localhost:3001. Open this URL in your browser.- Note: If
libgen.ischanges its HTML structure, the scraping logic inserver/index.jsmight break. You may need to inspectlibgen.isin a browser's developer tools and update thecheerioselectors inserver/index.jsaccordingly.
- Note: If
- Open Library API: For searching and retrieving book metadata.
- Libgen (via custom Node.js backend): For finding book download links (note: this uses web scraping, which can be fragile).
Feel free to fork the repository, make improvements, and submit pull requests.
This project is licensed under the ISC License.