A modern, production-grade full-stack web application for organizing your personal book collection, tracking reading milestones, and discovering reading analytics. Built with Next.js 16 (App Router), Context API, Framer Motion, Node.js, Express, and MongoDB.
- 🎨 OLED Pitch Black & Light Mode: Seamless theme switcher with a true OLED
#000000dark theme and custom glassmorphism. - 🖼️ Procedural Book Covers: Dynamic visual book covers with title typography and procedural gradient palettes based on string hashes.
- 📊 Annual Reading Goal Tracker: Interactive circular progress ring tracking target reading goals (e.g. 5 of 12 books completed).
- 📖 Reading Progress Bar: Interactive page counter (
currentPage/totalPages) displaying animated progress bars for books currently being read. - ⭐ 5-Star Rating System: Rate completed books with interactive star ratings.
- ❤️ Favorite Pinning: Heart toggle to pin favorite books to the top of your shelf.
- 🔀 Full-Stack Search, Filter & Sort: Search by title or author, filter by status (
Want To Read,Reading,Completed), and sort by Title (A-Z), Author, Highest Rated, or Favorites. - 🔗 URL Query Parameter Sync: Search terms, active status tabs, sorting orders, and view modes automatically synchronize with browser URL search parameters for bookmarking & sharing.
- 🎬 Tactile 3D Micro-Animations: Framer Motion 3D card tilt physics (
rotateX,rotateY), skeleton shimmer loading placeholders, and animated toast alert banners. - 🔐 Secure Authentication: JWT-based session state with Context API, protected dashboard routing, and real-time password strength indicators.
- Framework: Next.js 16 (App Router)
- Language: TypeScript
- Styling: Vanilla CSS Modules (OLED Pitch Black + Custom Design System)
- State Management: React Context API
- Animations: Framer Motion & Lucide Icons
- Runtime: Node.js & Express.js
- Database: MongoDB & Mongoose ORM
- Authentication: JSON Web Tokens (JWT) & bcrypt password hashing
- Validation: Joi validation schemas
Book-Manager/
├── frontend/ # Next.js 16 Frontend Application
│ ├── app/ # App Router Pages (/login, /register, /dashboard)
│ ├── context/ # Context API (AuthContext, BookContext)
│ ├── lib/ # API Client & Helper Utilities
│ └── types/ # TypeScript Interface Definitions
├── backend/ # Node.js & Express REST API Server
│ ├── src/
│ │ ├── controller/ # Request Handlers (auth, book)
│ │ ├── model/ # Mongoose Schema Definitions
│ │ ├── route/ # Express API Routes
│ │ └── validator/ # Joi Validation Schemas
│ └── server.js # Backend Server Entrypoint
├── deployment.md # Production Deployment Guide
└── README.md # Project Documentation
- Node.js (v18+)
- MongoDB Atlas database URI (or local MongoDB server)
git clone https://github.com/destinykrishna/Book-Manager.git
cd Book-Managercd backend
npm installCreate a .env file in the backend/ directory:
PORT=5000
MONGO_URI=your_mongodb_connection_string
JWT_SECRET=your_secret_jwt_key
CLIENT_URL=http://localhost:3001Start the backend dev server:
npm run devIn a new terminal window:
cd frontend
npm installCreate a .env.local file in the frontend/ directory:
NEXT_PUBLIC_API_URL=http://localhost:5000/apiStart the Next.js dev server:
npm run devAlternatively, launch the full stack (Frontend + Backend + MongoDB) with Docker Compose:
docker-compose up --buildAccess the application at http://localhost:3001.
For complete instructions on deploying the frontend to Vercel and the backend to Render / Railway, refer to the Deployment Guide.
This project is open source and available under the ISC License.