Features/Assumptions/Design:
- User can have either Member or Librarian Roles assigned while signup
- Roles are fetched from backend while loggin in
- JWT token issued when logged in and set as cookie
- User can buy multiple books
- Librarians can filter books by keywords using search facility
- Librarians can update other members password
- Librarians can assign/deassign books
- Librarians can add/delete book resources
- Minimum efforts have been put for styling
- Other Users ( Members) can add/return books and view the available ones
- Logout feature destroys JWT tokens and fresh login is required
- Two Tables LibraryUsers - for storing Users , Books- for storing book resources
- User_id mapped as foreign keys for books tables
-
Detail Folder Structure:
. └── library_management/ ├── .envs ├── core - (core app - all MVT logic lives here)/ │ ├── urls.py │ ├── forms.py │ ├── models.py │ ├── tokens.py │ └── views.py │ ├── decorators.py │ └── admin.py ├── templates/ │ ├── all templates rendered lives here/ ├── requirements.txt ├── vercel.json |__ .gitignore └── manage.py
- Create and active virtual environment ( $ python3 -m venv env then $ source env/bin/activate)
- git clone
- cd to directory where manage.py lives
- $ python manage.py migrate
- $ python manage.py makemigrations
- $ pyython manage.py runserver
- Edit databases in settings.py for local dev or use sqlite defaults. Currently the repo usees railways postgres db
- visit http://127.0.0.1:8000/core/login/