Library Management System screenshot 1

Built a complete library system in plain Java

A complete library system (members, catalogue, loans, and fines) built from scratch in plain Java to practise clean architecture and solid object-oriented design.

Role

Solo Engineer

Organisation

Self-directed

Industry

Software Architecture · Education

Focus

Java · Architecture · OOP

/ Problem

A deliberate craft project: build a realistic system with real business rules (borrowing limits, overdue fines, different rules for books, CDs, and DVDs) without any framework to hide the design decisions. The point was to get the structure right by hand.

/ Solution

The code is organised into clear layers, each with one job: entities hold the rules, repositories store data, services coordinate, controllers handle the menus. Rules likely to change, like loan periods and fines, are isolated behind the Strategy pattern so they can be swapped without touching the rest. Data seeds from CSV into in-memory stores on startup.

With no external libraries, I wrote my own zero-dependency test framework for both unit and end-to-end tests. Building the tests myself forced me to design the code to be testable, which pushed me toward cleaner boundaries. Good architecture is not decoration: it is what lets you change one rule, or test one piece, without the rest of the system fighting back.

/ Skills demonstrated

Clean ArchitectureObject-Oriented DesignDesign PatternsTest Tooling

/ Built with

Java 17Clean / Layered ArchitectureStrategy PatternRepository PatternIn-memory storageCSV seeding
Source on GitHub