This project allows users to explore books, find recommendations, and interact with book details. The application consists of two parts:
- Frontend: Built with React and deployed on GitHub Pages.
- Backend: Built with Node.js and Express, deployed on Render.
- Book of the Day: Displays a random book to kickstart your exploration.
- Search Functionality: Search for books by title, author, or genre.
- Recommended Categories: Provides predefined genres to explore books.
- Feedback System: Users can "like" or "dislike" books to give feedback.
- Popular Books: Highlights trending books.
- Book Details: View detailed information about each book.
--
book_recommendation/
├── frontend/ # React-based user interface
├── backend/ # Node.js server and API logic
frontend/
├── public/
│ ├── index.html # Entry point for React app
│ └── manifest.json # Metadata for PWA
├── src/
│ ├── components/ # Contains React components
│ │ ├── BookList.js
│ │ ├── BookOfTheDay.js
│ │ └── FeedbackForm.js
│ ├── App.js # Main application logic
│ ├── index.js # Entry point for React rendering
│ └── App.css # Styles for the app
└── package.json # Dependencies and scripts for the React app
backend/
├── routes/
│ ├── bookRoutes.js # Handles book-related routes
│ └── feedbackRoutes.js # Handles user feedback routes
├── server.js # Main server file
├── .env # Environment variables
├── package.json # Dependencies and scripts for Node.js server
└── README.md # Backend-specific documentation
- GET /api/books: Fetches books from the Google Books API based on user queries.
- Parameters:
query(e.g.,?query=fiction)
- Parameters:
- POST /api/feedback: Receives user feedback for a book.
- Body:
{ "bookId": "book-id-here", "feedback": "thumbs_up" }
- Body:
- Build the project:
npm run build
- Deploy to GitHub Pages:
npm run deploy
- Deploy to Render:
- Set
Root Directorytobackend/. - Use
npm installas the Build Command. - Use
npm run startas the Start Command.
- Set
- Live Frontend: Frontend Deployment URL
- Backend API: Backend Deployment URL
-
- Backend Codes: Backend Codes
- Open the frontend link.
- Use the search bar to find books.
- Explore categories or view the "Book of the Day."
- Provide feedback (like/dislike) on books.
- Frontend: React, React Router, Axios
- Backend: Node.js, Express, Axios
- APIs: Google Books API
- Hosting: GitHub Pages (Frontend), Render (Backend)
Feel free to fork this repository and make contributions. If you have any feature requests or issues, please open a GitHub issue or submit a pull request.
This project is licensed under the MIT License.
- Author: Nafisat Ibrahim
- Email: nafisat.l@outlook.com
- GitHub: Nafisatibrahim
