Browse the collection
Search the shelves. Sign in to borrow.
About this library
A multi-user library system showing the same Java OOP design from the Computer Programming 2 syllabus β ported to ES2022 so it runs as a static GitHub Pages site.
How it works
- Members sign in to borrow books, see their active loans and any outstanding fines.
- Librarians issue and return loans, register new books and members.
- Admins do everything: manage staff, run reports, export the catalogue as CSV.
Loan rules
- Standard loan period: 14 days.
- Overdue fine: $0.25 per day, computed automatically on return.
- A book cannot be loaned if no copies are available.
Demo accounts
| Role | Username | Password |
|---|---|---|
| Admin | admin | admin123 |
| Librarian | librarian | lib123 |
| Member | member | mem123 |
Java OOP concepts implemented
- Encapsulation β private
#fields with validated setters. - Inheritance β abstract
Userextended byAdmin/Librarian/Member. - Polymorphism β
describePermissions()overridden in every subclass. - Abstraction / interfaces β generic
Persistable<T>DAO contract. - Exception hierarchy β
LibraryExceptionβAuthentication,BookNotAvailable,Validation,NotFound. - File I/O β RFC-4180-aware CSV import / export.
- Multi-user with auth + authorisation β role-based dashboards,
requireAction()guards.