{"id":17932556,"url":"https://github.com/nickysemenza/gourd","last_synced_at":"2025-03-24T05:32:29.852Z","repository":{"id":37446151,"uuid":"88020809","full_name":"nickysemenza/gourd","owner":"nickysemenza","description":"go universal recipe database 🌶","archived":false,"fork":false,"pushed_at":"2024-10-29T22:30:38.000Z","size":13475,"stargazers_count":22,"open_issues_count":8,"forks_count":1,"subscribers_count":5,"default_branch":"main","last_synced_at":"2024-10-29T22:45:34.443Z","etag":null,"topics":["cooking","food","golang","ingredients","react","recipe","recipe-stash","recipes","typescript","usda"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/nickysemenza.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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":"2017-04-12T07:06:14.000Z","updated_at":"2024-10-20T22:33:18.000Z","dependencies_parsed_at":"2023-12-18T22:08:01.821Z","dependency_job_id":"d01257c3-d712-4db4-8d25-1a258177ef5c","html_url":"https://github.com/nickysemenza/gourd","commit_stats":{"total_commits":2084,"total_committers":6,"mean_commits":347.3333333333333,"dds":0.6266794625719769,"last_synced_commit":"a602de94c85c638b8281ed642623c67510023584"},"previous_names":["nickysemenza/food"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nickysemenza%2Fgourd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nickysemenza%2Fgourd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nickysemenza%2Fgourd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nickysemenza%2Fgourd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nickysemenza","download_url":"https://codeload.github.com/nickysemenza/gourd/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245217144,"owners_count":20579288,"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":["cooking","food","golang","ingredients","react","recipe","recipe-stash","recipes","typescript","usda"],"created_at":"2024-10-28T21:27:59.717Z","updated_at":"2025-03-24T05:32:29.450Z","avatar_url":"https://github.com/nickysemenza.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gourd\n\n**Go**(lang) **U**niversal **R**ecipe **D**atabase\n\n\u003e etymology: Before modern technology, people would use hollowed out gourds as food storage containers.\n\n---\n\nGourd is a recipe database that can be used for meal planning and generating ingredient lists.\n\n## this project is a WIP\n\n[![codecov](https://codecov.io/gh/nickysemenza/gourd/branch/master/graph/badge.svg)](https://codecov.io/gh/nickysemenza/gourd)\n[![Go Report Card](https://goreportcard.com/badge/github.com/nickysemenza/gourd)](https://goreportcard.com/report/github.com/nickysemenza/gourd)\n[![GoDoc](https://godoc.org/github.com/nickysemenza/gourd?status.svg)](https://pkg.go.dev/github.com/nickysemenza/gourd)\n\n## features\n\nThis is comprised mulitple components:\n\n1. **api** OpenAPI 3.0 REST API, defined in `internal/api/openapi.yaml`\n1. **ui** in React + Typescript, using generated openapi clients\n1. **scraper** for saving recipes from websites (nytimes, seriouseats) for later analysis.\n   - This currently works on websites using `json+ld` with [the appropriate schema](https://schema.org/Recipe)\n1. **parser** for extracting structured information from freetext ingredient line items.\n   - e.g. `1 1/2 cups flour (180g), sifted` will be parsed into `{ingredient: flour, amount: 1.5, unit: cup, modifier: sifted`.\n   - This leverages [nickysemenza/ingredient-parser](https://github.com/nickysemenza/ingredient-parser) and is exposed to the UI via WebAssembly.\n1. **usda** is used for mapping ingredients to their USDA database equivalent, which has very detailed nutrition information\n   - e.g. [plain strawberries](https://fdc.nal.usda.gov/fdc-app.html#/food-details/747448/nutrients) or [C\u0026H brown sugar](https://fdc.nal.usda.gov/fdc-app.html#/food-details/392083/nutrients)\n   - 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`)\n1. **cli** for interacting with the api instead using the UI\n   - this is used for importing/exporting recipes, as well as loading metadata\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnickysemenza%2Fgourd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnickysemenza%2Fgourd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnickysemenza%2Fgourd/lists"}