Skip to content

Simple management for simple libraries. Streamlined Library Management. Built with - Python, Bootstrap 5, Flask, and SQLAlchemy; Librasic offers a simple, basic, and efficient solution for managing books, members, and transactions for tiny to small libraries.

License

Notifications You must be signed in to change notification settings

devparanjay/librasic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Librasic

Simple management for simple libraries.

Python Flask SQLAlchemy SQLite Bootstrap 5 Jinja HTML5 CSS3 JavaScript

Librasic is a Python-based library management system built with Flask and SQLAlchemy. It provides a simple and efficient way to manage books, members, and transactions in a library.

Librasic is meant to be used by the librarian and currently supports only one user. There might be features that support multiple users with different authority levels and such in future.

Features

  • Simple Authentication: Simple basic authentication for the Librarian to use the application.
  • Manage Books: Add, edit, and delete books. Each book has attributes like name, authors, language, publication date, publisher, ISBN, pages, rating, and more.
  • Manage Members: Add, edit, and delete members.
  • Issue and Return Books: Keep track of books issued and returned by members. (Issue Records / Transactions)
  • Rent Fee: Set a custom daily book rent fee.
  • Fees Calculation: Calculate the fees owed by a member upon Book return.
  • Fee Records: See the total fees paid by the member, along with the current fees owed.
  • Fee Limit: Set a maximum allowed fee limit for any member to disallow further issuance until fees is paid.
  • Easy Search: Easily search for books and members by Name, ID, or other attributes through the sidebar.
  • Database Migrations: Easily manage database schema changes with Flask-Migrate.
  • Frappe API Import: Directly import books via the API by Frappe using either/any Title, ISBN, Authors, and Publisher.

Demo Usage

  • Go to the demo deployment - https://devparanjay.pythonanywhere.com/
  • Use these credentials when prompted -
    • Username: demo
    • Password: librasic
  • Optionaly import the demo data from Github via the "Import Books" page, since PythonAnywhere does not work Frappe API.

Installation

  1. Clone the repository:
git clone https://github.com/devparanjay/librasic.git
  1. Navigate to the project directory:
cd librasic

2.5 Create and activate a virtual environment (optional):

virtualenv env

Windows -

env/Scripts/activate

Linux -

source env/bin/activate
  1. Install the required Python packages:
pip install -r requirements.txt

Usage

  1. Configure the variables in the librasic/librasic/envconfig.json file:
{
    "LIBRARIAN_USERNAME": "uu",
    "LIBRARIAN_PASSWORD": "pp",
    "DEFAULT_RENT_FEE": 20,
    "DEFAULT_LATE_FEE": 50
}

To run the application, execute the following command in the project directory:

python run.py

Development

This project uses Flask for the web framework and SQLAlchemy for the ORM. Migrations are handled by Alembic.

Roadmap

  • Delete Functionality: Implement the delete function for Books and Members. Highest Priority Completed
  • Table Sorting: Allow sorting tables by ascending or descending table headers in all tables. Highest Priority
  • Table Filters: Implement filters for table headers in all tables. High Priority
  • Mobile Responsiveness: While the webapp works just fine on smaller devices, some things are visually broken here and there that need to be fixed. High Priority
  • Better Security: Implement better security for storing sensitive data that does not expose credentials in a simple JSON config file. Medium Priority
  • Better Database: Librasic currently uses Python's SQLite3 for its database, but it's not an idea solution. Move to PostgreSQL. Low Priority
  • Better Authentication: Implement better authentication if it exists. Better = equaly simple but provides more security. Low Priority
  • Fee Payment Records: Implement storing and display of fee payment records. Low Priority
  • Statistics and Reports: Generate statistics and reports on book circulation, popular genres, and member activity. Lowest Priority

Screenshots

  • Dashboard: devparanjay pythonanywhere com dashboard

  • Books: devparanjay pythonanywhere com books

  • Members: devparanjay pythonanywhere com members

  • Issue Records: devparanjay pythonanywhere com issue-records

  • Import Books: devparanjay pythonanywhere com import-books

  • Fees Payment: devparanjay pythonanywhere com fees-payment

  • Search: devparanjay pythonanywhere com search

  • Add Book: devparanjay pythonanywhere com add-book

  • Edit Book: devparanjay pythonanywhere com edit-book

  • Add Member: devparanjay pythonanywhere com add-member

  • Issue Book: devparanjay pythonanywhere com new-issue

  • Return Book: devparanjay pythonanywhere com return-issued-book

Feedback, Bugs, and Issues

Something not working right? Something could be done better? Something that should be there but isn't? Feel free to create an issue and we'll figure it out! :D

Contributing

Contributions are welcome! Please create a detailed issue first and proceed with the PR if and once assigned.

License

This project is licensed under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE. See the LICENSE file for details.

About

Simple management for simple libraries. Streamlined Library Management. Built with - Python, Bootstrap 5, Flask, and SQLAlchemy; Librasic offers a simple, basic, and efficient solution for managing books, members, and transactions for tiny to small libraries.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published