{"id":28492016,"url":"https://github.com/paricoderdeveloper/library_managment","last_synced_at":"2026-04-30T01:38:07.961Z","repository":{"id":285348085,"uuid":"957809420","full_name":"PariCoderDeveloper/Library_Managment","owner":"PariCoderDeveloper","description":"The Library Management System is a desktop application for managing books, authors, and user profiles. It allows users to add, update, and delete data, using SQLAlchemy for database management. The system follows the Repository Design Pattern for organized and efficient data access.","archived":false,"fork":false,"pushed_at":"2025-05-25T05:23:42.000Z","size":79,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-08T08:09:16.949Z","etag":null,"topics":["alembic","crudoperations","databasemanagement","librarymanagementsystem","orm","python","repositorypattern","sqlalchemy","sqlite"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PariCoderDeveloper.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null}},"created_at":"2025-03-31T07:03:12.000Z","updated_at":"2025-06-07T16:37:12.000Z","dependencies_parsed_at":null,"dependency_job_id":"9c502697-e539-4f8f-81a0-b1d6018233ce","html_url":"https://github.com/PariCoderDeveloper/Library_Managment","commit_stats":null,"previous_names":["parisaalizadeh2003/library_managment","paricoderdeveloper/library_managment"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/PariCoderDeveloper/Library_Managment","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PariCoderDeveloper%2FLibrary_Managment","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PariCoderDeveloper%2FLibrary_Managment/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PariCoderDeveloper%2FLibrary_Managment/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PariCoderDeveloper%2FLibrary_Managment/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PariCoderDeveloper","download_url":"https://codeload.github.com/PariCoderDeveloper/Library_Managment/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PariCoderDeveloper%2FLibrary_Managment/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275981120,"owners_count":25564138,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-19T02:00:09.700Z","response_time":108,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["alembic","crudoperations","databasemanagement","librarymanagementsystem","orm","python","repositorypattern","sqlalchemy","sqlite"],"created_at":"2025-06-08T08:09:19.946Z","updated_at":"2025-09-19T17:57:39.631Z","avatar_url":"https://github.com/PariCoderDeveloper.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# 📚 Library Management System\n\nA cross-platform desktop application for managing a library’s collection of books, authors, and user profiles.  \nBuilt with **Python 3**, **Kivy** for the GUI, and **SQLite** via **SQLAlchemy** for data persistence.  \nFollows the Repository Design Pattern for clean separation of concerns.\n\n---\n\n## 🧐 Code Review Summary\n\n- **Modular \u0026 OOP-based**  \n  – Classes for `Book`, `Author`, `User`, and a separate `Repository` layer keep business logic neatly encapsulated.  \n- **SQLAlchemy ORM**  \n  – Smooth integration with SQLite; sessions are managed appropriately in each repository.  \n- **Kivy GUI**  \n  – Declarative `.kv` layout files paired with well-named Python callbacks; screens are organized via a `ScreenManager`.  \n- **Areas for Improvement**  \n  1. **Error Handling \u0026 Validation**  \n     – Validate user input (e.g. non-empty strings, numeric fields). Wrap DB commits in try/except.  \n  2. **Packaging \u0026 CLI**  \n     – Consider a `setup.py` or `pyproject.toml` so users can `pip install .` and run via a console entry-point.  \n  3. **Tests**  \n     – Add a `tests/` folder with unit tests for each repository using `pytest` and an in-memory SQLite DB.  \n  4. **Logging**  \n     – Integrate Python’s `logging` module to capture runtime errors and user actions.\n\n---\n\n## ✨ Features\n\n- ➕ Add, edit, and delete books  \n- 👤 Manage authors and user profiles  \n- 🔍 Search and filter the book collection  \n- 💾 Persistent storage using SQLite (no external DB server needed)  \n- 🖥️ Modern, touch-friendly GUI built with Kivy  \n- 🗂️ Clean data access via Repository Pattern\n\n---\n\n## 🛠️ Tech Stack\n\n- **Language:** Python 3.7+  \n- **GUI:** Kivy  \n- **Database:** SQLite (via SQLAlchemy ORM)  \n- **Architecture:** OOP + Repository Pattern  \n\n---\n\n## 📂 Project Structure\n\n```plaintext\nLibrary_Managment/\n├── src/\n│   ├── models/                # SQLAlchemy ORM models\n│   │   ├── book.py\n│   │   ├── author.py\n│   │   └── user.py\n│   ├── repositories/          # Repository classes wrapping session \u0026 CRUD\n│   │   ├── book_repo.py\n│   │   ├── author_repo.py\n│   │   └── user_repo.py\n│   ├── gui/                   # Kivy app code \u0026 KV layout files\n│   │   ├── main.py            # App entry point and ScreenManager setup\n│   │   ├── library.kv         # Kivy language file defining screens \u0026 widgets\n│   │   ├── book_screen.py\n│   │   ├── author_screen.py\n│   │   └── user_screen.py\n│   ├── database.py            # Engine \u0026 session factory (with init_db())\n│   └── main.py                # Top-level launcher (imports and runs gui/main.py)\n├── requirements.txt           # SQLAlchemy, Kivy, etc.\n├── library.db                 # (auto-created) SQLite data file\n├── LICENSE\n└── README.md\n````\n\n---\n\n## 💾 Installation\n\n1. **Clone this repository**\n\n   ```bash\n   git clone https://github.com/PariCoderDeveloper/Library_Managment.git\n   cd Library_Managment\n   ```\n\n2. **Create \u0026 activate a virtual environment** (recommended)\n\n   ```bash\n   python3 -m venv venv\n   source venv/bin/activate    # macOS/Linux\n   venv\\Scripts\\activate       # Windows\n   ```\n\n3. **Install dependencies**\n\n   ```bash\n   pip install -r requirements.txt\n   ```\n\n   \u003e *requirements.txt* should include at least:\n   \u003e\n   \u003e ```\n   \u003e kivy\n   \u003e SQLAlchemy\n   \u003e ```\n\n---\n\n## ▶️ Usage\n\n1. **Initialize the database** (first run only)\n\n   ```bash\n   python -c \"from database import init_db; init_db()\"\n   ```\n2. **Launch the application**\n\n   ```bash\n   python src/gui/main.py\n   ```\n\nThe Kivy window will open, letting you switch between **Books**, **Authors**, and **Users** screens. All changes persist to `library.db` in the project root.\n\n---\n\n## 🛠️ Development\n\n* **Run tests** (once you add them)\n\n  ```bash\n  pytest\n  ```\n* **Lint \u0026 format**\n\n  ```bash\n  black src\n  flake8 src\n  ```\n\n---\n\n## 🚀 Future Improvements\n\n* ✅ Add user authentication \u0026 roles (e.g. Admin vs. Member)\n* ✅ Export/import book data as CSV\n* 🌈 Theme support (using Kivy’s styles or third-party themes)\n* 🧪 Comprehensive unit \u0026 integration tests\n* 📦 Build distributable packages (e.g. via PyInstaller or Buildozer)\n\n---\n\n## 🤝 Contributing\n\n1. **Fork** this repo\n2. **Create** your feature branch:\n\n   ```bash\n   git checkout -b feature/my-feature\n   ```\n3. **Commit** your changes:\n\n   ```bash\n   git commit -m \"Add my feature\"\n   ```\n4. **Push** to your branch:\n\n   ```bash\n   git push origin feature/my-feature\n   ```\n5. **Open** a Pull Request here on GitHub.\n\n---\n\n## 📄 License\n\nThis project is licensed under the **MIT License**. See [LICENSE](LICENSE) for details.\n\n---\n\n## 📬 Contact\n\n**Pari Coder**\n\n* GitHub: [@PariCoderDeveloper](https://github.com/PariCoderDeveloper)\n* Email: [parisaalizadeh13821382@gmail.com](mailto:parisaalizadeh13821382@gmail.com)\n\nFeel free to open an issue if you run into any problems or have suggestions!\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparicoderdeveloper%2Flibrary_managment","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fparicoderdeveloper%2Flibrary_managment","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparicoderdeveloper%2Flibrary_managment/lists"}