A multi-user Library Management Application with a single Librarian and multiple users/students was created using Vue, JavaScript framework in the frontend, and SQLite DB and flask in the backend. The web app shall support all the features of similar Library Management apps like Amazon e-books.
Check out the application demo here.
- Vue – JavaScript based Progressive web framework
- Bootstrap – HTML and CSS styling
- Flask – Python based web framework
- Celery – For automatic job scheduling and execution
- Redis - Works in tandem with celery to store and execute jobs
- Mailhog - To simulate an SMTP server to send emails
- Jinja2 – Template engine for forma ng emails
- SQLite – for data storage
- SQLAlchemy – ORM mapper to manage data in python
- Application Frontend is implemented in vue3 framework as a Single Page Application
- Application Backend is implemented using Flask framework
- Multi Users, such as Librarian and students, are supported
- General User login is present and uses Role-based access control (RBAC) to login a user
- Librarian can also login using the same form
- JWT based Token Authentication is used
- User can request, read, return e-books
- A user can access a book for only 7 days, after that the book is automatically revoked
- A user can issue a maximum of 5 books at a time
- A rating by the user can be given to each already read book
- Only 1 librarian exists in the application
- Librarian can add new sections/e-books, edit existing sections/e-books, delete sections/e-books issue/revoke access for a book
- A daily reminder is sent to all the users, via email, who have not logged in our application on each day
- A monthly activity report is also sent to each user, via email, showing them what all books they read in that month
Follow these steps to set up LibPortal on your local machine:
git clone https://github.com/Gupta-Aryaman/LibPortal.git
cd LibPortal
- Replace DB_PATH and UPLOAD_FOLDER in .env file with your folder path
DB_PATH=<your-project-folder-path>/backend/db
UPLOAD_FOLDER=<your-project-folder-path>/frontend/public/images
- Open a terminal
cd backend
pipenv install
pipenv shell
- To run the backend server -
python main.py --debug
- Open a new terminal -
cd frontend
npm install .
npm run dev
- Open a new terminal -
cd backend
pipenv shell
// to setup celery beat
celery -A main.celery beat --max-interval 1 -l info
- Running the celery worker
Open a new terminal -
cd backend
pipenv shell
// to run celery
celery -A main.celery worker -l info
sudo apt-get -y install golang-go
go install github.com/mailhog/MailHog@latest
~/go/bin/MailHog