尚未检测到更新。GitHub 发布版本后会显示在这里。
正在加载完整 README。 以下为已保存的摘录。
Tell it what is in your kitchen. It tells you what you can cook tonight,
and works out the swaps for whatever you are missing.
How to use it ·
Make it your own ·
How it was vibe coded ·
How it decides
Cookable is vibe coded. The matching engine, the interface, the recipe database and this README were all built by describing what was wanted to Claude Code, one pull request at a time - from an empty repository to an installable app in six days. How that worked查看完整 README ↗[!NOTE] Cookable is vibe coded. The matching engine, the interface, the recipe database and this README were all built by describing what was wanted to Claude Code, one pull request at a time - from an empty repository to an installable app in six days. How that worked
Most recipe apps start from a recipe and send you to the shops. Cookable starts from what you already have. It reads your kitchen the way you would say it, checks every recipe line by line, and when something is missing it looks for what you could use instead - with the amount, and a warning when the stand-in cannot do the whole job.
Open cookable-ssd.vercel.app. There is nothing to sign up for.
Type into In my kitchen and press Enter, or paste a whole list at once - chicken, palak, dahi, air fryer, mixie. Would rather tap? Open Favourites, Equipment, Key ingredients, Spices & herbs or Sweeteners and tick things off.
Leave I have the basics switched on, and salt, pepper, water, cooking oil, a stove, a pan and a fridge are taken as read.
Every recipe lands on one of four shelves, and every card says what it is swapping and what you are missing.
| Shelf | What it means |
|---|---|
| Make it now | You have everything, or a swap you already own covers it |
| One or two things short | One or two ingredients with nothing to stand in - none the dish depends on |
| A few things short | Three or more of those |
| Not without a shop | Something it cannot work without is missing, with no stand-in. Hidden until you tick Show what I cannot make |
Sort any of them by Best match, Most protein or Quickest.
The ingredient list is rewritten for your kitchen. What you do not have is struck out with the stand-in and its amount underneath, a missing device comes with the adjustment for the one you do have, and anything still missing becomes a shopping list. Garnishes and optional extras, like a chocolate or berry version of a plain dessert, are listed apart under their own heading at the foot of the list.
Suggest a recipe works even with an empty kitchen. It leans towards recipes that use what you have picked, never offers one that needs something on your avoid list, and draws from a shuffle bag - so it does not hand back the recipe you just turned down.
The recipe counter at the top opens the whole collection, A to Z.
Cookable is a personal app. The recipes, the favourites, the list of things to swap out and the recipes marked as rarely cooked all belong to one kitchen. You can have a copy that fits yours without writing code or touching the JSON by hand - Claude Code does the editing.
That copies the repository into your GitHub account and puts it online. Every push after that redeploys it.
Or run it on your own machine (Node 22 or newer):
git clone https://github.com/<your-username>/cookable.git
cd cookable
npm install
npm run dev
It opens at http://localhost:5180.
Start Claude Code in the cookable folder. CLAUDE.md is the project's memory: it tells Claude Code how a recipe file is shaped, what the matching flags mean and how the house style reads, so you only have to say what you want.
/add-recipe https://youtube.com/shorts/...
/add-recipe <paste a transcript, or a recipe from anywhere>
/add-recipe pulls out the ingredients and method, keeps vague quantities vague rather than inventing numbers, makes the recipe healthier and writes down every change, maps each ingredient to the registry (adding new ones under the names people actually type, Hindi included), sets the matching flags, estimates nutrition, validates the result - and then tells you which numbers it had to guess.
[!TIP] Paste the transcript when you can. A bare YouTube link usually brings back the title and description but not what was said, and
/add-recipewill ask for more rather than make up a recipe from a title.
There is no settings screen. Preferences live in files, and you change them by saying so:
| Say to Claude Code | What changes |
|---|---|
| "I'm vegetarian" | A diet flag in data/preferences.json. Meat gets swapped where it can be before a recipe is ruled out |
| "I'm allergic to peanuts" | avoid - a hard no. Never suggested, never used |
| "I'd rather not have sugar" | prefer_not - swapped out whenever there is a way, but it never blocks a recipe |
| "When there's a choice, use monk fruit first" | prefer - the order stand-ins are offered in |
| "Put eggs and paneer at the top of the list" | data/favourites.json |
| "I'll rarely make rajma" | rare in data/standing.json - sorted last, and left out of Suggest |
| "Allulose works in place of sugar" | A new swap, via /add-swap |
npm run validate
git push
validate catches the mistake that matters most: a recipe naming an ingredient id that does not exist looks perfectly fine in the app and can never be matched. On a Vercel copy, the push is the deploy.
以上为 README 的开头部分。其余内容请阅读原文。 查看完整 README ↗