GitHunt

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

Languages

TypeScript43.0%Go40.5%Rust14.4%Makefile1.1%Dockerfile0.5%JavaScript0.3%CSS0.1%Shell0.1%HTML0.1%

Contributors

MIT License
Created April 12, 2017
Updated October 14, 2025
nickysemenza/gourd | GitHunt