Create README.MD file from current code base.
@Codebase Generate a new README.MD file based on this codebase. Ensure that it uses markdown. Begin the file with a heder including a description of the application. Then provide a detailed explenation of all of the program components. Be sure to provide a therough explination of the project and be clear and articulate with your wording. Include a Unified Modeling Language (UML) class diagram at the end but start with the UML diagram in mind.