- 📄 Project Description
- 🎯 Motivation
- 🚀 Features
- 📅 Project Management
- 📖 Documentation
- 🛠 Technologies Used
- 📦 Installation and Configuration
- 🧪 Testing
- 🤝 Contributions
- 📧 Contact
Library Manager is a library management system that allows you to manage book inventories, handle loans, and manage users. This project was developed as part of an educational exercise to reinforce concepts of Python, PostgreSQL, and testing techniques, using agile methodologies. Please note: This project is still under development, and some features and improvements are yet to be implemented. Contributions and suggestions are welcome as we continue to enhance the system.
This project was developed as part of a bootcamp to practice backend development with Python and PostgreSQL. The goal is to provide a hands-on experience in building a comprehensive tool for managing library operations, including book inventories, user registration, and loan processes. By working on this project, participants gain practical skills in Python, database management, and testing, while applying best practices in software development.
- Create: Register new books in the system.
- Read: Search and consult books by different criteria (title, author, category, etc.).
- Update: Update information on existing books.
- Delete: Remove books from the inventory.
- Validation: Ensure no duplicates in the inventory using appropriate validations.
- Create: Add new categories and tags for classifying books.
- Read: View existing categories and their associated tags.
- Update: Modify existing categories and their details.
- Delete: Remove categories and tags from the system.
- Create: Register loans of books to users.
- Read: View and track loan statuses and return dates.
- Update: Update loan information upon return of books.
- Delete: Manage loan records as needed.
- Notifications: Notify users about return dates and delays.
- Create: Register new users in the library system.
- Read: Search and consult users by different criteria (name, membership number, etc.).
- Update: Update user information.
- Delete: Remove users from the system.
- Validation: Ensure no duplicate users using appropriate validations.
This project was developed by a team of 6 developers using SCRUM. Tools like Jira were used for backlog management and sprint planning.
- Algorithm Flowchart: A flowchart illustrating the main algorithms implemented in the project, available on Miro.
- Data Model: A diagram showing the key entities of the system and their relationships, available on DrawSQL.
- Project Management (Jira):
- Jira Board: Access to the Jira board where user stories and tasks are managed. Note: This link is private and only accessible to authorized project members. Contact the administrator Jessica.
- Language: Python (v3.12.4)
- Database: PostgreSQL (v16.2)
- Testing: Pytest (v8.3.2), Unittest (integrated with Python)
- Version Control: Git (v2.45.2) with GitFlow
- Agile Methodologies: SCRUM
-
Clone the repository:
git clone [https://github.com/evymari/library_manager.git] cd library_manager -
Create and activate a virtual environment:
python -m venv venv source venv/bin/activate o venv\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt
-
Configure the database:
Create a database in PostgreSQL.
Configure the .env file with the database credentials.
-
Run unit and integration tests:
pytest
- Unit Tests: Verify the functionality of individual components, ensuring that each function and method works as intended.
- Integration Tests: Ensure that different modules and components work together seamlessly.
- The test suite has achieved a code coverage of over 80%, meeting the project requirements.
- This level of coverage ensures that the majority of the codebase is well-tested, reducing the risk of bugs and ensuring the reliability of core functionalities.
- To check the code coverage yourself, follow these steps:
- Install the coverage package if you haven't already:
pip install coverage
- Run the tests with coverage:
coverage run -m pytest
- Generate a coverage report:
coverage report
- Install the coverage package if you haven't already:
- The coverage report will provide detailed insights into which parts of the codebase are covered by tests and which parts might need additional testing.
Contributions are welcome. Please open an issue or submit a pull request for any improvements.
For any inquiries, you can reach out to us through our GitHub and LinkedIn profiles: