The purpose of this document is to provide all the necessary information about the Q.U.A.C.K. Library Management System. It will cover a general overview of the project and its intentions, a summary of how our project came to and the process by which we got here, technical details on what exactly is happening behind the scenes, and finally, how the project fits with some basic Agile principles. In one sentence, the best way to explain the Q.U.A.C.K. Library Management System is its a locally-hosted web app with a clean and intuitive UI to interact with a library’s NoSQL cloud Database.
It fits in with the challenge statement/problem that was given at the start of the development in that it features password encryption, an inventory of books and movies that is accessible from any machine with resources that are easily updatable, user data is stored and features hierarchy that allows for different classes of user, and finally, an event system that has an interactive calendar for scheduling events and RSVP functionality for library members.
The software architecture pattern is client-server because we felt the project would be based around the shared library inventory data. That also ties into our decision to use a shared database architecture. Since the database does not have many components, a shared database would work just fine and keep project complexity down.
MongoDB was used as the database for this project. It was chosen because it is NoSQL which provides freedom to layout our database as we saw fit.
The other main tool was Flask which was used to route pages and load HTML files. It was chosen because it interacts well with MongoDB in a development stack. The user interface part of the system context model refers to the HTML pages displayed by Flask and is what allows the user to navigate through the services of our system.
requirements.txt describes all packages/libraries needed for compilation. It is recommended packages/libraries are installed in a virtual environment for the purpose of consistency across all development platforms. To check what is already installed (most desirably inside of virtual environment), enter "pip freeze" To put these into the requirements.txt file, enter "pip freeze > requirements.txt"
To make things simple, if a package/library is manually installed, edit this README with the command you used, seeing as many are dependencies for a single package installed...
pip install flask
pip install pymongo
pip install cryptography
The following are example pages of the web app.
Manage Users Page (Admin POV):
Create Event Page (Admin POV):