The Library Management System is a robust multi-user application designed to manage e-books efficiently. This system caters to both librarians and general users, providing an intuitive interface for requesting, reading, returning, and managing e-books. Version 2.0 builds upon the foundational features of v1.0 with significant enhancements to improve user experience and system performance.
- Technologies Used
- Features
- Installation
- Usage
- ER Diagram
- Wireframe
- Future Enhancements
- Contributing
- License
- HTML
- CSS
- Bootstrap
- Vue.js
- Flask
- Jinja
- SQLite
- Redis
- Celery
- Pdfkit
- Smtplib
- Flask: A micro web framework for Python.
- SQLAlchemy: A Python SQL toolkit and Object-Relational Mapping (ORM) library.
- Flask-SQLAlchemy: An extension for Flask that adds support for SQLAlchemy.
- Flask-RESTful: An extension for Flask that adds support for quickly building REST APIs.
- Matplotlib: A comprehensive library for creating static, animated, and interactive visualizations in Python.
- Seaborn: A data visualization library based on Matplotlib that provides a high-level interface for drawing attractive and informative statistical graphics.
- Pdfkit: Helps to create PDF reports from HTML content, which can be sent to users.
- Smtplib: Enables sending emails with attachments and custom content.
- Visual Studio Code (VS Code)
- User Authentication: Users and librarians can log in to access the system.
- Section Management: Librarians can add new sections with details like name, date created, and description.
- Book Management: Librarians can add new books with attributes such as title, content, author(s), etc.
- Book Issuing: Users can request books, and librarians can approve or reject these requests.
- Book Return: Users can return books after reading.
- Data Visualization: Graphical representation of data such as user roles distribution, book request status, and section-wise book count.
- File Handling: Functionality for uploading and downloading e-books.
- Search Options: Users can search for books.
- Advanced User Authentication: Enhanced with RBAC (Role-Based Access Control).
- Redis Caching: Implemented for the stats page to reduce unnecessary database queries and improve performance.
- Task Scheduling: Automated tasks like sending monthly reports and daily reminders using Celery.
- Book Rating: Users can now rate books once they have been returned.
- CSV Download: Users can download a CSV file of their issued, requested, and completed books.
- One-Click Book Download: Users can download books directly with a single click after access has been granted.
- 5-Book Request Limit: Users are now limited to requesting up to 5 books at a time.
- Python 3.x
- Redis (for caching and Celery task queue)
- wkhtmltopdf (for Pdfkit)
-
Clone the repository:
git clone https://github.com/Akashkunwar/Library_Management_System.git
-
Navigate to the project directory:
cd Library_Management_System
-
Create a virtual environment:
python3 -m venv venv
-
Activate the virtual environment:
- On Windows:
venv\Scripts\activate
- On macOS/Linux:
source venv/bin/activate
- On Windows:
-
Install the dependencies:
pip install -r requirements.txt
-
Set up the database:
flask db init flask db migrate -m "Initial migration." flask db upgrade
-
Run Redis server:
redis-server
-
Start Celery worker:
celery -A celery_schedule.celery worker --loglevel=info
-
Run the application:
flask run
- Access the application in your web browser at
http://127.0.0.1:5000
. - Log in with provided credentials:
- Admin:
admin
/admin
- Super User:
super
/user
- User:
user
/user
- Demo User:
demo
/user
- Dummy User:
dummy
/dummy
- Admin:
- Explore the new and existing features such as section management, book management, issuing and returning books, and advanced functionalities like Redis caching, task scheduling, and book rating.
For future versions, we aim to introduce:
- Enhanced Search Functionality: Implementing fuzzy search and filters.
- Recommendation System: Suggesting books based on user history and ratings.
- API Integration: Expanding REST APIs for third-party integrations.
- Multi-Language Support: Adding support for multiple languages.
- Mobile Application: Developing a mobile app version of the system.
We welcome contributions! Feel free to fork the repository and create a pull request with your changes.
This project is licensed under the MIT License.
Feel free to reach out if you have any questions or suggestions. Thank you for your interest in my project!