Design a Library Management System
| Difficulty: Medium | Source: awesome-low-level-design |
Requirements
- Manage books, members, borrowing activities
- Add, update, remove books from catalog
- Book details: title, author, ISBN, year, availability
- Members borrow and return books
- Member details: name, id, contact, borrowing history
- Enforce borrowing rules (max books, duration)
- Handle concurrent access
- Extensible
Class Diagram

Classes, Interfaces and Enumerations
| Class/Interface | Description |
|---|---|
| Book | ISBN, title, author, year, availability |
| Member | Id, name, contact, borrowed books list |
| LibraryManager | Singleton; ConcurrentHashMap; add/remove books, register members, borrow/return, search |
Design Patterns Used
| Pattern | Application |
|---|---|
| Singleton | LibraryManager ensures a single centralized catalog and member registry |
Code Implementations
| Language | Source Code |
|---|---|
| Java | View on GitHub |
| Python | View on GitHub |
| C++ | View on GitHub |
| C# | View on GitHub |
| Go | View on GitHub |