Your job is to implement a new library system. We will evaluate your solution in order to get a feel for your skill level and craftsmanship. The way you implement the system is up to you, but try to keep it as simple as you can. Deliver the code in a state that makes you feel proud of it. Also remember that there are no correct or incorrect solutions, as long as you can explain your choices. Post the code on Github, Gitlab or any other remote repository of your choice which is publicly accessible.
- The library can supply an overview of its inventory of books
- The library can supply an overview of its members
- New books can be added to the inventory of the library
- The library can have multiple copies of a book in its inventory
- New members can be added to the library
- A member should be unique within the library
- A member can lend available books from the library
- A member can tell which books are currently in his possession
- A member can return books in his possession to the library
- A member is allowed a maximum of seven loaned items at a time
- A book can only be in the possession of a single member at a time
- The library can always tell where the copy of a book is (in its inventory or at which member)
- Books can be removed from the inventory if they are not currently loaned out
- Try to keep the solution simple;
- Try to implement the system incrementally
- We value XP practices and clean code