An awesome personal book review platform where user can share his reviews of books.
Report Bug
·
Request Feature
.
Contribute
.
Pull Requests
.
Report Security Issue
.
Fork the Project
Table of Contents
A community-driven book review platform where anyone can share their reviews of books. The site integrates Google Authentication for user sign-in and displays book cover images via the Open Library API. Built with Node.js, EJS for templating, PostgreSQL for the database, and styled with modern CSS techniques.
- Google Authentication: Sign in seamlessly using your Google account.
- Book Reviews: Users can add, edit, and view detailed book reviews.
- Book Covers: Automatically fetches book cover images from the Open Library API.
- Responsive Design: Optimized for both desktop and mobile devices.
- User Ratings: Rate other reviewers based on the quality of their reviews.
- Report Reviews: Flag inappropriate or misleading book reviews for moderation.
This section should list any major frameworks/libraries used to bootstrap your project. Leave any add-ons/plugins for the acknowledgements section. Here are a few examples.
This is an example of how you may give instructions on setting up your project locally. To get a local copy up and running follow these simple example steps.
Before you begin, make sure you have the following installed on your system:
- Node.js: Download Node.js (LTS version recommended)
- PostgreSQL: Install and configure PostgreSQL for database management (Download PostgreSQL).
- npm or yarn: Comes with Node.js; used to install project dependencies.
- Git: Download Git to clone the repository.
- Render Account: If deploying on Render, create a free account at Render.
- Google Cloud Project: Set up a Google Cloud project for Google Authentication (Guide).
- Open Library API: No additional setup required, but familiarize yourself with their API if needed (Open Library API Docs).
Ensure you also have a basic understanding of the following:
- EJS: Templating engine for rendering dynamic views.
- CSS: For styling and responsive design adjustments.
Follow these steps to set up the project locally:
- Clone the Repository
git clone https://github.com/akash85246/ShelfWise.git cd SHELFWISE - Install Dependencies
npm install
- Set Up Environment Variables
DB_HOST=your_database_host DB_PORT=your_database_port DB_USER=your_database_user DB_PASSWORD=your_database_password DB_DATABASE=your_database_name CLOUDINARY_CLOUD_NAME=your_cloudinary_cloud_name CLOUDINARY_API_KEY=your_cloudinary_api_key CLOUDINARY_API_SECRET=your_cloudinary_api_secret GOOGLE_CLIENT_ID=your_google_client_id GOOGLE_CLIENT_SECRET=your_google_client_secret SESSION_SECRET=your_session_secret EMAIL=your_email EMAIL_PASSWORD=your_email_password BASE_URL=your_base_url
- Change git remote url to avoid accidental pushes to base project
git remote set-url origin github_username/repo_name git remote -v # confirm the changes - Run the Project
nodemon app.js
Once the project is running, you can use the following features:
-
Google Authentication
- Click the "Sign In with Google" button on the homepage.
- Sign in using your Google account to access your personalized dashboard.
-
Add Book Reviews
- Navigate to the "New" option in the navigation bar.
- Enter the book details (title, author, review content, etc.).
- Submit your review, which will be saved and displayed on the main page.
-
View Book Reviews
- Browse the browse books page to see all book reviews shared by users.
- Click on a book to view its full review and metadata.
- Use the search bar on the browse books to filter reviews by title or keyword.
-
Book Covers
- The app automatically fetches book cover images using the Open Library API.
- If no cover is available, a default placeholder image is shown.
-
Responsive Design
- The platform is fully responsive and optimized for desktop, tablet, and mobile viewing.
-
Share Reviews
- Share any book review with others via social media or direct links.
- Each review has share options for broader reach and engagement.
-
Report Book Reviews
- Found an inappropriate or misleading review? Use the report feature to flag it for admin moderation.
- Reports are categorized for better handling and faster review.
-
Rate Reviewers
- Users can rate reviewers based on the quality and helpfulness of their reviews.
- These ratings help surface top contributors in the community.
-
Discover Other Reviewers
- Explore a dedicated page to browse and search for other reviewers.
- View their public profiles, ratings, and shared reviews.
- Helps build community by connecting readers and writers.
- Database: Ensure that your PostgreSQL database is running and properly seeded with initial data if required.
- Deployment: The project can also be deployed to platforms like Render for wider access.
- Customization: Modify the
.envfile for custom configurations such as port, Google credentials, or database URLs.
Here are the planned improvements and features for the project:
- Google Authentication for user login.
- Book review management (add, edit, delete reviews).
- Automatic fetching of book covers using the Open Library API.
- Responsive design for both desktop and mobile devices.
- Add a "Top Reviewed Books" section on the homepage.
- Implement search functionality to filter book reviews.
- Share book reviews to external platforms via links or social media.
- Add report system for users to report inappropriate reviews.
- Track and display user statistics (reviews written, average rating, profile views, etc.).
- Create a dedicated page to explore and search other reviewers.
- Admin dashboard to manage reports, users, and content.
- Implement bookmarking/saving of favorite reviews.
- Add comment system for discussions under each review.
See the open issues for a full list of proposed features (and known issues).
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
-
Fork the Project
- Click the "Fork" button at the top-right corner of this page to create a copy of the repository in your GitHub account.
-
Clone the Repository
- Clone your forked repository to your local machine:
git clone https://github.com/your-username/ShelfWise.git
- Clone your forked repository to your local machine:
-
Create Your Feature Branch
- Navigate to your project folder and create a new branch for your feature:
git checkout -b feature/AmazingFeature
- Navigate to your project folder and create a new branch for your feature:
-
Commit Your Changes
- After making the necessary changes, commit them:
git commit -m 'Add some AmazingFeature'
- After making the necessary changes, commit them:
-
Push to the Branch
- Push your changes to your forked repository:
git push origin feature/AmazingFeature
- Push your changes to your forked repository:
-
Open a Pull Request
- Go to the original repository (
akash85246/ShelfWise), and open a pull request to merge your feature branch into themainbranch. - Provide a brief description of the changes you've made and submit the pull request for review.
- Go to the original repository (
Akash Rajput - @akash_rajp91025 - akash.rajput.dev@gmail.com
Project Link: https://github.com/akash85246/ShelfWise
I would like to extend my gratitude to the following resources and individuals:
- Open Library API – For providing the book cover images and book data.
- Google – For offering the Google Authentication API that allows users to sign in securely.
- PostgreSQL – For providing the database solution for managing user data and book reviews.
- Render – For hosting the project online and making deployment seamless.
- Tailwind CSS – For its utility-first CSS framework that helped design the responsive layout.
- Node.js – For being the foundation of the backend server.
- Express.js – For making routing and server-side development efficient and easy.
- EJS – For templating and rendering dynamic views.
- Loaders.css – For providing an easy-to-implement loader to enhance user experience during page loads.
- App Brewery – For providing educational resources and inspiration for building full-stack applications.
- Udemy – For offering valuable courses that helped deepen my understanding of web development.
- Angela Yu – For being an amazing instructor whose courses on Udemy have greatly contributed to my learning and growth in web development.
