CookYourBooks is a full‑stack (app + data + UI) cooking book project that helps you collect recipes, browse your personal library, and interact with your cookbook through both a GUI and a CLI.
It’s built as a Gradle Java application with a layered architecture (model, repository, services, adapters) and a JavaFX-based interface (FXML + CSS).
- Recipe Library backed by JSON (
cyb-library.json) - Two ways to use it
- GUI: JavaFX views (FXML) styled with CSS
- CLI: command-driven interaction for quick workflows
- Clean structure with clear separation of concerns:
model/— domain objectsrepository/— persistence + storage logicservices/— business rules / orchestrationadapters/— integration boundariesconversion/— format conversion utilitiesexception/— error types for predictable failures
- Language: Java
- Build Tool: Gradle
- UI: JavaFX (FXML + CSS)
- Logging: Logback (
src/main/resources/logback.xml) - Data format: JSON (library stored in
cyb-library.json)
.
├── README.md
├── build.gradle
├── settings.gradle
├── gradlew / gradlew.bat
├── GradlewRun.exe
├── cyb-library.json
├── src/
│ ├── main/
│ │ ├── java/app/cookyourbooks/
│ │ │ ├── CookYourBooksApp.java
│ │ │ ├── CybLibrary.java
│ │ │ ├── adapters/
│ │ │ ├── cli/
│ │ │ ├── conversion/
│ │ │ ├── exception/
│ │ │ ├── gui/
│ │ │ ├── model/
│ │ │ ├── repository/
│ │ │ └── services/
│ │ └── resources/
│ │ ├── fxml/
│ │ ├── css/
│ │ └── logback.xml
│ └── test/
│ ├── java/
│ └── resources/
├── sample-recipes/
├── menu-features/
├── design/
└── config/
- A recent JDK installed (Java 17+ recommended)
- Gradle wrapper is included (
./gradlew), so you don’t need Gradle installed separately.
./gradlew buildDepending on how your CookYourBooksApp is configured, you can typically run via:
./gradlew runOr, on Windows, you can also use:
./GradlewRun.exeIf you run into JavaFX runtime issues, confirm your JDK/JavaFX setup matches the project’s Gradle configuration.
- The main library file is:
cyb-library.json - Additional recipe content and examples may live under:
sample-recipes/
If you want to reset your environment, start by backing up and/or replacing cyb-library.json.
./gradlew test