This document describes the software architecture of the application. The application is split into 'backend' and 'frontend' because it is built with Tauri.
The source code for the backend lives in src-tauri and is written in Rust.
Recipes need to be stored locally. The solution chosen for this project is an embedded relational database. This is supported by simple file storage for binary files like images.
The database needs to implement the data schema outlined in the PlantUML file schema.puml.
Database connection logic is implemented in the database module.
SQLite is used for storing recipe data.
The connection to the database is handled via the object-relational manager SeaORM.
SeaORM provides database migration functionality. This is implemented in the migrator module.
Binary files are not stored in the database but separately. Recipe step file storage is implemented in the recipe_step_file_storage module.
Optical character recognition is integrated with Tesseract via the tesseract-rs crate.
The source code for the frontend lives in src and is transpiled into web languages.
This application uses Svelte as its frontend framework. There is no SSR.