/gourd

go universal recipe database 🌶

Primary LanguageTypeScriptMIT LicenseMIT

gourd

Go(lang) Universal Recipe Database

etymology: Before modern technology, people would use hollowed out gourds as food storage containers.


Gourd is a recipe database that can be used for meal planning and generating ingredient lists.

this project is a WIP

codecov Go Report Card GoDoc

features

This is comprised mulitple components:

  1. api OpenAPI 3.0 REST API, defined in internal/api/openapi.yaml
  2. ui in React + Typescript, using generated openapi clients
  3. scraper for saving recipes from websites (nytimes, seriouseats) for later analysis.
  4. parser for extracting structured information from freetext ingredient line items.
    • e.g. 1 1/2 cups flour (180g), sifted will be parsed into {ingredient: flour, amount: 1.5, unit: cup, modifier: sifted.
    • This leverages nickysemenza/ingredient-parser and is exposed to the UI via WebAssembly.
  5. usda is used for mapping ingredients to their USDA database equivalent, which has very detailed nutrition information
    • e.g. plain strawberries or C&H brown sugar
    • This dataset also contains the imperial to metric mappings (e.g. the data from the back of the flour bag that says 1/4 cup = 30 grams)
  6. cli for interacting with the api instead using the UI
    • this is used for importing/exporting recipes, as well as loading metadata