Skip to content

πŸ“š Virtual Bookshelf - React-based book management platform with Firebase Auth & MongoDB. Organize, track, and explore your reading journey.

Notifications You must be signed in to change notification settings

web-hasib/Assignment-11-client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

29 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“š Virtual Bookshelf (Client + Server)

Client Live Site: https://virtual-bookshelf-4f14f.web.app/
Server Repository: https://github.com/web-hasib/Assignment-11-server
Server Live Site: https://virtual-bookshelf-server-five.vercel.app/


Welcome to Virtual Bookshelf β€” a dynamic web application where users can organize, track, and explore books. Built with React, Tailwind CSS, Firebase Auth, and a MongoDB-backed API, this project demonstrates strong frontend and full-stack capabilities.


πŸš€ Project Overview

Purpose:
Create a user-friendly digital bookshelf that allows readers to:

  • πŸ“₯ Add books to their virtual shelf
  • πŸ’¬ Write and manage reviews
  • πŸ“ˆ Track reading progress
  • πŸ”Ό Upvote and explore popular books

Why this matters:
It helps avid readers organize their reading habits and discover new titles via community input and book stats.


🧰 Tech Stack

Area Tech
Frontend React, Tailwind CSS, Framer Motion
Backend Node.js, Express.js, MongoDB
Authentication Firebase (Email/Password, Google)
Deployment Vercel / Firebase (client), Vercel (server)

πŸ§‘β€πŸ’» Features

  • πŸ” Authentication: Login/register using Firebase
  • πŸ“š Book Management: Add, edit, delete your own books
  • πŸ“ˆ Profile Chart: See book stats by category
  • πŸ’¬ Review System: One review per user per book
  • πŸ”Ž Filter/Search: Search books by title or author, filter by reading status
  • πŸ”Ό Upvote: Vote for favorite books (excluding your own)
  • πŸ—‘οΈ Routing: Protected/private routes using React Router
  • πŸ§ͺ Responsive: Mobile-first design using Tailwind CSS
  • πŸ”€ Animations: Smooth transitions using Framer Motion
  • πŸ—‚οΈ Category Filter: Filter books by Fiction, Non-Fiction, Fantasy, Finance

🌐 Routes and Pages

Route Description
/ Home with banner, popular books, featured categories, extra sections
/allBooks Public book list with filters and search
/books/:id Book details page (upvote, review, status tracker)
/addBook πŸ”’ Add a new book
/editBook/:id πŸ”’ Edit existing book
/mybooks πŸ”’ Manage books added by logged-in user
/profile πŸ”’ User info + pie chart
/login / /register Firebase Auth pages
* 404 page with animation and home link

πŸ”’ = Private Route (requires authentication)


πŸ“¦ Packages Used (Client Side)

{
  "dependencies": {
    "@headlessui/react": "^2.2.4",
    "@lottiefiles/dotlottie-react": "^0.14.0",
    "@tailwindcss/vite": "^4.1.8",
    "axios": "^1.9.0",
    "dotenv": "^16.5.0",
    "firebase": "^11.9.0",
    "lottie-react": "^2.4.1",
    "motion": "^12.16.0",
    "react": "^19.1.0",
    "react-awesome-reveal": "^4.3.1",
    "react-dom": "^19.1.0",
    "react-helmet": "^6.1.0",
    "react-icons": "^5.5.0",
    "react-router": "^7.6.2",
    "react-tabs": "^6.1.0",
    "recharts": "^2.15.3",
    "sweetalert2": "^11.22.0",
    "tailwindcss": "^4.1.8"
  },
  "devDependencies": {
    "@eslint/js": "^9.25.0",
    "@types/react": "^19.1.2",
    "@types/react-dom": "^19.1.2",
    "@vitejs/plugin-react": "^4.4.1",
    "daisyui": "^5.0.43",
    "eslint": "^9.25.0",
    "eslint-plugin-react-hooks": "^5.2.0",
    "eslint-plugin-react-refresh": "^0.4.19",
    "globals": "^16.0.0",
    "vite": "^6.3.5"
  }
}

πŸ› οΈ Local Setup

βœ… Client Side Setup

  1. Clone the repository:
git clone https://github.com/web-hasib/Assignment-11-client.git
  1. Install dependencies:
npm install
  1. Create a .env file and add your Firebase configuration and API base URL like:
VITE_API_URL=http://localhost:5000
VITE_FIREBASE_API_KEY=your_firebase_api_key
VITE_FIREBASE_AUTH_DOMAIN=your_firebase_auth_domain
VITE_FIREBASE_PROJECT_ID=your_firebase_project_id
VITE_FIREBASE_STORAGE_BUCKET=your_firebase_storage_bucket
VITE_FIREBASE_MESSAGING_SENDER_ID=your_firebase_messaging_sender_id
VITE_FIREBASE_APP_ID=your_firebase_app_id
  1. Run the development server:
npm run dev

Client will run on: http://localhost:5173/


βœ… Server Side Setup

  1. Clone the server repository:
git clone https://github.com/web-hasib/Assignment-11-server.git
  1. Install dependencies:
npm install
  1. Create a .env file and add:
PORT=5000
MONGODB_URI=your_mongodb_connection_string
  1. Run the server:
npm start

Server will run on: http://localhost:5000/


πŸ”— Deployment


✨ Author

Hasibul Islam
GitHub Profile

About

πŸ“š Virtual Bookshelf - React-based book management platform with Firebase Auth & MongoDB. Organize, track, and explore your reading journey.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages