A web application built to help librarians manage eBooks and digital lending workflows. The project delivers a user-friendly frontend for catalog management and a robust Python backend that handles storage, search, and basic analytics for library usage.
- Project: Library Management System (E-Book Librarian)
- Owner: 404-GeniusNotFound
- Stack: HTML (frontend), Python (backend)
- Purpose: Simplify ebook cataloging, lending, and reporting for small-to-medium libraries
This application provides librarians with a lightweight web interface to:
- Upload and manage ebook metadata and files
- Search and filter collections by author, genre, tags, and availability
- Track checkouts, returns, and digital loans
- Export basic usage reports and statistics
The design prioritizes simplicity and deployability so it can be used in low-resource environments or integrated into a larger system.
- Intuitive catalog CRUD (Create / Read / Update / Delete) for ebooks
- Full-text search and faceted filtering (author, genre, tags, year)
- Borrowing workflow: check out, return, and reservation system
- User roles: librarian (admin) and patron (read-only) with access controls
- CSV import/export for bulk metadata operations
- Lightweight analytics: most-borrowed titles, active patrons, and loan durations
- Simple audit log for catalog changes
- Built with semantic HTML, responsive layout, and minimal JavaScript to keep the UI fast and accessible.
- Views include Dashboard, Catalog, Ebook Detail, Borrowing Ledger, and Reports.
- Focus on usability for librarians (keyboard shortcuts, bulk actions, and inline edits).
- Python-based RESTful API powering CRUD, search, and reporting endpoints.
- Clear separation between models, services, and routes to keep logic testable and maintainable.
- Handles file uploads (ebook files and cover images) with secure storage and streaming for downloads.
- Ebook metadata model includes title, author, publisher, year, ISBN, tags, categories, and availability status.
- Borrowing model stores patron, ebook, checkout time, due date, and return time.
- Designed to work with SQLite for quick setups and PostgreSQL/MySQL for production deployments.
- Lightweight search implementation (SQL full-text or simple inverted-index) enabling quick title/author lookups and faceted filtering.
- Optional indexing job for larger catalogs to improve lookup performance.
- Simple role-based access control: librarian (management privileges) and patron (view-only).
- Session-based or token-based auth supported to allow integration with institutional SSO.
- Can run as a single-process app for small libraries or behind a WSGI server (Gunicorn/Uvicorn) with a reverse proxy (Nginx) for production.
- File storage can be local or backed by S3-compatible object storage for larger installations.
- Environment variables (example):
APP_ENV— development | productionDATABASE_URL— SQLite or Postgres connection stringSECRET_KEY— application secret for sessionsSTORAGE_PATHorS3_*variables for file storage
- Configuration file or .env support included for easy setup.
- Designed for catalogs from a few hundred to tens of thousands of ebooks.
- Fast catalog browsing and search for typical small-library datasets.
- Lightweight analytics suitable for operational reporting and trends.
- Clone the repository.
- Create and activate a Python virtual environment.
- python -m venv .venv
- source .venv/bin/activate (or ..venv\Scripts\activate on Windows)
- Install dependencies:
- pip install -r requirements.txt
- Configure environment variables (see
.env.example). - Initialize the database:
- python manage.py migrate (or provided migration command)
- (Optional) Import sample data or run the CSV importer.
- Start the development server:
- python manage.py runserver (or
flask run/uvicorn app:app --reloaddepending on stack)
- python manage.py runserver (or
- Open http://localhost:8000 (or configured port) and log in with the default librarian account (see docs).
- For file upload issues, verify
STORAGE_PATHis writable or S3 credentials are correct. - Use a production-ready DB (Postgres) for catalogs > 10k records.
- Run background indexing tasks if you notice slow search responses on large catalogs.
- /app — application code (models, views, services)
- /static — CSS, JS, images
- /templates — HTML templates
- /migrations — DB migrations
- /data — sample data and CSV import/export utilities
- Full-text OCR ingestion for scanned PDFs
- Advanced recommendation engine (similar titles / collaborative filtering)
- Multi-branch library support and inter-branch loans
- Integration with external cataloging standards (MARC21) and ISBN lookups
- Scheduled reporting and email notifications for overdue items
Created by 404-GeniusNotFound