The goal of this project was to create a simple recipe management system. It was made in Java using a Maven Project, and I learnt many new things while doing it, such as file handling (both reading and writing), using buffers more extensively, using the Collection interface and all its subinterfaces and subclasses, and by extension, using more generics than I had ever used in my life. This program, written over serveral class files, has the following highlights:
Highlights
Export to PDF
The user can instruct the program to export any recipe to PDF. Internally, the recipe file is first converted from an unformatted .txt file to a formatted .md file, and then it is converted to .pdf which is ready for printing.
Search Engine
The user can search by recipe name, section name, ingredient name, time limitation, and keywords. Search Engine Commands:
search ingredient {ingredientName}
recipe {recipeName}
search section {sectionName}
search for {keywordName}
Other inputs
Adding a recipe
add recipe {recipeName}
After that, the user is prompted to mention the section where they want to store the recipe. A future version will allow unsectioned recipes.
After which the user enters the edit wizard as described below.
Editing a recipe
After the user opens a recipe, they can enter edit to enter the Edit Wizard (if the recipe was just created as described above, writing edit is not required), in which they can type the following commands:
delete recipe to delete the recipe. They have to answer a confirmation prompt before the recipe is actually deleted.
add ingredient {ingredientName} which adds the ingredient if it exists elsewhere in the repertoire, or creates one if it is new. The user then enters the Quantity Edit Wizard, where they can add the quantity of the ingredient for that recipe and the corresponding unit.
edit ingredient {ingredientName} to change the quantitiy/unit of the ingredient for that recipe. Currently, the system does not support editing the name of the ingredient after it has been added.
delete ingredient {ingredientName} to delete the ingredient from the recipe, but not from the system. If no other recipes reference the ingredient, then it is garbage collected by the JVM at some point (the program does not deal with garbage collection).
add step {stepString} to add one step at a time.
A future version will allow the addition of multiple ingredients and steps at once.
Export
After the user opens a recipe, they can type export to convert the recipe into a nicely formatted PDF with MarkDown style formatting for printing or other such uses.
External Maven Libraries Used
Google Guava
Markdown2PDF
Other info
I used a free vector from FreePik to create the logo for this project. Please note that since I edited this resource and added on it to create the logo, it is copyrighted intellectual property which I withold anyone from using without prior authorization/communication. This will be reflected in an update to the MIT License of this project. I will upload additional resources/graphics in the future which all people who fork this repository or build on it can use to signify that their work was built upon this original repository. My intention for barring open-source use of the original logo is that I would not want people to use the same logo on a derived project which might mislead people into believing that the derived project was an original work.
More detailed documentation coming as the project develops and comes closer to completion of v0.0.1!