BookWise is a Next.js-based web application designed to streamline the management of book borrowing within a university library. This system provides an intuitive interface for users to browse, search, and borrow books while ensuring that administrators have the tools they need to manage the library's inventory effectively.
- Introduction
- Features
- Getting Started
- Project Structure
- Tech Stack
- Scripts
- Configuration
- Contributing
- License
Built with Next.js, TypeScript, and PostgreSQL, the University Library Management System is a production-grade platform featuring a public-facing app and an admin interface. It offers advanced functionalities like seamless book borrowing with reminders and receipts, robust user management, automated workflows, and a modern, optimized tech stack for real-world scalability.
- Search and Filter: Browse books by title, author, genre, and rating.
- Book Details: View detailed information about each book, including summaries, ratings, and availability.
- Borrowing System: Check out books and track availability in real time.
- Inventory Management: Add, update, and delete book records.
- Usage Reports: Generate reports on borrowed and available books.
- Role Management: Change user roles to invite more admins, with email notifications sent upon role updates.
- Responsive Design: Optimized for desktop and mobile devices.
- Customizable Themes: Tailwind CSS-based themes for flexibility.
- Optimized Fonts: Integrated with
next/font
for efficient font loading. - Onboarding Workflows: Automated welcome emails when users sign up, with follow-ups based on inactivity or activity dates.
- Borrow Book Reminder: Customized email notifications sent before, on, and after the due date, reminding users to return books or avoid charges.
- Borrow Book Receipt: Automatically generates a customized PDF receipt when a book is successfully borrowed.
- Advanced Functionalities: Caching, rate-limiting, DDoS protection, and custom notifications.
- Database Management: Postgres with Neon for scalable and collaborative database handling.
- Real-time Media Processing: ImageKit for image and video optimization and transformations.
- Efficient Caching: Upstash Redis for caching, workflows, and triggers.
Ensure you have the following installed on your machine:
-
Clone the repository:
git clone https://github.com/your-repo/bookwise.git cd bookwise
-
Install dependencies:
npm install # or yarn install
-
Run the development server:
npm run dev
-
Open http://localhost:3000 in your browser to view the application.
├── README.md
├── components.json
├── eslint.config.mjs
├── next.config.ts
├── package.json
├── postcss.config.mjs
├── tailwind.config.ts
├── tsconfig.json
├── .prettierrc
├── app/
│ ├── globals.css
│ ├── layout.tsx
│ ├── page.tsx
│ └── fonts/
│ ├── BebasNeue-Regular.ttf
│ ├── IBMPlexSans-Bold.ttf
│ ├── IBMPlexSans-Medium.ttf
│ ├── IBMPlexSans-Regular.ttf
│ └── IBMPlexSans-SemiBold.ttf
├── components/
│ └── ui/
│ └── button.tsx
├── lib/
│ └── utils.ts
└── public/
├── books.json
├── icons/
│ └── admin/
└── images/
└── pattern.webp
app/
: Contains the main application structure, including global styles and layouts.components/
: Reusable UI components.lib/
: Utility functions.public/
: Public assets like images, icons, and JSON data.tailwind.config.ts
: Custom Tailwind CSS configuration.eslint.config.mjs
: ESLint configuration for code quality.
- Framework: Next.js
- Styling: Tailwind CSS
- Language: TypeScript
- Database: PostgreSQL with Neon
- Caching: Upstash Redis
- Media Processing: ImageKit
- Authentication: NextAuth
- Email Handling: Resend
- ORM: Drizzle ORM
The following scripts are defined in the package.json
:
dev
: Starts the development server with Turbopack.build
: Builds the application for production.start
: Starts the production server.lint
: Runs ESLint for code linting.
Run scripts using:
npm run <script>
# or
yarn <script>
- Config File:
tailwind.config.ts
- Customizations:
- Themes and colors.
- Custom screen sizes.
- Extended utility classes.
- Config File:
eslint.config.mjs
- Key Plugins:
eslint-plugin-tailwindcss
eslint-config-prettier
We welcome contributions to enhance BookWise. To contribute:
-
Fork the repository.
-
Create a feature branch:
git checkout -b feature/your-feature-name
-
Commit your changes:
git commit -m "Add your message here"
-
Push to your branch:
git push origin feature/your-feature-name
-
Open a pull request.
BookWise is licensed under the MIT License.