/Library_Management_System

The Library Management System optimizes library tasks, allowing users to request and read books, librarians to manage inventory and requests, and administrators to oversee roles. Built with Vue3, Flask, and SQLite3, it ensures reliability, with Celery for task scheduling and Redis for caching.

Primary LanguageVueMIT LicenseMIT

Library Management System

This repository contains a Library Management System (LMS) designed to facilitate efficient library operations. It offers distinct functionalities for users, librarians, and administrators.

About Project

The Library Management System is a comprehensive application designed to streamline library operations efficiently. With distinct sections for users, librarians, and administrators, it offers a range of functionalities.

Users can create accounts, request books, read allocated books, and access personalized activity statistics. Librarians have control over library inventory, including adding/deleting sections and books, managing user requests, and assigning/restricting book access. Administrators oversee user roles and permissions.

Implemented with Vue3 for the frontend, Flask for the backend, and SQLite3 for the database, the system ensures smooth performance and reliability. Celery manages scheduled tasks such as sending reminders and activity reports, while Redis optimizes data caching for enhanced performance.

To start the application, follow the provided instructions for both frontend and backend setup.

Tech Stack

Python SQLite Flask JWT Redis Celery GitHub NPM JavaScript Vue.js FastAPI macOS

Features

  • User Section: Users can create accounts, request books, read allocated books, view activity statistics, and search for books based on sections or titles.
  • Librarian Section: Librarians can manage library inventory, add/delete sections and books, handle user requests, and assign/revoke book access.
  • Admin Section: Administrators can assign roles to users, granting them privileges as admins, librarians, or regular users.
  • Technology Stack: Frontend built with Vue3, backend with Flask, and SQLite3 for the database.
  • RESTful API: The system is equipped with a robust API, ensuring seamless communication between the frontend and backend.
  • Authentication and Authorization: User login and registration are secured with authentication and authorization using Flask JWT.
  • Asynchronous Task Processing: Celery is used for asynchronous task processing, ensuring efficient performance.
  • Scheduled Tasks: Celery manages scheduled jobs like sending reminders and monthly activity reports.
  • Data Caching: Redis is utilized for efficient data caching, enhancing performance.

Getting Started

Follow these steps to set up and run the application (make sure you have npm , python3 and redis installed):

  1. Frontend Setup:

    • Navigate to the frontend directory and run npm init.
    • Run npm run serve to start the frontend server at http://localhost:8080/
    • To build the frontend, run npm run build
  2. Backend Setup:

    • Navigate to the backend directory and set up the environment.
    • Execute scripts/start_celery.sh and scripts/start_redis.sh.
    • Create a virtual environment and install dependencies from requirements.txt.
    • Create a .env file and add the required environment variables (for now only add the remote redis url).
    • Run python3 app.py to start the backend server.

For detailed instructions, refer to the documentation of each sections.

Contributors

- [Indrajit (Me only)]
- [With the help of some resources like CHAT GPT, Stack Overflow, etc.]

License

This project is licensed under the MIT License MIT License

Copyright (c) [2024] [Indrajit]

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.