{"id":20442152,"url":"https://github.com/camilo6castell/library-management-system","last_synced_at":"2026-05-15T13:34:59.261Z","repository":{"id":251693014,"uuid":"767291917","full_name":"camilo6castell/library-management-system","owner":"camilo6castell","description":"[EN][please see the README.md] Este proyecto hecho en Java para la administración de usuarios y textos, implementa el paradigma de programación orientada a objetos, patrones de diseño y testing. ","archived":false,"fork":false,"pushed_at":"2024-08-05T23:19:32.000Z","size":133,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"develop","last_synced_at":"2025-08-28T09:53:45.199Z","etag":null,"topics":["java","junit","mockito","patterns-design","poo"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/camilo6castell.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-03-05T02:56:02.000Z","updated_at":"2024-08-05T23:32:15.000Z","dependencies_parsed_at":"2024-08-06T02:01:17.973Z","dependency_job_id":null,"html_url":"https://github.com/camilo6castell/library-management-system","commit_stats":null,"previous_names":["camilo6castell/library-manager","camilo6castell/library-management-system"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/camilo6castell/library-management-system","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/camilo6castell%2Flibrary-management-system","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/camilo6castell%2Flibrary-management-system/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/camilo6castell%2Flibrary-management-system/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/camilo6castell%2Flibrary-management-system/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/camilo6castell","download_url":"https://codeload.github.com/camilo6castell/library-management-system/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/camilo6castell%2Flibrary-management-system/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33068645,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-15T11:35:32.926Z","status":"ssl_error","status_checked_at":"2026-05-15T11:35:31.362Z","response_time":103,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","junit","mockito","patterns-design","poo"],"created_at":"2024-11-15T09:37:48.444Z","updated_at":"2026-05-15T13:34:59.223Z","avatar_url":"https://github.com/camilo6castell.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# Library Management System\n\n![Java](https://img.shields.io/badge/Java-007396?style=for-the-badge\u0026logo=java\u0026logoColor=white)\n![Maven](https://img.shields.io/badge/Maven-C71A36?style=for-the-badge\u0026logo=apachemaven\u0026logoColor=white)\n![JUnit](https://img.shields.io/badge/JUnit-25A162?style=for-the-badge\u0026logo=junit5\u0026logoColor=white)\n![Mockito](https://img.shields.io/badge/Mockito-DB7093?style=for-the-badge\u0026logo=mockito\u0026logoColor=white)\n\n## About\n\n**Library Management System** is a console-based project developed in Java for the administration of a library, including users and texts.\n\nThis project utilizes various design patterns and includes unit tests to ensure functionality and reliability. It is built using Maven for dependency management and Mockito for mocking in unit tests.\n\n## Features\n\n1. **User Management**: Add, update, and delete library users.\n2. **Text Management**: Add, update, and delete books and novels.\n3. **Design Patterns**: Implementation of Prototype and Command design patterns.\n4. **Unit Testing**: Comprehensive unit tests for various use cases.\n\n## Installation\n\nTo run this project locally, follow these steps:\n\n1. **Clone the repository:**\n    ```bash\n    git clone https://github.com/camilo6castell/library-manager.git\n    cd library-manager\n    ```\n\n2. **Install dependencies:**\n    ```bash\n    mvn clean install\n    ```\n\n3. **Run the application:**\n    ```bash\n    mvn exec:java -Dexec.mainClass=\"src.Main\"\n    ```\n\n## Design Patterns\n\n### Prototype Pattern\n\nThe Prototype pattern is used to create copies of existing objects. It is implemented in the following files:\n\n- **Objects with the `clone` method:**\n  ```plaintext\n  src/main/java/src/models/texts/Book.java\n  src/main/java/src/models/texts/Novel.java\n  ```\n\n- **Implementation:**\n  ```plaintext\n  src/main/java/src/usecases/book/UpdateBookUseCase.java\n  src/main/java/src/usecases/novel/UpdateNovelUseCase.java\n  ```\n\n### Command Pattern\n\nThe Command pattern is used to encapsulate all information needed to perform an action or trigger an event. It is implemented in the following files:\n\n- **Command Interface:**\n  ```plaintext\n  src/main/java/src/usecases/ui/menu/command/Command.java\n  ```\n\n- **Invoker:**\n  ```plaintext\n  src/main/java/src/usecases/ui/menu/command/Invoker.java\n  ```\n\n- **Commands:**\n  ```plaintext\n  src/main/java/src/usecases/ui/menu/command/AdministratorCommand.java\n  src/main/java/src/usecases/ui/menu/command/AssistantCommand.java\n  src/main/java/src/usecases/ui/menu/command/ReaderCommand.java\n  ```\n\n- **Implementation:**\n  ```plaintext\n  src/main/java/src/usecases/ui/menu/ShowLogInMenuUseCase.java\n  ```\n\n## Unit Tests\n\nUnit tests are located in the following directory:\n```plaintext\nsrc/test/java/usecases*\n```\n\n## Contact\n\nFeel free to reach out to me through any of the following platforms:\n\n- [LinkedIn](https://www.linkedin.com/in/camilocastell/)\n- [GitHub](https://github.com/camilo6castell)\n\n## License\n\nThis project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcamilo6castell%2Flibrary-management-system","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcamilo6castell%2Flibrary-management-system","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcamilo6castell%2Flibrary-management-system/lists"}