A full-featured book review and management application built with the MERN stack (MongoDB
, Express
, React
, Node.js
). Users can browse books, leave reviews with star ratings, and manage their favorites. Admins have extended capabilities for adding, editing, and deleting books, as well as managing user data and access.
Live Link: https://book-world-beta.vercel.app/
-
User Authentication:
- Secure user registration and login system.
- JWT for authorization.
- Bcrypt for password hashing.
-
Book Listing with Reviews & Ratings:
- Browse and search for books.
- Leave comprehensive reviews with star ratings.
- Read and gain insights from community reviews.
-
User Profile Pages:
- Personalized profiles to track activity.
- Manage and curate a list of favorite books.
-
Advanced Feature:
- Unique nested commenting system using Depth-First Search (DFS) for efficient comment deletion within the review tree structure.
-
User Roles & Permissions:
- Differentiation between user and admin roles.
- Admin capabilities to add, update, and delete book listings.
- Manage user data and user roles (excluding a master admin).
-
Frontend:
- React.js
- Recoil for State Management
- Tailwind CSS
- Shadcn UI library
- React Hook Form
- Tanstack Tables
- Lucide-React for icons
-
Backend:
- Node.js
- Express.js
- MongoDB
- Mongoose for MongoDB object modeling
- Multer for handling
multipart/form-data
- CORS for Cross-Origin Resource Sharing
- JWT for token-based authentication
- Bcrypt for secure password storage
-
Other Dependencies:
- Axios
- Zod for schema validation
- React Router DOM for routing
- Cloudinary for image uploads (optional)
- Node.js
- MongoDB
You can use use Mongo Atlas URL instead of local MongoDB
Rename .env.example to .env in both backend and frontend directories.
Add your MONGO_URL
, JWT_SECRET
, CLOUD_NAME
, CLOUD_API_KEY
, CLOUD_API_SECRET
, and PORT
to the backend .env files.
If you don't have Cloudinary, you can replace cloudStorage
with diskStorage
in /backend/middleware/upload.js
.
git clone https://github.com/NEET64/book-world.git
cd book-world
cd backend
npm install
cd ..
cd frontend
npm install
Make sure you are in frontend
directory
npm run dev
Make sure you are in backend
directory
node index.js
Now open localhost:5173
on your browser