Simple management for simple libraries.
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.
- 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.
- Go to the demo deployment - https://devparanjay.pythonanywhere.com/
- Use these credentials when prompted -
- Username:
demo
- Password:
librasic
- Username:
- Optionaly import the demo data from Github via the "Import Books" page, since PythonAnywhere does not work Frappe API.
- Clone the repository:
git clone https://github.com/devparanjay/librasic.git
- 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
- Install the required Python packages:
pip install -r requirements.txt
- 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
This project uses Flask for the web framework and SQLAlchemy for the ORM. Migrations are handled by Alembic.
Delete Functionality: Implement the delete function for Books and Members. Highest Priority- 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
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
Contributions are welcome! Please create a detailed issue first and proceed with the PR if and once assigned.
This project is licensed under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE. See the LICENSE file for details.