How letsafko/library-management works
Library Management is an HTTP library-loan system: clients manage books and members, borrow and return copies, and query penalties. The documented architecture routes API requests through application handlers, which apply domain rules and use repositories for persistence; validation and logging decorate handlers. The graph preserves the main documented use cases. Some endpoint-to-handler wiring and persistence details are inferred only from the documented layer boundaries, so uncertain internal calls are omitted.
Main entry points: ReturnBookCommandHandler.cs Return Handler · BorrowBookCommandHandler.cs Borrow Handler · BookRepository.cs Book Repository · MemberRepository.cs Member Repository
Components 23
HTTP API
- Create Book
src/Api/Endpoints/Books/Create/Endpoint.cs - Add Copy
src/Api/Endpoints/Books/AddCopy/Endpoint.cs - Borrow Copy
src/Api/Endpoints/Books/Borrow/Endpoint.cs - Return Copy
src/Api/Endpoints/Books/Returns/Endpoint.cs - Create Member
src/Api/Endpoints/Members/Create/Endpoint.cs - Get Penalties
src/Api/Endpoints/Members/GetPenalties/Endpoint.cs
Use Cases
- Create Book Handler
src/Application/Features/Books/Create/CreateBookCommandHandler.cs - Add Copy Handler
src/Application/Features/Books/AddCopy/AddBookCopyCommandHandler.cs - Borrow Handler
src/Application/Features/Books/Borrow/BorrowBookCommandHandler.cs - Return Handler
src/Application/Features/Books/Returns/ReturnBookCommandHandler.cs - Create Member Handler
src/Application/Features/Members/Create/CreateMemberCommandHandler.cs - Penalty Query Handler
src/Application/Features/Members/GetPenalties/GetMemberPenaltiesQueryHandler.cs - Validation Decorator
src/Infrastructure/Behaviors/ValidationDecorator.cs - Logging Decorator
src/Infrastructure/Behaviors/LoggingDecorator.cs
Library Domain
Persistence
- Book Repository
src/Infrastructure/Persistence/BookRepository.cs - Member Repository
src/Infrastructure/Persistence/MemberRepository.cs - EF Core Context
src/Infrastructure/Persistence/ApplicationDbContext.cs
Other components
- API Client
- PostgreSQL
- Date-Time Provider
src/SharedKernel/Primitives/IDateTimeProvider.cs
Connections 35
- API Client → Create Book: sends request
- API Client → Add Copy: sends request
- API Client → Borrow Copy: sends request
- API Client → Return Copy: sends request
- API Client → Create Member: sends request
- API Client → Get Penalties: sends request
- Create Book → Create Book Handler: dispatches command
- Add Copy → Add Copy Handler: dispatches command
- Borrow Copy → Borrow Handler: dispatches command
- Return Copy → Return Handler: dispatches command
- Create Member → Create Member Handler: dispatches command
- Get Penalties → Penalty Query Handler: dispatches query
- Create Book Handler → Books: creates book
- Create Book Handler → Book Repository: adds book
- Add Copy Handler → Book Repository: loads and updates
- Add Copy Handler → Books: adds copy
- Borrow Handler → Member Repository: loads and updates
- Borrow Handler → Book Repository: loads copy
- Borrow Handler → Members: borrows copy
- Borrow Handler → Date-Time Provider: reads time
- Return Handler → Member Repository: loads and updates
- Return Handler → Book Repository: loads and updates
- Return Handler → Members: returns loan
- Return Handler → Books: marks returned
- Return Handler → Date-Time Provider: reads time
- Create Member Handler → Members: creates member
- Create Member Handler → Member Repository: adds member
- Create Member Handler → Date-Time Provider: reads time
- Penalty Query Handler → Member Repository: loads member
- Penalty Query Handler → Members: calculates penalties
- Penalty Query Handler → Date-Time Provider: reads time
- Book Repository → EF Core Context: queries and saves
- Member Repository → EF Core Context: queries and saves
- EF Core Context → PostgreSQL: persists data
- Validation Decorator → Logging Decorator: wraps handler