{"id":18114994,"url":"https://github.com/jhermann/ice-creamery","last_synced_at":"2025-04-14T10:34:15.062Z","repository":{"id":260056275,"uuid":"878551092","full_name":"jhermann/ice-creamery","owner":"jhermann","description":"A collection of my tested / approved Ninja Creami recipes.","archived":false,"fork":false,"pushed_at":"2024-12-05T12:46:51.000Z","size":2096,"stargazers_count":10,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-12-05T13:35:56.960Z","etag":null,"topics":["ice-cream","libreoffice","markdown","publishing","recipe-calculator","recipe-collection","recipes","reddit"],"latest_commit_sha":null,"homepage":"https://www.reddit.com/r/ninjacreami/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jhermann.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-25T15:45:07.000Z","updated_at":"2024-12-05T12:46:55.000Z","dependencies_parsed_at":null,"dependency_job_id":"4d7d5e52-5f23-41ce-8e35-03840f368802","html_url":"https://github.com/jhermann/ice-creamery","commit_stats":null,"previous_names":["jhermann/ice-creamery"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jhermann%2Fice-creamery","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jhermann%2Fice-creamery/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jhermann%2Fice-creamery/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jhermann%2Fice-creamery/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jhermann","download_url":"https://codeload.github.com/jhermann/ice-creamery/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":229097389,"owners_count":18019735,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ice-cream","libreoffice","markdown","publishing","recipe-calculator","recipe-collection","recipes","reddit"],"created_at":"2024-11-01T03:07:37.034Z","updated_at":"2025-04-14T10:34:15.056Z","avatar_url":"https://github.com/jhermann.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003e **ice-creamery** • A collection of my tested / approved Ninja Creami recipes.\n\n**Contents**\n- [What's this?](#whats-this)\n- [Structure of the recipe spreadsheet](#structure-of-the-recipe-spreadsheet)\n  - [The rows in the sheet](#the-rows-in-the-sheet)\n  - [Freezing Point Depression Factor explained](#freezing-point-depression-factor-explained)\n- [How to convert a recipe to Markdown?](#how-to-convert-a-recipe-to-markdown)\n- [How to get a live version of a recipe?](#how-to-get-a-live-version-of-a-recipe)\n- [Tips \\\u0026 Tricks](#tips--tricks)\n- [Resources](#resources)\n\n\n## What's this?\n\nThe [recipes](https://github.com/jhermann/ice-creamery/tree/main/recipes)\nfolder contains a\n[template spreadsheet](https://github.com/jhermann/ice-creamery/blob/main/recipes/Ice-Cream-Recipes.fods)\nfor LibreOffice, with a full ingredients list of brands\nas available to me in Germany. You can re-use generic rows like\n\"Strawberries\", and also add your own brands.\n\nThe [Open Food Facts](https://world.openfoodfacts.org/)\nwebsite and app makes this more efficient than dragging\nhalf of your fridge's and cupboards' contents to your computer. 😉\n\nThe [scripts](https://github.com/jhermann/ice-creamery/tree/main/scripts)\nfolder has some utilities, right now a script to convert a recipe sheet\nto its [Markdown rendering](https://github.com/jhermann/ice-creamery/blob/main/recipes/Cherry%20Ice%20Cream%20(Deluxe)/README.md).\n\n## Structure of the recipe spreadsheet\n\nEach sheet in a *Calc* document based on the\n[Ice-Cream-Recipes.fods](https://github.com/jhermann/ice-creamery/blob/main/recipes/Ice-Cream-Recipes.fods)\ndocument is a duplicate of the template sheet. The script that converts a recipe to Markdown\nrelies on the structure described here, so you cannot easily change that without\nalso adapting the script.\n\n\u003e \u003cimg width=320 alt=\"spreadsheet-template\" src=\"https://github.com/jhermann/ice-creamery/blob/main/assets/spreadsheet-template.png?raw=true\" /\u003e\n\n### The rows in the sheet\n\nThe first row contains the name of the recipe,\ntaken from the sheet name by default.\n\nWhat follows is nutritional information for 100g, half a Deluxe tub,\nand the total weight of a specific recipe. Note that only ingredients\nmeasured in grams or milli-liters contribute to the total, drops, pinches\nand so on are ignored. Anything measured in milli-liters is assumed\nto have about the same density as water (i.e. 1g/cm³).\n\nWhere that is not really the case like with alcohol, you better\nmeasure ingredients in grams on a scale, instead of volumetric measuring\nthat is so prevalent in the US. Some margin of error is acceptable here,\ne.g. with alcohol-based vanilla extract that isn't used in large amounts anyway.\n\n\u003e ⚠️\n\u003e To adapt the template to a regular Creami,\n\u003e change `Deluxe` to `Regular` in row 1 of the sheet,\n\u003e and the 2nd row in the nutrients summary table.\n\u003e Also change the amount of 360g to 240g in that row,\n\u003e or another preferred serving size.\n\nBelow the macros, there is a formula for the total\n*freezing point depression factor* (FPDF).\nSee the next section for details.\n\nThen there are a few empty rows that can either contain text\n(in the first column), that in Markdown is added below the\nrecipe title contributing to a recipe description or summary.\n\nIf the second column is also filled, the A and B columns are\ninterpreted as a key / value pair added to the final\n*NUTRITIONAL \u0026 OTHER INFO* section of a recipe rendering.\n\nFinally, you have the ingredients list with the name, amount \u0026 unit,\nand further nutritional facts per 100g, one ingredient in each row.\nThe `#` column is a recipe step / ingredient type number:\n0=prep, 1=wet, 2=dry, 3=top off, 4=mix-in.\nThe last column is a free-form comment field, added after the name\nin the text version of the recipe.\n\n### Freezing Point Depression Factor explained\n\nThe FPDF is a key indicator towards\nthe softness of the frozen base at serving temperature (typically -12°C).\nIt is given relative to the effect table sugar (sucrose) has on the freezing point,\nand ranges from inulin with 0.1 to pure ethanol at 7.4.\n\nTo evaluate the expected softness of a base, the *total* FPDF is calculated\nfrom the weight of ingredients, as the sum of `weight[g] * specific FPDF`\nover all sugars / sweeteners (in 100g of ice cream mix), with lactose typically\nincluded in the EU (PAC value). Apart from the lactose inclusion,\n*Potere Anti Congelante* is just another name for FPDF.\n\nIce cream stored at -18°C with a total FPDF of 20..25 will be easily scoopable,\nwhile bases with TFPDF\u003c15 will be quite hard. Ice cream is considered soft enough\nwhen about 65% of the contained water molecules are frozen at serving temperature.\n\n\n## How to convert a recipe to Markdown?\n\nTo save a single recipe sheet as a CSV file and convert it to Markdown:\n\n 1. Select *File \u003e Save a Copy...* from the menu.\n 1. Enter `Ice-Cream-Recipes.csv` as the file name, and choose `Text CSV` as the type, then press *Save*.\n 1. Change export settings to match the ones shown below, then press *OK*.\n 1. Call the [ice-cream-recipe.py](https://github.com/jhermann/ice-creamery/blob/main/scripts/ice-cream-recipe.py) script.\n    It renders the Markdown file, and then opens your editor with it (`code` by default, unless the `GUI_EDITOR` envvar is set).\n\n\u003e ![save-as-csv settings](https://github.com/jhermann/ice-creamery/blob/main/assets/save-as-csv.png?raw=true)\n\n\n## How to get a live version of a recipe?\n\nNote that to get a version of\n[recipes](https://github.com/jhermann/ice-creamery/tree/main/recipes)\nthat you can change and experiment with,\nyou can plug the ingredients list of a CSV file like\n[Ice-Cream-Recipes.csv](https://github.com/jhermann/ice-creamery/blob/main/recipes/Cherry%20Ice%20Cream%20(Deluxe)/Ice-Cream-Recipes.csv)\ninto the template spreadsheet\n[Ice-Cream-Recipes.fods](https://github.com/jhermann/ice-creamery/blob/main/recipes/Ice-Cream-Recipes.fods),\ncontaining live formulas. Just load both files into *Calc*\nand copy the ingredient rows in the CSV document to the FODS one.\n\nThis allows you to replace the nutritional information\nwith the values of the brands you can buy locally,\nor experiment with alternatives and a different composition.\n\nI did not test if Excel can read the FODS format properly,\nbut then the LibreOffice Suite is a free install that works\nin parallel to a Microsoft Office installation.\n\n\n## Tips \u0026 Tricks\n\n * It's recommended that, once a recipe is tested and approved,\n to sort the ingredients by the `#` column and then the `Amount`\n one (descending). This makes the recipe simple to use directly,\n without first converting it to Markdown.\n * Keep all your own recipes in a single ODS file,\n starting from the FODS template. Then duplicate\n the `Template` sheet, rename it to the recipe name, and fill in\n your amounts. After sorting like described right above, remove\n any rows with zero amounts.\n * Add journal entries to your sheet like this:\n\n   \u003e ![journal-entries](https://github.com/jhermann/ice-creamery/blob/main/assets/journal.png?raw=true)\n\n   This is especially useful while experimenting and when\n   you don't want to use `git` yet, where commit messages\n   would take that place.\n\n\n## Resources\n\n * [Ice Cream Science • Dream Scoops](https://www.dreamscoops.com/ice-cream-science/)\n * [Ice Cream @ Underbelly](https://under-belly.org/category/ice-cream/)\n * [Ruben Porto's Blog \u0026 Ice Cream Spreadsheet](https://www.icecreamscience.com/)\n * [What PAC Is, and How to Calculate It (Medium)](https://medium.com/@gelatologist/what-pac-is-and-how-to-calculate-it-2f1ade1bd5df)\n * [E numbers @ Wikipedia](https://en.wikipedia.org/wiki/E_number#E400%E2%80%93E499)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjhermann%2Fice-creamery","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjhermann%2Fice-creamery","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjhermann%2Fice-creamery/lists"}