A software simulation of a file system, with some simple file types that may be stored in a file system, and a user interface similar to a command prompt or terminal that allows a user to interact with the file system and files it contains using OOP design principles and patterns.