Description: Cataloging and Lending App Project for CS 3240 Software Engineering at the University of Virginia.
Please use a virtual environment. After cloning, run:
- cd .\Textbook-Lending-Web-App\
- py -m venv .venv
- .venv\Scripts\activate (Windows) OR source .venv/bin/activate (MacOS)
- pip install -r requirements.txt
- python3 manage.py runserver
Note that you automatically connect to the live database, even when running locally. The main branch has Amazon S3 configured, which cannot be accessed locally. Profile Pictures and Item Pictures will not appear locally.
Role: Software Architect
-
Profile System
- Designed and implemented the
Profilemodel to distinguish between Librarians and Patrons.
- Designed and implemented the
-
Collections Feature
- Built the
Collectionmodel, including:- A page to view all collections
- A detailed collection view page
- Enabled owners and librarians to edit and delete their collections.
- Enforced rules:
- Private items cannot be added when creating new collections.
- Private collections cannot be created if the item already exists in another collection.
- Implemented a feature for patrons to request access to private collections.
- Built the
-
Requirements & Documentation
- Led requirements changes for collections.
- Authored a comprehensive report documenting changes.
-
Project Management & Debugging
- Managed unexpected project changes.
- Completed various debugging tasks.
- Ensured other requirements-related tasks were properly completed.
| Library / Framework | License | URL |
|---|---|---|
| Django | BSD-3 | Link |
| django-allauth | MIT | Link |
| gunicorn | MIT | Link |
| psycopg2-binary | LGPL-3.0 | Link |
| whitenoise | MIT | Link |
| Pillow | HPND | Link |
| django-storages | BSD-3-Clause | Link |
| boto3 | Apache-2.0 | Link |
| social-auth-app-django | BSD-3-Clause | Link |
| celery | BSD-3-Clause | Link |
| djangorestframework | BSD-3-Clause | Link |
Given that our project is a Django-based cataloging and lending application, and considering the licenses of the dependencies (primarily permissive licenses like MIT, BSD, and Apache 2.0), releasing our project under the MIT License would be a suitable choice. The MIT License is widely used, simple, and permissive, allowing others to use, modify, and distribute our code with minimal restrictions.