BookWise is a modern university library management system designed to streamline book borrowing, user management, and administrative tasks. Built with cutting-edge technologies, BookWise offers a seamless experience for both administrators and users.
- Books Management:
- Create a book
- List all available books.
- Edit or remove books from the library.
- Users Management: View and manage all registered users.
- Borrow Requests: Handle book borrowing requests efficiently.
- Account Requests: Approve or reject new user registrations.
- Dashboard: Quick access to all sections.
- Profile Page:
- View borrowed books.
- View personal information.
- Track borrowed books and due dates.
- Update personal information. (Soon)
- Home Page:
- List all books
- Books with detailed information.
- Search for books by title
- Notification
- Pagination for books (Soon)
- Search for books by author, genre (Soon)
- Frontend:
- Next.js 15
- TailwindCSS
- shadcn/ui (for beautiful, reusable components)
- Backend:
- Next.js API Routes
- NextAuth (authentication)
- Database:
- PostgreSQL (hosted on Neon)
- Drizzle ORM (type-safe database interactions)
- Media Storage:
- ImageKit.io (for uploading and managing images/videos)
- Caching & Real-Time Data:
- Upstash Redis (caching and real-time workflows)
- Email Service:
- Resend (for sending emails, integrated with Upstash workflows)
- Node.js (v18 or higher)
- PostgreSQL database (Neon recommended)
- Upstash account
- ImageKit.io account
- Resend API key
-
Clone the repository:
git clone https://github.com/your-username/bookwise.git cd bookwise
-
Install dependencies:
npm install
-
Set up environment variables: Create a
.env
file in the root directory and add the following:# ImageKit.IO NEXT_PUBLIC_IMAGEKIT_URL_ENDPOINT= NEXT_PUBLIC_IMAGEKIT_PUBLIC_KEY= IMAGEKIT_PRIVATE_KEY= NEXT_PUBLIC_API_ENDPOINT=http://localhost:3000 NEXT_PUBLIC_PROD_API_ENDPOINT=deployed_url # Neon database DATABASE_URL= AUTH_SECRET= # Added by `npx auth`. Read more: https://cli.authjs.dev # Upstash redis UPSTASH_REDIS_URL= UPSTASH_REDIS_TOKEN= # Upstash qstash QSTASH_URL= QSTASH_TOKEN= # Required for receiving QSTASH_CURRENT_SIGNING_KEY= QSTASH_NEXT_SIGNING_KEY= # Resend RESEND_TOKEN=
-
Run database migrations:
npm run db:generate npm run db:migrate
-
Run database migrations:
npm run dev